diff --git a/.codecov.yml b/.codecov.yml index 77328cf79..e6b4d0347 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,6 +1,7 @@ +# https://docs.codecov.com/docs/codecovyml-reference#codecov codecov: require_ci_to_pass: true - # https://docs.codecov.com/docs/components +# https://docs.codecov.com/docs/components component_management: individual_components: - component_id: backend @@ -9,26 +10,70 @@ component_management: - component_id: frontend paths: - src-ui/** -# https://docs.codecov.com/docs/pull-request-comments +# https://docs.codecov.com/docs/flags#step-2-flag-management-in-yaml +# https://docs.codecov.com/docs/carryforward-flags +flags: + # Backend Python versions + backend-python-3.10: + paths: + - src/** + carryforward: true + backend-python-3.11: + paths: + - src/** + carryforward: true + backend-python-3.12: + paths: + - src/** + carryforward: true + # Frontend (shards merge into single flag) + frontend-node-24.x: + paths: + - src-ui/** + carryforward: true comment: layout: "header, diff, components, flags, files" - # https://docs.codecov.com/docs/javascript-bundle-analysis require_bundle_changes: true bundle_change_threshold: "50Kb" coverage: + # https://docs.codecov.com/docs/commit-status status: project: - default: + backend: + flags: + - backend-python-3.10 + - backend-python-3.11 + - backend-python-3.12 + paths: + - src/** # https://docs.codecov.com/docs/commit-status#threshold threshold: 1% + removed_code_behavior: adjust_base + frontend: + flags: + - frontend-node-24.x + paths: + - src-ui/** + threshold: 1% + removed_code_behavior: adjust_base patch: - default: - # For the changed lines only, target 100% covered, but - # allow as low as 75% + backend: + flags: + - backend-python-3.10 + - backend-python-3.11 + - backend-python-3.12 + paths: + - src/** + target: 100% + threshold: 25% + frontend: + flags: + - frontend-node-24.x + paths: + - src-ui/** target: 100% threshold: 25% # https://docs.codecov.com/docs/javascript-bundle-analysis bundle_analysis: - # Fail if the bundle size increases by more than 1MB warning_threshold: "1MB" status: true diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index fd6448e9b..4aa9d56e7 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM --platform=$BUILDPLATFORM docker.io/node:20-bookworm-slim as main-app +FROM --platform=$BUILDPLATFORM docker.io/node:24-trixie-slim as main-app ARG DEBIAN_FRONTEND=noninteractive @@ -8,16 +8,17 @@ ARG DEBIAN_FRONTEND=noninteractive ARG TARGETARCH # Can be workflow provided, defaults set for manual building -ARG JBIG2ENC_VERSION=0.29 -ARG QPDF_VERSION=11.9.0 -ARG GS_VERSION=10.03.1 +ARG JBIG2ENC_VERSION=0.30 # Set Python environment variables ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ # Ignore warning from Whitenoise PYTHONWARNINGS="ignore:::django.http.response:517" \ - PNGX_CONTAINERIZED=1 + PNGX_CONTAINERIZED=1 \ + # https://docs.astral.sh/uv/reference/settings/#link-mode + UV_LINK_MODE=copy \ + UV_CACHE_DIR=/cache/uv/ # # Begin installation and configuration @@ -83,37 +84,15 @@ RUN set -eux \ && apt-get update \ && apt-get install --yes --quiet ${PYTHON_PACKAGES} -COPY --from=ghcr.io/astral-sh/uv:0.7.8 /uv /bin/uv +COPY --from=ghcr.io/astral-sh/uv:0.9.10 /uv /bin/uv RUN set -eux \ && echo "Installing pre-built updates" \ - && echo "Installing qpdf ${QPDF_VERSION}" \ - && curl --fail --silent --show-error --location \ - --output libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - && curl --fail --silent --show-error --location \ - --output qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - && dpkg --install ./libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - && dpkg --install ./qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - && echo "Installing Ghostscript ${GS_VERSION}" \ - && curl --fail --silent --show-error --location \ - --output libgs10_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ - https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ - && curl --fail --silent --show-error --location \ - --output ghostscript_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ - https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/ghostscript_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ - && curl --fail --silent --show-error --location \ - --output libgs10-common_${GS_VERSION}.dfsg-1_all.deb \ - https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10-common_${GS_VERSION}.dfsg-1_all.deb \ - && dpkg --install ./libgs10-common_${GS_VERSION}.dfsg-1_all.deb \ - && dpkg --install ./libgs10_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ - && dpkg --install ./ghostscript_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ && echo "Installing jbig2enc" \ && curl --fail --silent --show-error --location \ --output jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ - https://github.com/paperless-ngx/builder/releases/download/jbig2enc-${JBIG2ENC_VERSION}/jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ + https://github.com/paperless-ngx/builder/releases/download/jbig2enc-trixie-v${JBIG2ENC_VERSION}/jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ && dpkg --install ./jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb # setup docker-specific things @@ -127,6 +106,7 @@ COPY [ \ RUN set -eux \ && echo "Configuring ImageMagick" \ + && mkdir -p /etc/ImageMagick-6 \ && mv paperless-policy.xml /etc/ImageMagick-6/policy.xml @@ -142,7 +122,7 @@ ARG BUILD_PACKAGES="\ pkg-config" # hadolint ignore=DL3042 -RUN --mount=type=cache,target=/root/.cache/uv,id=pip-cache \ +RUN --mount=type=cache,target=/cache/uv/,id=uv-cache \ set -eux \ && echo "Installing build system packages" \ && apt-get update \ diff --git a/.devcontainer/README.md b/.devcontainer/README.md index cec62c802..0ce35e183 100644 --- a/.devcontainer/README.md +++ b/.devcontainer/README.md @@ -89,6 +89,18 @@ Additional tasks are available for common maintenance operations: - **Migrate Database**: To apply database migrations. - **Create Superuser**: To create an admin user for the application. +## Committing from the Host Machine + +The DevContainer automatically installs Git pre-commit hooks during setup. However, these hooks are configured for use inside the container. + +If you want to commit changes from your host machine (outside the DevContainer), you need to set up prek on your host. This installs it as a standalone tool. + +```bash +uv tool install prek && prek install +``` + +After this, you can commit either from inside the DevContainer or from your host machine. + ## Let's Get Started! Follow the steps above to get your development environment up and running. Happy coding! diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index cec8e2177..4e9989474 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,26 +3,31 @@ "dockerComposeFile": "docker-compose.devcontainer.sqlite-tika.yml", "service": "paperless-development", "workspaceFolder": "/usr/src/paperless/paperless-ngx", - "postCreateCommand": "/bin/bash -c 'rm -rf .venv/.* && uv sync --group dev && uv run pre-commit install'", + "forwardPorts": [4200, 8000], + "containerEnv": { + "UV_CACHE_DIR": "/usr/src/paperless/paperless-ngx/.uv-cache" + }, + "postCreateCommand": "/bin/bash -c 'rm -rf .venv/.* && uv sync --group dev && uv run prek install'", "customizations": { "vscode": { - "extensions": [ - "mhutchie.git-graph", - "ms-python.python", - "ms-vscode.js-debug-nightly", - "eamodio.gitlens", - "yzhang.markdown-all-in-one" - ], - "settings": { - "python.defaultInterpreterPath": "/usr/src/paperless/paperless-ngx/.venv/bin/python", - "python.pythonPath": "/usr/src/paperless/paperless-ngx/.venv/bin/python", - "python.terminal.activateEnvInCurrentTerminal": true, - "editor.formatOnPaste": false, - "editor.formatOnSave": true, - "editor.formatOnType": true, - "files.trimTrailingWhitespace": true - } + "extensions": [ + "mhutchie.git-graph", + "ms-python.python", + "ms-vscode.js-debug-nightly", + "eamodio.gitlens", + "yzhang.markdown-all-in-one", + "pnpm.pnpm" + ], + "settings": { + "python.defaultInterpreterPath": "/usr/src/paperless/paperless-ngx/.venv/bin/python", + "python.pythonPath": "/usr/src/paperless/paperless-ngx/.venv/bin/python", + "python.terminal.activateEnvInCurrentTerminal": true, + "editor.formatOnPaste": false, + "editor.formatOnSave": true, + "editor.formatOnType": true, + "files.trimTrailingWhitespace": true + } } - }, - "remoteUser": "paperless" - } + }, + "remoteUser": "paperless" +} diff --git a/.devcontainer/vscode/tasks.json b/.devcontainer/vscode/tasks.json index 6475e14d1..bbc1684ce 100644 --- a/.devcontainer/vscode/tasks.json +++ b/.devcontainer/vscode/tasks.json @@ -33,7 +33,7 @@ "label": "Start: Frontend Angular", "description": "Start the Frontend Angular Dev Server", "type": "shell", - "command": "pnpm start", + "command": "pnpm exec ng serve --host 0.0.0.0", "isBackground": true, "options": { "cwd": "${workspaceFolder}/src-ui" @@ -116,9 +116,9 @@ }, { "label": "Maintenance: Build Documentation", - "description": "Build the documentation with MkDocs", + "description": "Build the documentation with Zensical", "type": "shell", - "command": "uv run mkdocs build --config-file mkdocs.yml && uv run mkdocs serve", + "command": "uv run zensical build && uv run zensical serve", "group": "none", "presentation": { "echo": true, @@ -174,12 +174,22 @@ { "label": "Maintenance: Install Frontend Dependencies", "description": "Install frontend (pnpm) dependencies", - "type": "pnpm", - "script": "install", - "path": "src-ui", + "type": "shell", + "command": "pnpm install", "group": "clean", "problemMatcher": [], - "detail": "install dependencies from package" + "options": { + "cwd": "${workspaceFolder}/src-ui" + }, + "presentation": { + "echo": true, + "reveal": "always", + "focus": true, + "panel": "shared", + "showReuseMessage": false, + "clear": true, + "revealProblems": "onProblem" + } }, { "description": "Clean install frontend dependencies and build the frontend for production", diff --git a/.dockerignore b/.dockerignore index 8c39dd615..b9c7d2f84 100644 --- a/.dockerignore +++ b/.dockerignore @@ -28,3 +28,4 @@ ./resources # Other stuff **/*.drawio.png +.mypy_baseline diff --git a/.editorconfig b/.editorconfig index 8111f01d8..a8b21f510 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,6 +11,10 @@ end_of_line = lf charset = utf-8 max_line_length = 79 +[*.sh] +indent_style = tab +indent_size = 1 + [{*.html,*.css,*.js}] max_line_length = off diff --git a/.github/DISCUSSION_TEMPLATE/support.yml b/.github/DISCUSSION_TEMPLATE/support.yml index 18c0812f2..311aaf7f3 100644 --- a/.github/DISCUSSION_TEMPLATE/support.yml +++ b/.github/DISCUSSION_TEMPLATE/support.yml @@ -51,5 +51,5 @@ body: id: logs attributes: label: Relevant logs or output - description: If you have logs, errors that might help, paste it here. + description: If you have logs, errors that might help, paste it here. For example other containers or services (database, redis, etc). render: bash diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 07e9e4690..b6baf49bf 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -6,8 +6,8 @@ body: - type: markdown attributes: value: | - ### ⚠️ Please remember: issues are for *bugs* - That is, something you believe affects every single user of Paperless-ngx, not just you. If you're not sure, start with one of the other options below. + ### ⚠️ Please remember: issues are for *bugs* only! ⚠️ + That is, something you believe affects every single user of Paperless-ngx (and the demo, for example), not just you. If you are not sure, start with one of the other options below. Also, note that **Paperless-ngx does not perform OCR or archive file creation itself**, those are handled by other tools. Problems with OCR or archive versions of specific files should likely be raised 'upstream', see https://github.com/ocrmypdf/OCRmyPDF/issues or https://github.com/tesseract-ocr/tesseract/issues - type: markdown @@ -59,6 +59,12 @@ body: label: Browser logs description: Logs from the web browser related to your issue, if needed render: bash + - type: textarea + id: logs_services + attributes: + label: Services logs + description: Logs from other services (or containers) related to your issue, if needed. For example, the database or redis logs. + render: bash - type: input id: version attributes: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 91996b4d0..77bea4917 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -35,8 +35,8 @@ NOTE: PRs that do not address the following will not be merged, please do not sk - [ ] I have read & agree with the [contributing guidelines](https://github.com/paperless-ngx/paperless-ngx/blob/main/CONTRIBUTING.md). - [ ] If applicable, I have included testing coverage for new code in this PR, for [backend](https://docs.paperless-ngx.com/development/#testing) and / or [front-end](https://docs.paperless-ngx.com/development/#testing-and-code-style) changes. -- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers. +- [ ] If applicable, I have tested my code for breaking changes & regressions on both mobile & desktop devices, using the latest version of major browsers. - [ ] If applicable, I have checked that all tests pass, see [documentation](https://docs.paperless-ngx.com/development/#back-end-development). -- [ ] I have run all `pre-commit` hooks, see [documentation](https://docs.paperless-ngx.com/development/#code-formatting-with-pre-commit-hooks). +- [ ] I have run all Git `pre-commit` hooks, see [documentation](https://docs.paperless-ngx.com/development/#code-formatting-with-pre-commit-hooks). - [ ] I have made corresponding changes to the documentation as needed. -- [ ] I have checked my modifications for any breaking changes. +- [ ] In the description of the PR above I have disclosed the use of AI tools in the coding of this PR. diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 09721afb8..0cd9a445e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -41,30 +41,56 @@ updates: - "backend" - "dependencies" groups: + # Development & CI/CD Tooling development: patterns: - "*pytest*" - "ruff" - - "mkdocs-material" - - "pre-commit*" - django: + - "zensical" + - "prek*" + # Django & DRF Ecosystem + django-ecosystem: patterns: - "*django*" - "drf-*" - major-versions: + - "djangorestframework" + - "whitenoise" + - "bleach" + - "jinja2" + # Async, Task Queuing & Caching + async-tasks: + patterns: + - "celery*" + - "channels*" + - "flower" + - "redis" + # Document, PDF, and OCR Processing + document-processing: + patterns: + - "ocrmypdf" + - "pdf2image" + - "pyzbar" + - "zxing-cpp" + - "tika-client" + - "gotenberg-client" + - "python-magic" + - "python-gnupg" + # Data, NLP, and Search + data-nlp-search: + patterns: + - "nltk" + - "scikit-learn" + - "langdetect" + - "rapidfuzz" + - "whoosh-reloaded" + # Utilities (Patch Updates) + utilities-patch: update-types: - - "major" - small-changes: + - "patch" + # Utilities (Minor Updates) + utilities-minor: update-types: - "minor" - - "patch" - exclude-patterns: - - "*django*" - - "drf-*" - pre-built: - patterns: - - psycopg* - - zxing-cpp # Enable updates for GitHub Actions - package-ecosystem: "github-actions" target-branch: "dev" diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 89c8a96ea..2b8169f24 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -44,6 +44,7 @@ include-labels: - 'notable' exclude-labels: - 'skip-changelog' +filter-by-commitish: true category-template: '### $TITLE' change-template: '- $TITLE @$AUTHOR ([#$NUMBER]($URL))' change-title-escapes: '\<*_&#@' diff --git a/.github/workflows/ci-backend.yml b/.github/workflows/ci-backend.yml new file mode 100644 index 000000000..a4ffa06dc --- /dev/null +++ b/.github/workflows/ci-backend.yml @@ -0,0 +1,150 @@ +name: Backend Tests +on: + push: + branches-ignore: + - 'translations**' + paths: + - 'src/**' + - 'pyproject.toml' + - 'uv.lock' + - 'docker/compose/docker-compose.ci-test.yml' + - '.github/workflows/ci-backend.yml' + pull_request: + branches-ignore: + - 'translations**' + paths: + - 'src/**' + - 'pyproject.toml' + - 'uv.lock' + - 'docker/compose/docker-compose.ci-test.yml' + - '.github/workflows/ci-backend.yml' + workflow_dispatch: +concurrency: + group: backend-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true +env: + DEFAULT_UV_VERSION: "0.10.x" + NLTK_DATA: "/usr/share/nltk_data" +jobs: + test: + name: "Python ${{ matrix.python-version }}" + runs-on: ubuntu-24.04 + strategy: + matrix: + python-version: ['3.10', '3.11', '3.12'] + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Start containers + run: | + docker compose --file docker/compose/docker-compose.ci-test.yml pull --quiet + docker compose --file docker/compose/docker-compose.ci-test.yml up --detach + - name: Set up Python + id: setup-python + uses: actions/setup-python@v6 + with: + python-version: "${{ matrix.python-version }}" + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: ${{ env.DEFAULT_UV_VERSION }} + enable-cache: true + python-version: ${{ steps.setup-python.outputs.python-version }} + - name: Install system dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -qq --no-install-recommends \ + unpaper tesseract-ocr imagemagick ghostscript libzbar0 poppler-utils + - name: Configure ImageMagick + run: | + sudo cp docker/rootfs/etc/ImageMagick-6/paperless-policy.xml /etc/ImageMagick-6/policy.xml + - name: Install Python dependencies + run: | + uv sync \ + --python ${{ steps.setup-python.outputs.python-version }} \ + --group testing \ + --frozen + - name: List installed Python dependencies + run: | + uv pip list + - name: Install NLTK data + run: | + uv run python -m nltk.downloader punkt punkt_tab snowball_data stopwords -d ${{ env.NLTK_DATA }} + - name: Run tests + env: + NLTK_DATA: ${{ env.NLTK_DATA }} + PAPERLESS_CI_TEST: 1 + run: | + uv run \ + --python ${{ steps.setup-python.outputs.python-version }} \ + --dev \ + --frozen \ + pytest + - name: Upload test results to Codecov + if: always() + uses: codecov/codecov-action@v5 + with: + flags: backend-python-${{ matrix.python-version }} + files: junit.xml + report_type: test_results + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v5 + with: + flags: backend-python-${{ matrix.python-version }} + files: coverage.xml + report_type: coverage + - name: Stop containers + if: always() + run: | + docker compose --file docker/compose/docker-compose.ci-test.yml logs + docker compose --file docker/compose/docker-compose.ci-test.yml down + typing: + name: Check project typing + runs-on: ubuntu-24.04 + env: + DEFAULT_PYTHON: "3.12" + steps: + - name: Checkout + uses: actions/checkout@v6.0.1 + - name: Set up Python + id: setup-python + uses: actions/setup-python@v6.2.0 + with: + python-version: "${{ env.DEFAULT_PYTHON }}" + - name: Install uv + uses: astral-sh/setup-uv@v7.2.1 + with: + version: ${{ env.DEFAULT_UV_VERSION }} + enable-cache: true + python-version: ${{ steps.setup-python.outputs.python-version }} + - name: Install Python dependencies + run: | + uv sync \ + --python ${{ steps.setup-python.outputs.python-version }} \ + --group testing \ + --group typing \ + --frozen + - name: List installed Python dependencies + run: | + uv pip list + - name: Check typing (pyrefly) + run: | + uv run pyrefly \ + check \ + src/ + - name: Cache Mypy + uses: actions/cache@v5.0.3 + with: + path: .mypy_cache + # Keyed by OS, Python version, and dependency hashes + key: ${{ runner.os }}-mypy-py${{ env.DEFAULT_PYTHON }}-${{ hashFiles('pyproject.toml', 'uv.lock') }} + restore-keys: | + ${{ runner.os }}-mypy-py${{ env.DEFAULT_PYTHON }}- + ${{ runner.os }}-mypy- + - name: Check typing (mypy) + run: | + uv run mypy \ + --show-error-codes \ + --warn-unused-configs \ + src/ | uv run mypy-baseline filter diff --git a/.github/workflows/ci-docker.yml b/.github/workflows/ci-docker.yml new file mode 100644 index 000000000..3fa5a6870 --- /dev/null +++ b/.github/workflows/ci-docker.yml @@ -0,0 +1,252 @@ +name: Docker Build +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + - 'v[0-9]+.[0-9]+.[0-9]+-beta.rc[0-9]+' + branches: + - dev + - beta + pull_request: + branches: + - dev + - main + workflow_dispatch: +concurrency: + group: docker-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true +env: + REGISTRY: ghcr.io +jobs: + build-arch: + name: Build ${{ matrix.arch }} + strategy: + fail-fast: false + matrix: + include: + - runner: ubuntu-24.04 + arch: amd64 + platform: linux/amd64 + - runner: ubuntu-24.04-arm + arch: arm64 + platform: linux/arm64 + runs-on: ${{ matrix.runner }} + permissions: + contents: read + packages: write + outputs: + should-push: ${{ steps.check-push.outputs.should-push }} + push-external: ${{ steps.check-push.outputs.push-external }} + repository: ${{ steps.repo.outputs.name }} + ref-name: ${{ steps.ref.outputs.name }} + steps: + - name: Checkout + uses: actions/checkout@v6.0.1 + - name: Determine ref name + id: ref + run: | + ref_name="${GITHUB_HEAD_REF:-$GITHUB_REF_NAME}" + # Sanitize by replacing / with - for use in tags and cache keys + sanitized_ref="${ref_name//\//-}" + + echo "ref_name=${ref_name}" + echo "sanitized_ref=${sanitized_ref}" + + echo "name=${sanitized_ref}" >> $GITHUB_OUTPUT + - name: Check push permissions + id: check-push + env: + REF_NAME: ${{ steps.ref.outputs.name }} + run: | + # should-push: Should we push to GHCR? + # True for: + # 1. Pushes (tags/dev/beta) - filtered via the workflow triggers + # 2. Manual dispatch - always push to GHCR + # 3. Internal PRs where the branch name starts with 'feature-' or 'fix-' + + should_push="false" + if [[ "${{ github.event_name }}" == "push" ]]; then + should_push="true" + elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + should_push="true" + elif [[ "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.head.repo.full_name }}" == "${{ github.repository }}" ]]; then + if [[ "${REF_NAME}" == feature-* || "${REF_NAME}" == fix-* ]]; then + should_push="true" + fi + fi + + echo "should-push=${should_push}" + echo "should-push=${should_push}" >> $GITHUB_OUTPUT + + # push-external: Should we also push to Docker Hub and Quay.io? + # Only for main repo on dev/beta branches or version tags + push_external="false" + if [[ "${should_push}" == "true" && "${{ github.repository_owner }}" == "paperless-ngx" ]]; then + case "${REF_NAME}" in + dev|beta) + push_external="true" + ;; + esac + case "${{ github.ref }}" in + refs/tags/v*|*beta.rc*) + push_external="true" + ;; + esac + fi + echo "push-external=${push_external}" + echo "push-external=${push_external}" >> $GITHUB_OUTPUT + - name: Set repository name + id: repo + run: | + repo_name="${{ github.repository }}" + repo_name="${repo_name,,}" + + echo "repository=${repo_name}" + echo "name=${repo_name}" >> $GITHUB_OUTPUT + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3.12.0 + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.7.0 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Maximize space + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + sudo rm -rf /usr/local/share/boost + sudo rm -rf "$AGENT_TOOLSDIRECTORY" + - name: Docker metadata + id: docker-meta + uses: docker/metadata-action@v5.10.0 + with: + images: | + ${{ env.REGISTRY }}/${{ steps.repo.outputs.name }} + tags: | + type=ref,event=branch + type=raw,value=${{ steps.ref.outputs.name }},enable=${{ github.event_name == 'pull_request' }} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + - name: Build and push by digest + id: build + uses: docker/build-push-action@v6.18.0 + with: + context: . + file: ./Dockerfile + platforms: ${{ matrix.platform }} + labels: ${{ steps.docker-meta.outputs.labels }} + build-args: | + PNGX_TAG_VERSION=${{ steps.docker-meta.outputs.version }} + outputs: type=image,name=${{ env.REGISTRY }}/${{ steps.repo.outputs.name }},push-by-digest=true,name-canonical=true,push=${{ steps.check-push.outputs.should-push }} + cache-from: | + type=registry,ref=${{ env.REGISTRY }}/${{ steps.repo.outputs.name }}/cache/app:${{ steps.ref.outputs.name }}-${{ matrix.arch }} + type=registry,ref=${{ env.REGISTRY }}/${{ steps.repo.outputs.name }}/cache/app:dev-${{ matrix.arch }} + cache-to: ${{ steps.check-push.outputs.should-push == 'true' && format('type=registry,mode=max,ref={0}/{1}/cache/app:{2}-{3}', env.REGISTRY, steps.repo.outputs.name, steps.ref.outputs.name, matrix.arch) || '' }} + - name: Export digest + if: steps.check-push.outputs.should-push == 'true' + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + echo "digest=${digest}" + touch "/tmp/digests/${digest#sha256:}" + - name: Upload digest + if: steps.check-push.outputs.should-push == 'true' + uses: actions/upload-artifact@v6.0.0 + with: + name: digests-${{ matrix.arch }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + merge-and-push: + name: Merge and Push Manifest + runs-on: ubuntu-24.04 + needs: build-arch + if: needs.build-arch.outputs.should-push == 'true' + permissions: + contents: read + packages: write + steps: + - name: Download digests + uses: actions/download-artifact@v7.0.0 + with: + path: /tmp/digests + pattern: digests-* + merge-multiple: true + - name: List digests + run: | + echo "Downloaded digests:" + ls -la /tmp/digests/ + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3.12.0 + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.7.0 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Login to Docker Hub + if: needs.build-arch.outputs.push-external == 'true' + uses: docker/login-action@v3.7.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Login to Quay.io + if: needs.build-arch.outputs.push-external == 'true' + uses: docker/login-action@v3.7.0 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_ROBOT_TOKEN }} + - name: Docker metadata + id: docker-meta + uses: docker/metadata-action@v5.10.0 + with: + images: | + ${{ env.REGISTRY }}/${{ needs.build-arch.outputs.repository }} + tags: | + type=ref,event=branch + type=raw,value=${{ needs.build-arch.outputs.ref-name }},enable=${{ github.event_name == 'pull_request' }} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + - name: Create manifest list and push + working-directory: /tmp/digests + env: + REPOSITORY: ${{ needs.build-arch.outputs.repository }} + run: | + tags=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "${DOCKER_METADATA_OUTPUT_JSON}") + + digests="" + for digest in *; do + digests+="${{ env.REGISTRY }}/${REPOSITORY}@sha256:${digest} " + done + + echo "Creating manifest with tags: ${tags}" + echo "From digests: ${digests}" + + docker buildx imagetools create ${tags} ${digests} + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ fromJSON(steps.docker-meta.outputs.json).tags[0] }} + - name: Copy to Docker Hub + if: needs.build-arch.outputs.push-external == 'true' + env: + TAGS: ${{ steps.docker-meta.outputs.tags }} + GHCR_REPO: ${{ env.REGISTRY }}/${{ needs.build-arch.outputs.repository }} + run: | + for tag in ${TAGS}; do + dockerhub_tag="${tag/${GHCR_REPO}/docker.io/paperlessngx/paperless-ngx}" + echo "Copying ${tag} to ${dockerhub_tag}" + skopeo copy --all "docker://${tag}" "docker://${dockerhub_tag}" + done + - name: Copy to Quay.io + if: needs.build-arch.outputs.push-external == 'true' + env: + TAGS: ${{ steps.docker-meta.outputs.tags }} + GHCR_REPO: ${{ env.REGISTRY }}/${{ needs.build-arch.outputs.repository }} + run: | + for tag in ${TAGS}; do + quay_tag="${tag/${GHCR_REPO}/quay.io/paperlessngx/paperless-ngx}" + echo "Copying ${tag} to ${quay_tag}" + skopeo copy --all "docker://${tag}" "docker://${quay_tag}" + done diff --git a/.github/workflows/ci-docs.yml b/.github/workflows/ci-docs.yml new file mode 100644 index 000000000..213f6e409 --- /dev/null +++ b/.github/workflows/ci-docs.yml @@ -0,0 +1,78 @@ +name: Documentation +on: + push: + branches: + - main + - dev + paths: + - 'docs/**' + - 'zensical.toml' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/ci-docs.yml' + pull_request: + paths: + - 'docs/**' + - 'zensical.toml' + - 'pyproject.toml' + - 'uv.lock' + - '.github/workflows/ci-docs.yml' + workflow_dispatch: +concurrency: + group: docs-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true +permissions: + contents: read + pages: write + id-token: write +env: + DEFAULT_UV_VERSION: "0.9.x" + DEFAULT_PYTHON_VERSION: "3.11" +jobs: + build: + name: Build Documentation + runs-on: ubuntu-24.04 + steps: + - uses: actions/configure-pages@v5 + - name: Checkout + uses: actions/checkout@v6 + - name: Set up Python + id: setup-python + uses: actions/setup-python@v6 + with: + python-version: ${{ env.DEFAULT_PYTHON_VERSION }} + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: ${{ env.DEFAULT_UV_VERSION }} + enable-cache: true + python-version: ${{ env.DEFAULT_PYTHON_VERSION }} + - name: Install Python dependencies + run: | + uv sync --python ${{ steps.setup-python.outputs.python-version }} --dev --frozen + - name: Build documentation + run: | + uv run \ + --python ${{ steps.setup-python.outputs.python-version }} \ + --dev \ + --frozen \ + zensical build --clean + - name: Upload GitHub Pages artifact + uses: actions/upload-pages-artifact@v4 + with: + path: site + name: github-pages-${{ github.run_id }}-${{ github.run_attempt }} + deploy: + name: Deploy Documentation + needs: build + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + runs-on: ubuntu-24.04 + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy GitHub Pages + uses: actions/deploy-pages@v4 + id: deployment + with: + artifact_name: github-pages-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.github/workflows/ci-frontend.yml b/.github/workflows/ci-frontend.yml new file mode 100644 index 000000000..1b64c8251 --- /dev/null +++ b/.github/workflows/ci-frontend.yml @@ -0,0 +1,189 @@ +name: Frontend Tests +on: + push: + branches-ignore: + - 'translations**' + paths: + - 'src-ui/**' + - '.github/workflows/ci-frontend.yml' + pull_request: + branches-ignore: + - 'translations**' + paths: + - 'src-ui/**' + - '.github/workflows/ci-frontend.yml' + workflow_dispatch: +concurrency: + group: frontend-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true +jobs: + install-dependencies: + name: Install Dependencies + runs-on: ubuntu-24.04 + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + - name: Use Node.js 24 + uses: actions/setup-node@v6 + with: + node-version: 24.x + cache: 'pnpm' + cache-dependency-path: 'src-ui/pnpm-lock.yaml' + - name: Cache frontend dependencies + id: cache-frontend-deps + uses: actions/cache@v5 + with: + path: | + ~/.pnpm-store + ~/.cache + key: ${{ runner.os }}-frontend-${{ hashFiles('src-ui/pnpm-lock.yaml') }} + - name: Install dependencies + run: cd src-ui && pnpm install + lint: + name: Lint + needs: install-dependencies + runs-on: ubuntu-24.04 + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + - name: Use Node.js 24 + uses: actions/setup-node@v6 + with: + node-version: 24.x + cache: 'pnpm' + cache-dependency-path: 'src-ui/pnpm-lock.yaml' + - name: Cache frontend dependencies + uses: actions/cache@v5 + with: + path: | + ~/.pnpm-store + ~/.cache + key: ${{ runner.os }}-frontend-${{ hashFiles('src-ui/pnpm-lock.yaml') }} + - name: Re-link Angular CLI + run: cd src-ui && pnpm link @angular/cli + - name: Run lint + run: cd src-ui && pnpm run lint + unit-tests: + name: "Unit Tests (${{ matrix.shard-index }}/${{ matrix.shard-count }})" + needs: install-dependencies + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + node-version: [24.x] + shard-index: [1, 2, 3, 4] + shard-count: [4] + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + - name: Use Node.js 24 + uses: actions/setup-node@v6 + with: + node-version: 24.x + cache: 'pnpm' + cache-dependency-path: 'src-ui/pnpm-lock.yaml' + - name: Cache frontend dependencies + uses: actions/cache@v5 + with: + path: | + ~/.pnpm-store + ~/.cache + key: ${{ runner.os }}-frontend-${{ hashFiles('src-ui/pnpm-lock.yaml') }} + - name: Re-link Angular CLI + run: cd src-ui && pnpm link @angular/cli + - name: Run Jest unit tests + run: cd src-ui && pnpm run test --max-workers=2 --shard=${{ matrix.shard-index }}/${{ matrix.shard-count }} + - name: Upload test results to Codecov + if: always() + uses: codecov/codecov-action@v5 + with: + flags: frontend-node-${{ matrix.node-version }} + directory: src-ui/ + report_type: test_results + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v5 + with: + flags: frontend-node-${{ matrix.node-version }} + directory: src-ui/coverage/ + e2e-tests: + name: "E2E Tests (${{ matrix.shard-index }}/${{ matrix.shard-count }})" + needs: install-dependencies + runs-on: ubuntu-24.04 + container: mcr.microsoft.com/playwright:v1.58.2-noble + env: + PLAYWRIGHT_BROWSERS_PATH: /ms-playwright + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + strategy: + fail-fast: false + matrix: + node-version: [24.x] + shard-index: [1, 2] + shard-count: [2] + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + - name: Use Node.js 24 + uses: actions/setup-node@v6 + with: + node-version: 24.x + cache: 'pnpm' + cache-dependency-path: 'src-ui/pnpm-lock.yaml' + - name: Cache frontend dependencies + uses: actions/cache@v5 + with: + path: | + ~/.pnpm-store + ~/.cache + key: ${{ runner.os }}-frontend-${{ hashFiles('src-ui/pnpm-lock.yaml') }} + - name: Re-link Angular CLI + run: cd src-ui && pnpm link @angular/cli + - name: Install dependencies + run: cd src-ui && pnpm install --no-frozen-lockfile + - name: Run Playwright E2E tests + run: cd src-ui && pnpm exec playwright test --shard ${{ matrix.shard-index }}/${{ matrix.shard-count }} + bundle-analysis: + name: Bundle Analysis + needs: [unit-tests, e2e-tests] + runs-on: ubuntu-24.04 + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + - name: Use Node.js 24 + uses: actions/setup-node@v6 + with: + node-version: 24.x + cache: 'pnpm' + cache-dependency-path: 'src-ui/pnpm-lock.yaml' + - name: Cache frontend dependencies + uses: actions/cache@v5 + with: + path: | + ~/.pnpm-store + ~/.cache + key: ${{ runner.os }}-frontend-${{ hashFiles('src-ui/pnpm-lock.yaml') }} + - name: Re-link Angular CLI + run: cd src-ui && pnpm link @angular/cli + - name: Build and analyze + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + run: cd src-ui && pnpm run build --configuration=production diff --git a/.github/workflows/ci-lint.yml b/.github/workflows/ci-lint.yml new file mode 100644 index 000000000..c4df7d893 --- /dev/null +++ b/.github/workflows/ci-lint.yml @@ -0,0 +1,24 @@ +name: Lint +on: + push: + branches-ignore: + - 'translations**' + pull_request: + branches-ignore: + - 'translations**' +concurrency: + group: lint-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true +jobs: + lint: + name: Linting via prek + runs-on: ubuntu-slim + steps: + - name: Checkout + uses: actions/checkout@v6.0.2 + - name: Install Python + uses: actions/setup-python@v6.2.0 + with: + python-version: "3.14" + - name: Run prek + uses: j178/prek-action@v1.1.1 diff --git a/.github/workflows/ci-release.yml b/.github/workflows/ci-release.yml new file mode 100644 index 000000000..822d225b6 --- /dev/null +++ b/.github/workflows/ci-release.yml @@ -0,0 +1,238 @@ +name: Release +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + - 'v[0-9]+.[0-9]+.[0-9]+-beta.rc[0-9]+' +concurrency: + group: release-${{ github.ref }} + cancel-in-progress: false +env: + DEFAULT_UV_VERSION: "0.9.x" + DEFAULT_PYTHON_VERSION: "3.11" +jobs: + wait-for-docker: + name: Wait for Docker Build + runs-on: ubuntu-24.04 + steps: + - name: Wait for Docker build + uses: lewagon/wait-on-check-action@v1.5.0 + with: + ref: ${{ github.sha }} + check-name: 'Build Docker Image' + repo-token: ${{ secrets.GITHUB_TOKEN }} + wait-interval: 60 + build-release: + name: Build Release + needs: wait-for-docker + runs-on: ubuntu-24.04 + steps: + - name: Checkout + uses: actions/checkout@v6 + # ---- Frontend Build ---- + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + - name: Use Node.js 24 + uses: actions/setup-node@v6 + with: + node-version: 24.x + cache: 'pnpm' + cache-dependency-path: 'src-ui/pnpm-lock.yaml' + - name: Install frontend dependencies + run: cd src-ui && pnpm install + - name: Build frontend + run: cd src-ui && pnpm run build --configuration production + # ---- Backend Setup ---- + - name: Set up Python + id: setup-python + uses: actions/setup-python@v6 + with: + python-version: ${{ env.DEFAULT_PYTHON_VERSION }} + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: ${{ env.DEFAULT_UV_VERSION }} + enable-cache: true + python-version: ${{ steps.setup-python.outputs.python-version }} + - name: Install Python dependencies + run: | + uv sync --python ${{ steps.setup-python.outputs.python-version }} --dev --frozen + - name: Install system dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -qq --no-install-recommends gettext liblept5 + # ---- Build Documentation ---- + - name: Build documentation + run: | + uv run \ + --python ${{ steps.setup-python.outputs.python-version }} \ + --dev \ + --frozen \ + zensical build --clean + # ---- Prepare Release ---- + - name: Generate requirements file + run: | + uv export --quiet --no-dev --all-extras --format requirements-txt --output-file requirements.txt + - name: Compile messages + run: | + cd src/ + uv run \ + --python ${{ steps.setup-python.outputs.python-version }} \ + manage.py compilemessages + - name: Collect static files + run: | + cd src/ + uv run \ + --python ${{ steps.setup-python.outputs.python-version }} \ + manage.py collectstatic --no-input --clear + - name: Assemble release package + run: | + mkdir -p dist/paperless-ngx/scripts + + for file_name in .dockerignore \ + .env \ + Dockerfile \ + pyproject.toml \ + uv.lock \ + requirements.txt \ + LICENSE \ + README.md \ + paperless.conf.example + do + cp --verbose ${file_name} dist/paperless-ngx/ + done + mv dist/paperless-ngx/paperless.conf.example dist/paperless-ngx/paperless.conf + + cp --recursive docker/ dist/paperless-ngx/docker + cp scripts/*.service scripts/*.sh scripts/*.socket dist/paperless-ngx/scripts/ + cp --recursive src/ dist/paperless-ngx/src + cp --recursive site/ dist/paperless-ngx/docs + mv static dist/paperless-ngx/ + + find dist/paperless-ngx -name "__pycache__" -type d -exec rm -rf {} + + - name: Create release archive + run: | + cd dist + sudo chown -R 1000:1000 paperless-ngx/ + tar -cJf paperless-ngx.tar.xz paperless-ngx/ + - name: Upload release artifact + uses: actions/upload-artifact@v6 + with: + name: release + path: dist/paperless-ngx.tar.xz + retention-days: 7 + publish-release: + name: Publish Release + needs: build-release + runs-on: ubuntu-24.04 + outputs: + prerelease: ${{ steps.get-version.outputs.prerelease }} + changelog: ${{ steps.create-release.outputs.body }} + version: ${{ steps.get-version.outputs.version }} + steps: + - name: Download release artifact + uses: actions/download-artifact@v7 + with: + name: release + path: ./ + - name: Get version info + id: get-version + run: | + echo "version=${{ github.ref_name }}" >> $GITHUB_OUTPUT + if [[ "${{ github.ref_name }}" == *"-beta.rc"* ]]; then + echo "prerelease=true" >> $GITHUB_OUTPUT + else + echo "prerelease=false" >> $GITHUB_OUTPUT + fi + - name: Create release and changelog + id: create-release + uses: release-drafter/release-drafter@v6 + with: + name: Paperless-ngx ${{ steps.get-version.outputs.version }} + tag: ${{ steps.get-version.outputs.version }} + version: ${{ steps.get-version.outputs.version }} + prerelease: ${{ steps.get-version.outputs.prerelease }} + publish: true + commitish: main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload release archive + uses: shogo82148/actions-upload-release-asset@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + upload_url: ${{ steps.create-release.outputs.upload_url }} + asset_path: ./paperless-ngx.tar.xz + asset_name: paperless-ngx-${{ steps.get-version.outputs.version }}.tar.xz + asset_content_type: application/x-xz + # --------------------------------------------------------------------------- + # Append changelog to docs (only on non-prerelease) + # --------------------------------------------------------------------------- + append-changelog: + name: Append Changelog + needs: publish-release + if: needs.publish-release.outputs.prerelease == 'false' + runs-on: ubuntu-24.04 + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + ref: main + - name: Set up Python + id: setup-python + uses: actions/setup-python@v6 + with: + python-version: ${{ env.DEFAULT_PYTHON_VERSION }} + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + version: ${{ env.DEFAULT_UV_VERSION }} + enable-cache: true + python-version: ${{ env.DEFAULT_PYTHON_VERSION }} + - name: Update changelog + working-directory: docs + run: | + git branch ${{ needs.publish-release.outputs.version }}-changelog + git checkout ${{ needs.publish-release.outputs.version }}-changelog + + echo -e "# Changelog\n\n${{ needs.publish-release.outputs.changelog }}\n" > changelog-new.md + + echo "Manually linking usernames" + sed -i -r 's|@([a-zA-Z0-9_]+) \(\[#|[@\1](https://github.com/\1) ([#|g' changelog-new.md + + echo "Removing unneeded comment tags" + sed -i -r 's|@|@|g' changelog-new.md + + CURRENT_CHANGELOG=$(tail --lines +2 changelog.md) + echo -e "$CURRENT_CHANGELOG" >> changelog-new.md + mv changelog-new.md changelog.md + + uv run \ + --python ${{ steps.setup-python.outputs.python-version }} \ + --dev \ + prek run --files changelog.md || true + + git config --global user.name "github-actions" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git commit -am "Changelog ${{ needs.publish-release.outputs.version }} - GHA" + git push origin ${{ needs.publish-release.outputs.version }}-changelog + - name: Create pull request + uses: actions/github-script@v8 + with: + script: | + const { repo, owner } = context.repo; + const result = await github.rest.pulls.create({ + title: 'Documentation: Add ${{ needs.publish-release.outputs.version }} changelog', + owner, + repo, + head: '${{ needs.publish-release.outputs.version }}-changelog', + base: 'main', + body: 'This PR is auto-generated by CI.' + }); + github.rest.issues.addLabels({ + owner, + repo, + issue_number: result.data.number, + labels: ['documentation', 'skip-changelog'] + }); diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index e28e537d7..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,636 +0,0 @@ -name: ci -on: - push: - tags: - # https://semver.org/#spec-item-2 - - 'v[0-9]+.[0-9]+.[0-9]+' - # https://semver.org/#spec-item-9 - - 'v[0-9]+.[0-9]+.[0-9]+-beta.rc[0-9]+' - branches-ignore: - - 'translations**' - pull_request: - branches-ignore: - - 'translations**' -env: - DEFAULT_UV_VERSION: "0.8.x" - # This is the default version of Python to use in most steps which aren't specific - DEFAULT_PYTHON_VERSION: "3.11" - NLTK_DATA: "/usr/share/nltk_data" -jobs: - pre-commit: - # We want to run on external PRs, but not on our own internal PRs as they'll be run - # by the push to the branch. Without this if check, checks are duplicated since - # internal PRs match both the push and pull_request events. - if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository - name: Linting Checks - runs-on: ubuntu-24.04 - steps: - - name: Checkout repository - uses: actions/checkout@v5 - - name: Install python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.DEFAULT_PYTHON_VERSION }} - - name: Check files - uses: pre-commit/action@v3.0.1 - documentation: - name: "Build & Deploy Documentation" - runs-on: ubuntu-24.04 - needs: - - pre-commit - steps: - - name: Checkout - uses: actions/checkout@v5 - - name: Set up Python - id: setup-python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.DEFAULT_PYTHON_VERSION }} - - name: Install uv - uses: astral-sh/setup-uv@v6 - with: - version: ${{ env.DEFAULT_UV_VERSION }} - enable-cache: true - python-version: ${{ env.DEFAULT_PYTHON_VERSION }} - - name: Install Python dependencies - run: | - uv sync --python ${{ steps.setup-python.outputs.python-version }} --dev --frozen - - name: Make documentation - run: | - uv run \ - --python ${{ steps.setup-python.outputs.python-version }} \ - --dev \ - --frozen \ - mkdocs build --config-file ./mkdocs.yml - - name: Deploy documentation - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - run: | - echo "docs.paperless-ngx.com" > "${{ github.workspace }}/docs/CNAME" - git config --global user.name "${{ github.actor }}" - git config --global user.email "${{ github.actor }}@users.noreply.github.com" - uv run \ - --python ${{ steps.setup-python.outputs.python-version }} \ - --dev \ - --frozen \ - mkdocs gh-deploy --force --no-history - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: documentation - path: site/ - retention-days: 7 - tests-backend: - name: "Backend Tests (Python ${{ matrix.python-version }})" - runs-on: ubuntu-24.04 - needs: - - pre-commit - strategy: - matrix: - python-version: ['3.10', '3.11', '3.12'] - fail-fast: false - steps: - - name: Checkout - uses: actions/checkout@v5 - - name: Start containers - run: | - docker compose --file ${{ github.workspace }}/docker/compose/docker-compose.ci-test.yml pull --quiet - docker compose --file ${{ github.workspace }}/docker/compose/docker-compose.ci-test.yml up --detach - - name: Set up Python - id: setup-python - uses: actions/setup-python@v5 - with: - python-version: "${{ matrix.python-version }}" - - name: Install uv - uses: astral-sh/setup-uv@v6 - with: - version: ${{ env.DEFAULT_UV_VERSION }} - enable-cache: true - python-version: ${{ steps.setup-python.outputs.python-version }} - - name: Install system dependencies - run: | - sudo apt-get update -qq - sudo apt-get install -qq --no-install-recommends unpaper tesseract-ocr imagemagick ghostscript libzbar0 poppler-utils - - name: Configure ImageMagick - run: | - sudo cp docker/rootfs/etc/ImageMagick-6/paperless-policy.xml /etc/ImageMagick-6/policy.xml - - name: Install Python dependencies - run: | - uv sync \ - --python ${{ steps.setup-python.outputs.python-version }} \ - --group testing \ - --frozen - - name: List installed Python dependencies - run: | - uv pip list - - name: Install or update NLTK dependencies - run: uv run python -m nltk.downloader punkt punkt_tab snowball_data stopwords -d ${{ env.NLTK_DATA }} - - name: Tests - env: - NLTK_DATA: ${{ env.NLTK_DATA }} - PAPERLESS_CI_TEST: 1 - # Enable paperless_mail testing against real server - PAPERLESS_MAIL_TEST_HOST: ${{ secrets.TEST_MAIL_HOST }} - PAPERLESS_MAIL_TEST_USER: ${{ secrets.TEST_MAIL_USER }} - PAPERLESS_MAIL_TEST_PASSWD: ${{ secrets.TEST_MAIL_PASSWD }} - run: | - uv run \ - --python ${{ steps.setup-python.outputs.python-version }} \ - --dev \ - --frozen \ - pytest - - name: Upload backend test results to Codecov - if: always() - uses: codecov/test-results-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - flags: backend-python-${{ matrix.python-version }} - files: junit.xml - - name: Upload backend coverage to Codecov - uses: codecov/codecov-action@v5 - with: - token: ${{ secrets.CODECOV_TOKEN }} - flags: backend-python-${{ matrix.python-version }} - files: coverage.xml - - name: Stop containers - if: always() - run: | - docker compose --file ${{ github.workspace }}/docker/compose/docker-compose.ci-test.yml logs - docker compose --file ${{ github.workspace }}/docker/compose/docker-compose.ci-test.yml down - install-frontend-dependencies: - name: "Install Frontend Dependencies" - runs-on: ubuntu-24.04 - needs: - - pre-commit - steps: - - uses: actions/checkout@v5 - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - - name: Use Node.js 20 - uses: actions/setup-node@v4 - with: - node-version: 20.x - cache: 'pnpm' - cache-dependency-path: 'src-ui/pnpm-lock.yaml' - - name: Cache frontend dependencies - id: cache-frontend-deps - uses: actions/cache@v4 - with: - path: | - ~/.pnpm-store - ~/.cache - key: ${{ runner.os }}-frontenddeps-${{ hashFiles('src-ui/pnpm-lock.yaml') }} - - name: Install dependencies - run: cd src-ui && pnpm install - tests-frontend: - name: "Frontend Unit Tests (Node ${{ matrix.node-version }} - ${{ matrix.shard-index }}/${{ matrix.shard-count }})" - runs-on: ubuntu-24.04 - needs: - - install-frontend-dependencies - strategy: - fail-fast: false - matrix: - node-version: [20.x] - shard-index: [1, 2, 3, 4] - shard-count: [4] - steps: - - uses: actions/checkout@v5 - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - - name: Use Node.js 20 - uses: actions/setup-node@v4 - with: - node-version: 20.x - cache: 'pnpm' - cache-dependency-path: 'src-ui/pnpm-lock.yaml' - - name: Cache frontend dependencies - id: cache-frontend-deps - uses: actions/cache@v4 - with: - path: | - ~/.pnpm-store - ~/.cache - key: ${{ runner.os }}-frontenddeps-${{ hashFiles('src-ui/pnpm-lock.yaml') }} - - name: Re-link Angular cli - run: cd src-ui && pnpm link @angular/cli - - name: Linting checks - run: cd src-ui && pnpm run lint - - name: Run Jest unit tests - run: cd src-ui && pnpm run test --max-workers=2 --shard=${{ matrix.shard-index }}/${{ matrix.shard-count }} - - name: Upload frontend test results to Codecov - uses: codecov/test-results-action@v1 - if: always() - with: - token: ${{ secrets.CODECOV_TOKEN }} - flags: frontend-node-${{ matrix.node-version }} - directory: src-ui/ - - name: Upload frontend coverage to Codecov - uses: codecov/codecov-action@v5 - with: - token: ${{ secrets.CODECOV_TOKEN }} - flags: frontend-node-${{ matrix.node-version }} - directory: src-ui/coverage/ - tests-frontend-e2e: - name: "Frontend E2E Tests (Node ${{ matrix.node-version }} - ${{ matrix.shard-index }}/${{ matrix.shard-count }})" - runs-on: ubuntu-24.04 - needs: - - install-frontend-dependencies - strategy: - fail-fast: false - matrix: - node-version: [20.x] - shard-index: [1, 2] - shard-count: [2] - steps: - - uses: actions/checkout@v5 - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - - name: Use Node.js 20 - uses: actions/setup-node@v4 - with: - node-version: 20.x - cache: 'pnpm' - cache-dependency-path: 'src-ui/pnpm-lock.yaml' - - name: Cache frontend dependencies - id: cache-frontend-deps - uses: actions/cache@v4 - with: - path: | - ~/.pnpm-store - ~/.cache - key: ${{ runner.os }}-frontenddeps-${{ hashFiles('src-ui/pnpm-lock.yaml') }} - - name: Re-link Angular cli - run: cd src-ui && pnpm link @angular/cli - - name: Cache Playwright browsers - uses: actions/cache@v4 - with: - path: ~/.cache/ms-playwright - key: ${{ runner.os }}-playwright-${{ hashFiles('src-ui/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-playwright- - - name: Install Playwright system dependencies - run: npx playwright install-deps - - name: Install dependencies - run: cd src-ui && pnpm install --no-frozen-lockfile - - name: Install Playwright - run: cd src-ui && pnpm exec playwright install - - name: Run Playwright e2e tests - run: cd src-ui && pnpm exec playwright test --shard ${{ matrix.shard-index }}/${{ matrix.shard-count }} - frontend-bundle-analysis: - name: "Frontend Bundle Analysis" - runs-on: ubuntu-24.04 - needs: - - tests-frontend - - tests-frontend-e2e - steps: - - uses: actions/checkout@v5 - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - - name: Use Node.js 20 - uses: actions/setup-node@v4 - with: - node-version: 20.x - cache: 'pnpm' - cache-dependency-path: 'src-ui/pnpm-lock.yaml' - - name: Cache frontend dependencies - id: cache-frontend-deps - uses: actions/cache@v4 - with: - path: | - ~/.pnpm-store - ~/.cache - key: ${{ runner.os }}-frontenddeps-${{ hashFiles('src-ui/package-lock.json') }} - - name: Re-link Angular cli - run: cd src-ui && pnpm link @angular/cli - - name: Build frontend and upload analysis - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - run: cd src-ui && pnpm run build --configuration=production - build-docker-image: - name: Build Docker image for ${{ github.ref_name }} - runs-on: ubuntu-24.04 - if: github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/feature-') || startsWith(github.ref, 'refs/heads/fix-') || github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/beta' || contains(github.ref, 'beta.rc') || startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/heads/l10n_')) - concurrency: - group: ${{ github.workflow }}-build-docker-image-${{ github.ref_name }} - cancel-in-progress: true - needs: - - tests-backend - - tests-frontend - - tests-frontend-e2e - steps: - - name: Check pushing to Docker Hub - id: push-other-places - # Only push to Dockerhub from the main repo AND the ref is either: - # main - # dev - # beta - # a tag - # Otherwise forks would require a Docker Hub account and secrets setup - run: | - if [[ ${{ github.repository_owner }} == "paperless-ngx" && ( ${{ github.ref_name }} == "dev" || ${{ github.ref_name }} == "beta" || ${{ startsWith(github.ref, 'refs/tags/v') }} == "true" ) ]] ; then - echo "Enabling DockerHub image push" - echo "enable=true" >> $GITHUB_OUTPUT - else - echo "Not pushing to DockerHub" - echo "enable=false" >> $GITHUB_OUTPUT - fi - - name: Set ghcr repository name - id: set-ghcr-repository - run: | - ghcr_name=$(echo "${{ github.repository }}" | awk '{ print tolower($0) }') - echo "Name is ${ghcr_name}" - echo "ghcr-repository=${ghcr_name}" >> $GITHUB_OUTPUT - - name: Gather Docker metadata - id: docker-meta - uses: docker/metadata-action@v5 - with: - images: | - ghcr.io/${{ steps.set-ghcr-repository.outputs.ghcr-repository }} - name=paperlessngx/paperless-ngx,enable=${{ steps.push-other-places.outputs.enable }} - name=quay.io/paperlessngx/paperless-ngx,enable=${{ steps.push-other-places.outputs.enable }} - tags: | - # Tag branches with branch name - type=ref,event=branch - # Process semver tags - # For a tag x.y.z or vX.Y.Z, output an x.y.z and x.y image tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - - name: Checkout - uses: actions/checkout@v5 - # If https://github.com/docker/buildx/issues/1044 is resolved, - # the append input with a native arm64 arch could be used to - # significantly speed up building - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: arm64 - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Login to Docker Hub - uses: docker/login-action@v3 - # Don't attempt to login if not pushing to Docker Hub - if: steps.push-other-places.outputs.enable == 'true' - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Login to Quay.io - uses: docker/login-action@v3 - # Don't attempt to login if not pushing to Quay.io - if: steps.push-other-places.outputs.enable == 'true' - with: - registry: quay.io - username: ${{ secrets.QUAY_USERNAME }} - password: ${{ secrets.QUAY_ROBOT_TOKEN }} - - name: Build and push - uses: docker/build-push-action@v6 - with: - context: . - file: ./Dockerfile - platforms: linux/amd64,linux/arm64 - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.docker-meta.outputs.tags }} - labels: ${{ steps.docker-meta.outputs.labels }} - build-args: | - PNGX_TAG_VERSION=${{ steps.docker-meta.outputs.version }} - # Get cache layers from this branch, then dev - # This allows new branches to get at least some cache benefits, generally from dev - cache-from: | - type=registry,ref=ghcr.io/${{ steps.set-ghcr-repository.outputs.ghcr-repository }}/builder/cache/app:${{ github.ref_name }} - type=registry,ref=ghcr.io/${{ steps.set-ghcr-repository.outputs.ghcr-repository }}/builder/cache/app:dev - cache-to: | - type=registry,mode=max,ref=ghcr.io/${{ steps.set-ghcr-repository.outputs.ghcr-repository }}/builder/cache/app:${{ github.ref_name }} - - name: Inspect image - run: | - docker buildx imagetools inspect ${{ fromJSON(steps.docker-meta.outputs.json).tags[0] }} - - name: Export frontend artifact from docker - run: | - docker create --name frontend-extract ${{ fromJSON(steps.docker-meta.outputs.json).tags[0] }} - docker cp frontend-extract:/usr/src/paperless/src/documents/static/frontend src/documents/static/frontend/ - - name: Upload frontend artifact - uses: actions/upload-artifact@v4 - with: - name: frontend-compiled - path: src/documents/static/frontend/ - retention-days: 7 - build-release: - name: "Build Release" - needs: - - build-docker-image - - documentation - runs-on: ubuntu-24.04 - steps: - - name: Checkout - uses: actions/checkout@v5 - - name: Set up Python - id: setup-python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.DEFAULT_PYTHON_VERSION }} - - name: Install uv - uses: astral-sh/setup-uv@v6 - with: - version: ${{ env.DEFAULT_UV_VERSION }} - enable-cache: true - python-version: ${{ steps.setup-python.outputs.python-version }} - - name: Install Python dependencies - run: | - uv sync --python ${{ steps.setup-python.outputs.python-version }} --dev --frozen - - name: Install system dependencies - run: | - sudo apt-get update -qq - sudo apt-get install -qq --no-install-recommends gettext liblept5 - - name: Download frontend artifact - uses: actions/download-artifact@v5 - with: - name: frontend-compiled - path: src/documents/static/frontend/ - - name: Download documentation artifact - uses: actions/download-artifact@v5 - with: - name: documentation - path: docs/_build/html/ - - name: Generate requirements file - run: | - uv export --quiet --no-dev --all-extras --format requirements-txt --output-file requirements.txt - - name: Compile messages - run: | - cd src/ - uv run \ - --python ${{ steps.setup-python.outputs.python-version }} \ - manage.py compilemessages - - name: Collect static files - run: | - cd src/ - uv run \ - --python ${{ steps.setup-python.outputs.python-version }} \ - manage.py collectstatic --no-input - - name: Move files - run: | - echo "Making dist folders" - for directory in dist \ - dist/paperless-ngx \ - dist/paperless-ngx/scripts; - do - mkdir --verbose --parents ${directory} - done - - echo "Copying basic files" - for file_name in .dockerignore \ - .env \ - Dockerfile \ - pyproject.toml \ - uv.lock \ - requirements.txt \ - LICENSE \ - README.md \ - paperless.conf.example - do - cp --verbose ${file_name} dist/paperless-ngx/ - done - mv --verbose dist/paperless-ngx/paperless.conf.example dist/paperless-ngx/paperless.conf - - echo "Copying Docker related files" - cp --recursive docker/ dist/paperless-ngx/docker - - echo "Copying startup scripts" - cp --verbose scripts/*.service scripts/*.sh scripts/*.socket dist/paperless-ngx/scripts/ - - echo "Copying source files" - cp --recursive src/ dist/paperless-ngx/src - echo "Copying documentation" - cp --recursive docs/_build/html/ dist/paperless-ngx/docs - - mv --verbose static dist/paperless-ngx - - name: Make release package - run: | - echo "Creating release archive" - cd dist - sudo chown -R 1000:1000 paperless-ngx/ - tar -cJf paperless-ngx.tar.xz paperless-ngx/ - - name: Upload release artifact - uses: actions/upload-artifact@v4 - with: - name: release - path: dist/paperless-ngx.tar.xz - retention-days: 7 - publish-release: - name: "Publish Release" - runs-on: ubuntu-24.04 - outputs: - prerelease: ${{ steps.get_version.outputs.prerelease }} - changelog: ${{ steps.create-release.outputs.body }} - version: ${{ steps.get_version.outputs.version }} - needs: - - build-release - if: github.ref_type == 'tag' && (startsWith(github.ref_name, 'v') || contains(github.ref_name, '-beta.rc')) - steps: - - name: Download release artifact - uses: actions/download-artifact@v5 - with: - name: release - path: ./ - - name: Get version - id: get_version - run: | - echo "version=${{ github.ref_name }}" >> $GITHUB_OUTPUT - if [[ ${{ contains(github.ref_name, '-beta.rc') }} == 'true' ]]; then - echo "prerelease=true" >> $GITHUB_OUTPUT - else - echo "prerelease=false" >> $GITHUB_OUTPUT - fi - - name: Create Release and Changelog - id: create-release - uses: release-drafter/release-drafter@v6 - with: - name: Paperless-ngx ${{ steps.get_version.outputs.version }} - tag: ${{ steps.get_version.outputs.version }} - version: ${{ steps.get_version.outputs.version }} - prerelease: ${{ steps.get_version.outputs.prerelease }} - publish: true # ensures release is not marked as draft - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Upload release archive - id: upload-release-asset - uses: shogo82148/actions-upload-release-asset@v1 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - upload_url: ${{ steps.create-release.outputs.upload_url }} - asset_path: ./paperless-ngx.tar.xz - asset_name: paperless-ngx-${{ steps.get_version.outputs.version }}.tar.xz - asset_content_type: application/x-xz - append-changelog: - name: "Append Changelog" - runs-on: ubuntu-24.04 - needs: - - publish-release - if: needs.publish-release.outputs.prerelease == 'false' - steps: - - name: Checkout - uses: actions/checkout@v5 - with: - ref: main - - name: Set up Python - id: setup-python - uses: actions/setup-python@v5 - with: - python-version: ${{ env.DEFAULT_PYTHON_VERSION }} - - name: Install uv - uses: astral-sh/setup-uv@v6 - with: - version: ${{ env.DEFAULT_UV_VERSION }} - enable-cache: true - python-version: ${{ env.DEFAULT_PYTHON_VERSION }} - - name: Append Changelog to docs - id: append-Changelog - working-directory: docs - run: | - git branch ${{ needs.publish-release.outputs.version }}-changelog - git checkout ${{ needs.publish-release.outputs.version }}-changelog - echo -e "# Changelog\n\n${{ needs.publish-release.outputs.changelog }}\n" > changelog-new.md - echo "Manually linking usernames" - sed -i -r 's|@([a-zA-Z0-9_]+) \(\[#|[@\1](https://github.com/\1) ([#|g' changelog-new.md - echo "Removing unneeded comment tags" - sed -i -r 's|@|@|g' changelog-new.md - CURRENT_CHANGELOG=`tail --lines +2 changelog.md` - echo -e "$CURRENT_CHANGELOG" >> changelog-new.md - mv changelog-new.md changelog.md - uv run \ - --python ${{ steps.setup-python.outputs.python-version }} \ - --dev \ - pre-commit run --files changelog.md || true - git config --global user.name "github-actions" - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - git commit -am "Changelog ${{ needs.publish-release.outputs.version }} - GHA" - git push origin ${{ needs.publish-release.outputs.version }}-changelog - - name: Create Pull Request - uses: actions/github-script@v7 - with: - script: | - const { repo, owner } = context.repo; - const result = await github.rest.pulls.create({ - title: 'Documentation: Add ${{ needs.publish-release.outputs.version }} changelog', - owner, - repo, - head: '${{ needs.publish-release.outputs.version }}-changelog', - base: 'main', - body: 'This PR is auto-generated by CI.' - }); - github.rest.issues.addLabels({ - owner, - repo, - issue_number: result.data.number, - labels: ['documentation', 'skip-changelog'] - }); diff --git a/.github/workflows/cleanup-tags.yml b/.github/workflows/cleanup-tags.yml index 5a5085775..bc2ae655f 100644 --- a/.github/workflows/cleanup-tags.yml +++ b/.github/workflows/cleanup-tags.yml @@ -6,10 +6,9 @@ # This workflow will not trigger runs on forked repos. name: Cleanup Image Tags on: - delete: - push: - paths: - - ".github/workflows/cleanup-tags.yml" + workflow_dispatch: + schedule: + - cron: '0 0 * * 0' concurrency: group: registry-tags-cleanup cancel-in-progress: false @@ -28,7 +27,7 @@ jobs: steps: - name: Clean temporary images if: "${{ env.TOKEN != '' }}" - uses: stumpylog/image-cleaner-action/ephemeral@v0.11.0 + uses: stumpylog/image-cleaner-action/ephemeral@v0.12.0 with: token: "${{ env.TOKEN }}" owner: "${{ github.repository_owner }}" @@ -54,7 +53,7 @@ jobs: steps: - name: Clean untagged images if: "${{ env.TOKEN != '' }}" - uses: stumpylog/image-cleaner-action/untagged@v0.11.0 + uses: stumpylog/image-cleaner-action/untagged@v0.12.0 with: token: "${{ env.TOKEN }}" owner: "${{ github.repository_owner }}" diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b8acfeeff..941d83648 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -34,10 +34,10 @@ jobs: # Learn more about CodeQL language support at https://git.io/codeql-language-support steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -45,4 +45,4 @@ jobs: # Prefix the list here with "+" to use these queries and those in the config file. # queries: ./path/to/local/query, your-org/your-repo/queries@main - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 diff --git a/.github/workflows/crowdin.yml b/.github/workflows/crowdin.yml index b4b4cd2ac..29fb4c181 100644 --- a/.github/workflows/crowdin.yml +++ b/.github/workflows/crowdin.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: token: ${{ secrets.PNGX_BOT_PAT }} - name: crowdin action diff --git a/.github/workflows/pr-bot.yml b/.github/workflows/pr-bot.yml index b918ec0af..8e3b7951d 100644 --- a/.github/workflows/pr-bot.yml +++ b/.github/workflows/pr-bot.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Label PR by file path or branch name # see .github/labeler.yml for the labeler config - uses: actions/labeler@v5 + uses: actions/labeler@v6 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Label by size @@ -26,7 +26,7 @@ jobs: fail_if_xl: 'false' excluded_files: /\.lock$/ /\.txt$/ ^src-ui/pnpm-lock\.yaml$ ^src-ui/messages\.xlf$ ^src/locale/en_US/LC_MESSAGES/django\.po$ - name: Label by PR title - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: script: | const pr = context.payload.pull_request; @@ -52,7 +52,7 @@ jobs: } - name: Label bot-generated PRs if: ${{ contains(github.actor, 'dependabot') || contains(github.actor, 'crowdin-bot') }} - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: script: | const pr = context.payload.pull_request; @@ -77,7 +77,7 @@ jobs: } - name: Welcome comment if: ${{ !contains(github.actor, 'bot') }} - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: script: | const pr = context.payload.pull_request; diff --git a/.github/workflows/repo-maintenance.yml b/.github/workflows/repo-maintenance.yml index 0cfc57938..342165476 100644 --- a/.github/workflows/repo-maintenance.yml +++ b/.github/workflows/repo-maintenance.yml @@ -15,7 +15,7 @@ jobs: if: github.repository_owner == 'paperless-ngx' runs-on: ubuntu-24.04 steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: days-before-stale: 7 days-before-close: 14 @@ -37,7 +37,7 @@ jobs: if: github.repository_owner == 'paperless-ngx' runs-on: ubuntu-24.04 steps: - - uses: dessant/lock-threads@v5 + - uses: dessant/lock-threads@v6 with: issue-inactive-days: '30' pr-inactive-days: '30' @@ -57,7 +57,7 @@ jobs: if: github.repository_owner == 'paperless-ngx' runs-on: ubuntu-24.04 steps: - - uses: actions/github-script@v7 + - uses: actions/github-script@v8 with: script: | function sleep(ms) { @@ -114,7 +114,7 @@ jobs: if: github.repository_owner == 'paperless-ngx' runs-on: ubuntu-24.04 steps: - - uses: actions/github-script@v7 + - uses: actions/github-script@v8 with: script: | function sleep(ms) { @@ -206,7 +206,7 @@ jobs: if: github.repository_owner == 'paperless-ngx' runs-on: ubuntu-24.04 steps: - - uses: actions/github-script@v7 + - uses: actions/github-script@v8 with: script: | function sleep(ms) { @@ -241,6 +241,7 @@ jobs: ) { nodes { id, + createdAt, number, updatedAt, upvoteCount, diff --git a/.github/workflows/translate-strings.yml b/.github/workflows/translate-strings.yml index 5cca7f461..4cf4d2b5b 100644 --- a/.github/workflows/translate-strings.yml +++ b/.github/workflows/translate-strings.yml @@ -11,19 +11,21 @@ jobs: contents: write steps: - name: Checkout code - uses: actions/checkout@v5 + uses: actions/checkout@v6 + env: + GH_REF: ${{ github.ref }} # sonar rule:githubactions:S7630 - avoid injection with: token: ${{ secrets.PNGX_BOT_PAT }} - ref: ${{ github.head_ref }} + ref: ${{ env.GH_REF }} - name: Set up Python id: setup-python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 - name: Install system dependencies run: | sudo apt-get update -qq sudo apt-get install -qq --no-install-recommends gettext - name: Install uv - uses: astral-sh/setup-uv@v6 + uses: astral-sh/setup-uv@v7 with: enable-cache: true - name: Install backend python dependencies @@ -37,15 +39,15 @@ jobs: uses: pnpm/action-setup@v4 with: version: 10 - - name: Use Node.js 20 - uses: actions/setup-node@v4 + - name: Use Node.js 24 + uses: actions/setup-node@v6 with: - node-version: 20.x + node-version: 24.x cache: 'pnpm' cache-dependency-path: 'src-ui/pnpm-lock.yaml' - name: Cache frontend dependencies id: cache-frontend-deps - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: | ~/.pnpm-store @@ -61,7 +63,7 @@ jobs: cd src-ui pnpm run ng extract-i18n - name: Commit changes - uses: stefanzweifel/git-auto-commit-action@v6 + uses: stefanzweifel/git-auto-commit-action@v7 with: file_pattern: 'src-ui/messages.xlf src/locale/en_US/LC_MESSAGES/django.po' commit_message: "Auto translate strings" diff --git a/.gitignore b/.gitignore index c7b5c4d8e..c607f922d 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ htmlcov/ .coverage .coverage.* .cache +.uv-cache nosetests.xml coverage.xml *,cover @@ -53,7 +54,7 @@ junit.xml # Django stuff: *.log -# MkDocs documentation +# Zensical documentation site/ # PyBuilder diff --git a/.mypy-baseline.txt b/.mypy-baseline.txt new file mode 100644 index 000000000..1f63f2023 --- /dev/null +++ b/.mypy-baseline.txt @@ -0,0 +1,2470 @@ +src/documents/admin.py:0: error: "Callable[[DocumentAdmin, Any], Any]" has no attribute "short_description" [attr-defined] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/admin.py:0: error: Missing type parameters for generic type "ModelAdmin" [type-arg] +src/documents/admin.py:0: error: Missing type parameters for generic type "TabularInline" [type-arg] +src/documents/admin.py:0: error: Missing type parameters for generic type "TabularInline" [type-arg] +src/documents/admin.py:0: error: Skipping analyzing "auditlog.admin": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/admin.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/admin.py:0: error: Skipping analyzing "treenode.admin": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/barcodes.py:0: error: "Image" has no attribute "filename" [attr-defined] +src/documents/barcodes.py:0: error: Cannot find implementation or library stub for module named "zxingcpp" [import-not-found] +src/documents/barcodes.py:0: error: Skipping analyzing "pyzbar": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/bulk_download.py:0: error: Return type "None" of "add_document" incompatible with return type "Never" in supertype "BulkArchiveStrategy" [override] +src/documents/bulk_download.py:0: error: Return type "None" of "add_document" incompatible with return type "Never" in supertype "BulkArchiveStrategy" [override] +src/documents/bulk_download.py:0: error: Return type "None" of "add_document" incompatible with return type "Never" in supertype "BulkArchiveStrategy" [override] +src/documents/bulk_edit.py:0: error: "int" object is not iterable [misc] +src/documents/bulk_edit.py:0: error: "int" object is not iterable [misc] +src/documents/bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/bulk_edit.py:0: error: Incompatible return value type (got "Literal['ERROR']", expected "Literal['OK']") [return-value] +src/documents/bulk_edit.py:0: error: Incompatible type for lookup 'id': (got "Correspondent", expected "str | int") [misc] +src/documents/bulk_edit.py:0: error: Incompatible type for lookup 'id': (got "DocumentType", expected "str | int") [misc] +src/documents/bulk_edit.py:0: error: Incompatible type for lookup 'id': (got "StoragePath", expected "str | int") [misc] +src/documents/bulk_edit.py:0: error: Incompatible types in assignment (expression has type "dict_items[Any, Any] | list[tuple[int, None]]", variable has type "list[int] | dict[Any, Any]") [assignment] +src/documents/bulk_edit.py:0: error: Invalid index type "str" for "dict[FieldDataType, str]"; expected type "FieldDataType" [index] +src/documents/bulk_edit.py:0: error: List comprehension has incompatible type List[tuple[int, None]]; expected List[int] [misc] +src/documents/bulk_edit.py:0: error: Missing named argument "p" for "remove" of "PageList" [call-arg] +src/documents/bulk_edit.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/bulk_edit.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/bulk_edit.py:0: error: Need type annotation for "to_create" (hint: "to_create: list[] = ...") [var-annotated] +src/documents/caching.py:0: error: Argument 1 to "hexlify" has incompatible type "bytes | None"; expected "Buffer" [arg-type] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/caching.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/caching.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/caching.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/caching.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/caching.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/caching.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/caching.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/caching.py:0: error: Need type annotation for "_data" [var-annotated] +src/documents/checks.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/checks.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/classifier.py:0: error: "None" has no attribute "fit" [attr-defined] +src/documents/classifier.py:0: error: "None" has no attribute "fit" [attr-defined] +src/documents/classifier.py:0: error: "None" has no attribute "fit" [attr-defined] +src/documents/classifier.py:0: error: "None" has no attribute "fit" [attr-defined] +src/documents/classifier.py:0: error: "None" has no attribute "fit_transform" [attr-defined] +src/documents/classifier.py:0: error: "None" has no attribute "fit_transform" [attr-defined] +src/documents/classifier.py:0: error: "None" has no attribute "fit_transform" [attr-defined] +src/documents/classifier.py:0: error: "None" has no attribute "stem" [attr-defined] +src/documents/classifier.py:0: error: "None" has no attribute "stop_words_" [attr-defined] +src/documents/classifier.py:0: error: "None" has no attribute "transform" [attr-defined] +src/documents/classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "CountVectorizer", variable has type "None") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "LabelBinarizer", variable has type "None") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "MLPClassifier", variable has type "None") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "MLPClassifier", variable has type "None") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "MLPClassifier", variable has type "None") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "MLPClassifier", variable has type "None") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "MultiLabelBinarizer", variable has type "None") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "DocumentClassifier") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "DocumentClassifier") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "DocumentClassifier") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "DocumentClassifier") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "frozenset[Any]", variable has type "None") [assignment] +src/documents/classifier.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] +src/documents/classifier.py:0: error: List comprehension has incompatible type List[int]; expected List[list[int]] [misc] +src/documents/classifier.py:0: error: Module "sklearn.exceptions" has no attribute "InconsistentVersionWarning" [attr-defined] +src/documents/classifier.py:0: error: Skipping analyzing "nltk": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/classifier.py:0: error: Skipping analyzing "nltk.corpus": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/classifier.py:0: error: Skipping analyzing "nltk.stem": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/classifier.py:0: error: Skipping analyzing "nltk.tokenize": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/classifier.py:0: error: Unsupported right operand type for in ("None") [operator] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/conditionals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "input_doc" [attr-defined] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "log" [attr-defined] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "metadata" [attr-defined] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "metadata" [attr-defined] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "metadata" [attr-defined] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "metadata" [attr-defined] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "metadata" [attr-defined] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "metadata" [attr-defined] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "renew_logging_group" [attr-defined] +src/documents/consumer.py:0: error: "ConsumerPluginMixin" has no attribute "status_mgr" [attr-defined] +src/documents/consumer.py:0: error: "None" not callable [misc] +src/documents/consumer.py:0: error: "None" object is not iterable [misc] +src/documents/consumer.py:0: error: "get_page_count" of "DocumentParser" does not return a value (it only ever returns None) [func-returns-value] +src/documents/consumer.py:0: error: Argument "data_type" to "get_value_field_name" of "CustomFieldInstance" has incompatible type "str"; expected "FieldDataType" [arg-type] +src/documents/consumer.py:0: error: Argument "logger" to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] +src/documents/consumer.py:0: error: Argument "text" to "_store" of "ConsumerPlugin" has incompatible type "Any | None"; expected "str" [arg-type] +src/documents/consumer.py:0: error: Argument 1 to "create_source_path_directory" has incompatible type "Path | None"; expected "Path" [arg-type] +src/documents/consumer.py:0: error: Argument 2 to "parse_w_workflow_placeholders" has incompatible type "str | None"; expected "str" [arg-type] +src/documents/consumer.py:0: error: Argument 3 to "parse_w_workflow_placeholders" has incompatible type "str | None"; expected "str" [arg-type] +src/documents/consumer.py:0: error: Argument 3 to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] +src/documents/consumer.py:0: error: Argument 3 to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] +src/documents/consumer.py:0: error: Argument 4 to "parse_w_workflow_placeholders" has incompatible type "str | None"; expected "str" [arg-type] +src/documents/consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/consumer.py:0: error: Item "None" of "Document | None" has no attribute "deleted_at" [union-attr] +src/documents/consumer.py:0: error: Item "None" of "Document | None" has no attribute "filename" [union-attr] +src/documents/consumer.py:0: error: Item "None" of "Document | None" has no attribute "original_filename" [union-attr] +src/documents/consumer.py:0: error: Item "None" of "Document | None" has no attribute "pk" [union-attr] +src/documents/consumer.py:0: error: Item "None" of "Document | None" has no attribute "pk" [union-attr] +src/documents/consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/consumer.py:0: error: List item 2 has incompatible type "Path"; expected "str" [list-item] +src/documents/consumer.py:0: error: Too many arguments for "__init__" of "object" [call-arg] +src/documents/context_processors.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/converters.py:0: error: List item 3 has incompatible type "Path"; expected "str" [list-item] +src/documents/converters.py:0: error: List item 4 has incompatible type "Path"; expected "str" [list-item] +src/documents/converters.py:0: error: Skipping analyzing "img2pdf": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/data_models.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/data_models.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "str") [assignment] +src/documents/data_models.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "__iter__" (not iterable) [union-attr] +src/documents/data_models.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "__iter__" (not iterable) [union-attr] +src/documents/data_models.py:0: error: Item "list[str]" of "Any | list[str]" has no attribute "values_list" [union-attr] +src/documents/data_models.py:0: error: Item "list[str]" of "Any | list[str]" has no attribute "values_list" [union-attr] +src/documents/data_models.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/data_models.py:0: error: Value of type "Group | dict[Any, Any]" is not indexable [index] +src/documents/data_models.py:0: error: Value of type "Group | dict[Any, Any]" is not indexable [index] +src/documents/file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: "SharedByUser" has no attribute "model" [attr-defined] +src/documents/filters.py:0: error: "def wrapper(*args: Any, validation_prefix: Any = ..., **kwargs: Any) -> Any" has no attribute "__signature__" [attr-defined] +src/documents/filters.py:0: error: "type[Model]" has no attribute "objects" [attr-defined] +src/documents/filters.py:0: error: "type[Model]" has no attribute "objects" [attr-defined] +src/documents/filters.py:0: error: Argument "child" to "ListField" has incompatible type "BooleanField | None"; expected "Field[Any, Any, Any, Any]" [arg-type] +src/documents/filters.py:0: error: Argument "child" to "ListField" has incompatible type "BooleanField | None"; expected "Field[Any, Any, Any, Any]" [arg-type] +src/documents/filters.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "CharField", variable has type "BooleanField | None") [assignment] +src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "Field[Any, Any, Any, Any]", variable has type "BooleanField | None") [assignment] +src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "IntegerField", variable has type "BooleanField | None") [assignment] +src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "ListField", variable has type "BooleanField | None") [assignment] +src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "ListField", variable has type "BooleanField | None") [assignment] +src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "ListField", variable has type "BooleanField | None") [assignment] +src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "SelectField", variable has type "BooleanField | None") [assignment] +src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "Sum", variable has type "Subquery | None") [assignment] +src/documents/filters.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "list[str]") [assignment] +src/documents/filters.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/filters.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/filters.py:0: error: Item "None" of "BooleanField | None" has no attribute "allow_null" [union-attr] +src/documents/filters.py:0: error: Missing type parameters for generic type "Callable" [type-arg] +src/documents/filters.py:0: error: Need type annotation for "_annotations" (hint: "_annotations: dict[, ] = ...") [var-annotated] +src/documents/filters.py:0: error: Need type annotation for "_model_serializer" [var-annotated] +src/documents/filters.py:0: error: Skipping analyzing "rest_framework_guardian.filters": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/filters.py:0: error: Value of type "Any | None" is not indexable [index] +src/documents/index.py:0: error: "ManualResults" has no attribute "formatter" [attr-defined] +src/documents/index.py:0: error: "ManualResults" has no attribute "fragmenter" [attr-defined] +src/documents/index.py:0: error: "ManualResults" has no attribute "top_n" [attr-defined] +src/documents/index.py:0: error: "ManualResults" has no attribute "top_n" [attr-defined] +src/documents/index.py:0: error: Argument 1 to "len" has incompatible type "ManualResults"; expected "Sized" [arg-type] +src/documents/index.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/index.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/index.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/index.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/index.py:0: error: Item "str" of "Any | str" has no attribute "id" [union-attr] +src/documents/index.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/index.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/index.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/index.py:0: error: Missing type parameters for generic type "set" [type-arg] +src/documents/index.py:0: error: Missing type parameters for generic type "tuple" [type-arg] +src/documents/index.py:0: error: Missing type parameters for generic type "tuple" [type-arg] +src/documents/index.py:0: error: Name "page" already defined on line 0 [no-redef] +src/documents/index.py:0: error: Need type annotation for "saved_results" (hint: "saved_results: dict[, ] = ...") [var-annotated] +src/documents/index.py:0: error: Need type annotation for "termCounts" [var-annotated] +src/documents/index.py:0: error: Skipping analyzing "whoosh": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.fields": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.highlight": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.idsets": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.index": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.qparser": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.qparser.dateparse": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.qparser.plugins": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.reading": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.scoring": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.searching": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.util.times": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Skipping analyzing "whoosh.writing": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/index.py:0: error: Value of type "ManualResults" is not indexable [index] +src/documents/loggers.py:0: error: "LoggingMixin" has no attribute "logging_name" [attr-defined] +src/documents/mail.py:0: error: Incompatible types in assignment (expression has type "Message[str, str]", variable has type "bytes") [assignment] +src/documents/management/commands/convert_mariadb_uuid.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/convert_mariadb_uuid.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/convert_mariadb_uuid.py:0: error: Need type annotation for "new_field" [var-annotated] +src/documents/management/commands/convert_mariadb_uuid.py:0: error: Need type annotation for "old_field" [var-annotated] +src/documents/management/commands/document_archiver.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_archiver.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_consumer.py:0: error: "str" has no attribute "is_file" [attr-defined] +src/documents/management/commands/document_consumer.py:0: error: Argument 1 to "track" of "FileStabilityTracker" has incompatible type "str"; expected "Path" [arg-type] +src/documents/management/commands/document_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_consumer.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "str") [assignment] +src/documents/management/commands/document_create_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_exporter.py:0: error: Argument 1 to "add" of "set" has incompatible type "Path"; expected "str" [arg-type] +src/documents/management/commands/document_exporter.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_exporter.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_exporter.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "Path") [assignment] +src/documents/management/commands/document_exporter.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/management/commands/document_exporter.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/management/commands/document_exporter.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/management/commands/document_exporter.py:0: error: Skipping analyzing "allauth.mfa.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/management/commands/document_exporter.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/management/commands/document_exporter.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/management/commands/document_fuzzy_match.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_fuzzy_match.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_importer.py:0: error: Argument 1 to "create_source_path_directory" has incompatible type "Path | None"; expected "Path" [arg-type] +src/documents/management/commands/document_importer.py:0: error: Argument 2 to "copy_file_with_basic_stats" has incompatible type "Path | None"; expected "Path | str" [arg-type] +src/documents/management/commands/document_importer.py:0: error: Attribute "version" already defined on line 0 [no-redef] +src/documents/management/commands/document_importer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_importer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_importer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_importer.py:0: error: Incompatible types in assignment (expression has type "str | None", base class "CryptMixin" defined the type as "str") [assignment] +src/documents/management/commands/document_importer.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/management/commands/document_importer.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/management/commands/document_importer.py:0: error: Missing type parameters for generic type "Generator" [type-arg] +src/documents/management/commands/document_importer.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/management/commands/document_importer.py:0: error: Need type annotation for "manifest_paths" (hint: "manifest_paths: list[] = ...") [var-annotated] +src/documents/management/commands/document_importer.py:0: error: Skipping analyzing "auditlog.registry": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/management/commands/document_index.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_index.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_llmindex.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_llmindex.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_renamer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_renamer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_retagger.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_retagger.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_sanity_checker.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_sanity_checker.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_thumbnails.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/document_thumbnails.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/document_thumbnails.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/loaddata_stdin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/loaddata_stdin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/loaddata_stdin.py:0: error: Incompatible types in assignment (expression has type "tuple[Callable[[Any, Any], TextIO | Any], None]", target has type "tuple[Callable[[str, Literal['r', 'rb']], BufferedReader[_BufferedReaderStream]]]") [assignment] +src/documents/management/commands/manage_superuser.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/manage_superuser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/mixins.py:0: error: Attribute "kdf_algorithm" already defined on line 0 [no-redef] +src/documents/management/commands/mixins.py:0: error: Attribute "key_iterations" already defined on line 0 [no-redef] +src/documents/management/commands/mixins.py:0: error: Attribute "key_size" already defined on line 0 [no-redef] +src/documents/management/commands/mixins.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/mixins.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/management/commands/mixins.py:0: error: Incompatible types in assignment (expression has type "list[dict[str, Sequence[str]]]", variable has type "CryptFields") [assignment] +src/documents/management/commands/mixins.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/management/commands/mixins.py:0: error: Unsupported operand types for // ("None" and "int") [operator] +src/documents/management/commands/prune_audit_logs.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/prune_audit_logs.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/management/commands/prune_audit_logs.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/matching.py:0: error: Argument 1 to "existing_document_matches_workflow" has incompatible type "ConsumableDocument | Document"; expected "Document" [arg-type] +src/documents/matching.py:0: error: Argument 1 to "issubset" of "set" has incompatible type "set[int] | None"; expected "Iterable[Any]" [arg-type] +src/documents/matching.py:0: error: Argument 1 to "matches" has incompatible type "WorkflowTrigger"; expected "MatchingModel" [arg-type] +src/documents/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/matching.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +src/documents/matching.py:0: error: Incompatible types in assignment (expression has type "tuple[str]", variable has type "str") [assignment] +src/documents/matching.py:0: error: Incompatible types in assignment (expression has type "tuple[str]", variable has type "str") [assignment] +src/documents/matching.py:0: error: Incompatible types in assignment (expression has type "tuple[str]", variable has type "str") [assignment] +src/documents/matching.py:0: error: Incompatible types in assignment (expression has type "tuple[str]", variable has type "str") [assignment] +src/documents/matching.py:0: error: Unsupported left operand type for & ("None") [operator] +src/documents/matching.py:0: error: Unsupported left operand type for & ("None") [operator] +src/documents/matching.py:0: error: Value of type variable "AnyStr" of "fnmatch" cannot be "object" [type-var] +src/documents/migrations/0001_initial.py:0: error: Skipping analyzing "multiselectfield": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/migrations/0001_initial.py:0: error: Skipping analyzing "multiselectfield.db": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/migrations/0001_initial.py:0: error: Skipping analyzing "multiselectfield.db.fields": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/migrations/0008_sharelinkbundle.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/migrations/0008_sharelinkbundle.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/models.py:0: error: Could not resolve manager type for "documents.models.Document.deleted_objects" [django-manager-missing] +src/documents/models.py:0: error: Could not resolve manager type for "documents.models.Document.global_objects" [django-manager-missing] +src/documents/models.py:0: error: Could not resolve manager type for "documents.models.Document.objects" [django-manager-missing] +src/documents/models.py:0: error: Couldn't resolve related manager 'custom_fields' for relation 'documents.models.CustomFieldInstance.document'. [django-manager-missing] +src/documents/models.py:0: error: Couldn't resolve related manager 'documents' for relation 'documents.models.Document.correspondent'. [django-manager-missing] +src/documents/models.py:0: error: Couldn't resolve related manager 'documents' for relation 'documents.models.Document.document_type'. [django-manager-missing] +src/documents/models.py:0: error: Couldn't resolve related manager 'documents' for relation 'documents.models.Document.storage_path'. [django-manager-missing] +src/documents/models.py:0: error: Couldn't resolve related manager 'fields' for relation 'documents.models.CustomFieldInstance.field'. [django-manager-missing] +src/documents/models.py:0: error: Couldn't resolve related manager 'notes' for relation 'documents.models.Note.document'. [django-manager-missing] +src/documents/models.py:0: error: Couldn't resolve related manager 'runs' for relation 'documents.models.WorkflowRun.workflow'. [django-manager-missing] +src/documents/models.py:0: error: Couldn't resolve related manager 'share_links' for relation 'documents.models.ShareLink.document'. [django-manager-missing] +src/documents/models.py:0: error: Couldn't resolve related manager 'workflow_runs' for relation 'documents.models.WorkflowRun.document'. [django-manager-missing] +src/documents/models.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/models.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/models.py:0: error: Need type annotation for "created" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "created" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "created" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "document" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "document" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "document" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "document" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "expiration" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "field" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "file_version" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "note" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "owner" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "run_at" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "slug" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "type" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "user" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "value_bool" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "value_date" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "value_float" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "value_int" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "value_long_text" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "value_monetary" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "value_select" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "value_text" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "value_url" [var-annotated] +src/documents/models.py:0: error: Need type annotation for "workflow" [var-annotated] +src/documents/models.py:0: error: Signature of "delete" incompatible with supertype "django.db.models.base.Model" [override] +src/documents/models.py:0: error: Skipping analyzing "auditlog.registry": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/models.py:0: error: Skipping analyzing "django_softdelete.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/models.py:0: error: Skipping analyzing "multiselectfield": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/models.py:0: error: Skipping analyzing "treenode.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/parsers.py:0: error: Incompatible return value type (got "str | Any", expected "type[DocumentParser] | None") [return-value] +src/documents/parsers.py:0: error: Invalid index type "str | Any" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/parsers.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] +src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] +src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] +src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] +src/documents/parsers.py:0: error: Value of type "str | None" is not indexable [index] +src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/permissions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/permissions.py:0: error: Item "list[str]" of "Any | list[str] | QuerySet[User, User]" has no attribute "exclude" [union-attr] +src/documents/permissions.py:0: error: Item "list[str]" of "Any | list[str] | QuerySet[User, User]" has no attribute "exists" [union-attr] +src/documents/permissions.py:0: error: Item "list[str]" of "Any | list[str] | QuerySet[User, User]" has no attribute "exists" [union-attr] +src/documents/permissions.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/permissions.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/plugins/helpers.py:0: error: "Collection[str]" has no attribute "update" [attr-defined] +src/documents/plugins/helpers.py:0: error: Argument 1 to "send" of "BaseStatusManager" has incompatible type "dict[str, Collection[str]]"; expected "dict[str, str | int | None]" [arg-type] +src/documents/plugins/helpers.py:0: error: Argument 1 to "send" of "BaseStatusManager" has incompatible type "dict[str, Collection[str]]"; expected "dict[str, str | int | None]" [arg-type] +src/documents/plugins/helpers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/plugins/helpers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/plugins/helpers.py:0: error: Skipping analyzing "channels_redis.pubsub": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/regex.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/regex.py:0: error: Library stubs not installed for "regex" [import-untyped] +src/documents/sanity_checker.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/sanity_checker.py:0: error: Cannot use Final inside a loop [misc] +src/documents/sanity_checker.py:0: error: Cannot use Final inside a loop [misc] +src/documents/sanity_checker.py:0: error: Cannot use Final inside a loop [misc] +src/documents/sanity_checker.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/sanity_checker.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/sanity_checker.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/sanity_checker.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/sanity_checker.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/sanity_checker.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/sanity_checker.py:0: error: Incompatible type for "task_id" of "PaperlessTask" (got "UUID", expected "str | int | Combinable") [misc] +src/documents/sanity_checker.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/schema.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/schema.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/schema.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: "type[_MT?]" has no attribute "objects" [attr-defined] +src/documents/serialisers.py:0: error: "type[_MT?]" has no attribute "objects" [attr-defined] +src/documents/serialisers.py:0: error: "type[_MT?]" has no attribute "objects" [attr-defined] +src/documents/serialisers.py:0: error: Argument "choices" to "ChoiceField" has incompatible type "type[FieldDataType]"; expected "Sequence[Any]" [arg-type] +src/documents/serialisers.py:0: error: Argument "default" to "MultipleChoiceField" has incompatible type "set[DocumentSource]"; expected "set[str | int] | set[str] | set[int] | Callable[[], set[str | int] | set[str] | set[int]] | _Empty | None" [arg-type] +src/documents/serialisers.py:0: error: Argument 1 of "get_value" is incompatible with supertype "rest_framework.fields.Field"; supertype defines the argument type as "Mapping[Any, Any]" [override] +src/documents/serialisers.py:0: error: Argument 1 to "get_value_field_name" of "CustomFieldInstance" has incompatible type "str"; expected "FieldDataType" [arg-type] +src/documents/serialisers.py:0: error: Argument 1 to "int" has incompatible type "Any | Sequence[str]"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] +src/documents/serialisers.py:0: error: Argument 1 to "int" has incompatible type "Any | Sequence[str]"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] +src/documents/serialisers.py:0: error: Argument 1 to "int" has incompatible type "Any | Sequence[str]"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] +src/documents/serialisers.py:0: error: Argument 1 to "int" has incompatible type "Any | Sequence[str]"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] +src/documents/serialisers.py:0: error: Argument 1 to "len" has incompatible type "list[Any] | None"; expected "Sized" [arg-type] +src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/serialisers.py:0: error: Incompatible type for lookup 'pk': (got "str | None", expected "str | int") [misc] +src/documents/serialisers.py:0: error: Incompatible types in assignment (expression has type "PrimaryKeyRelatedField[Tag]", base class "Field" defined the type as "BaseSerializer[Any]") [assignment] +src/documents/serialisers.py:0: error: Incompatible types in assignment (expression has type "Sequence[str] | tuple[Lower]", variable has type "Sequence[str] | None") [assignment] +src/documents/serialisers.py:0: error: Incompatible types in assignment (expression has type "WorkflowActionWebhookSerializer", variable has type "WorkflowActionEmailSerializer") [assignment] +src/documents/serialisers.py:0: error: Incompatible types in assignment (expression has type "type[Correspondent]", variable has type "type[Tag] | None") [assignment] +src/documents/serialisers.py:0: error: Incompatible types in assignment (expression has type "type[DocumentType]", variable has type "type[Tag] | None") [assignment] +src/documents/serialisers.py:0: error: Incompatible types in assignment (expression has type "type[SearchResultListSerializer]", base class "Meta" defined the type as "type[OwnedObjectListSerializer]") [assignment] +src/documents/serialisers.py:0: error: Incompatible types in assignment (expression has type "type[StoragePath]", variable has type "type[Tag] | None") [assignment] +src/documents/serialisers.py:0: error: Item "Field[Any, Any, Any, Any]" of "Field[Any, Any, Any, Any] | None" has no attribute "fetch_documents" [union-attr] +src/documents/serialisers.py:0: error: Item "Field[Any, Any, Any, Any]" of "Field[Any, Any, Any, Any] | None" has no attribute "get_shared_object_pks" [union-attr] +src/documents/serialisers.py:0: error: Item "Field[Any, Any, Any, Any]" of "Field[Any, Any, Any, Any] | None" has no attribute "get_shared_object_pks" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Any | None" has no attribute "name" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Any | None" has no attribute "name" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Any | None" has no attribute "pk" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Any | None" has no attribute "version" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] | None" has no attribute "context" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] | None" has no attribute "context" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] | None" has no attribute "context" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] | None" has no attribute "fetch_documents" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] | None" has no attribute "get_shared_object_pks" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Field[Any, Any, Any, Any] | None" has no attribute "get_shared_object_pks" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "Match[str] | None" has no attribute "group" [union-attr] +src/documents/serialisers.py:0: error: Item "None" of "ObjectPermissionChecker | None" has no attribute "has_perm" [union-attr] +src/documents/serialisers.py:0: error: Item "list[str]" of "Any | list[str]" has no attribute "values_list" [union-attr] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "Field" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "Iterable" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ListSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ListSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/serialisers.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/serialisers.py:0: error: Need type annotation for "document" [var-annotated] +src/documents/serialisers.py:0: error: Need type annotation for "documents" [var-annotated] +src/documents/serialisers.py:0: error: Need type annotation for "permissions_dict" [var-annotated] +src/documents/serialisers.py:0: error: Skipping analyzing "auditlog.context": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/serialisers.py:0: error: Value of type "Any | None" is not indexable [index] +src/documents/serialisers.py:0: error: Value of type "Any | None" is not indexable [index] +src/documents/serialisers.py:0: error: Value of type "Match[str] | None" is not indexable [index] +src/documents/signals/handlers.py:0: error: "BaseDatabaseWrapper" has no attribute "close_pool" [attr-defined] +src/documents/signals/handlers.py:0: error: Argument 1 to "Path" has incompatible type "Any | None"; expected "str | PathLike[str]" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 1 to "Path" has incompatible type "Any | None"; expected "str | PathLike[str]" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 1 to "Path" has incompatible type "Path | Any | None"; expected "str | PathLike[str]" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 1 to "create_source_path_directory" has incompatible type "Path | Any | None"; expected "Path" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 1 to "move" has incompatible type "Path | Any | None"; expected "str | PathLike[str]" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 1 to "move" has incompatible type "Path | Any | None"; expected "str | PathLike[str]" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 2 to "apply_assignment_to_document" has incompatible type "Document | ConsumableDocument"; expected "Document" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 2 to "apply_removal_to_document" has incompatible type "Document | ConsumableDocument"; expected "Document" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 2 to "match_correspondents" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 2 to "match_document_types" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 2 to "match_storage_paths" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 2 to "match_tags" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 2 to "validate_move" has incompatible type "Path | Any | None"; expected "Path" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 3 to "validate_move" has incompatible type "Path | Any | None"; expected "Path" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 5 to "_suggestion_printer" has incompatible type "Any | None"; expected "MatchingModel" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 5 to "_suggestion_printer" has incompatible type "Any | None"; expected "MatchingModel" [arg-type] +src/documents/signals/handlers.py:0: error: Argument 5 to "_suggestion_printer" has incompatible type "Any | None"; expected "MatchingModel" [arg-type] +src/documents/signals/handlers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/signals/handlers.py:0: error: Incompatible return value type (got "tuple[DocumentMetadataOverrides | None, str]", expected "tuple[DocumentMetadataOverrides, str] | None") [return-value] +src/documents/signals/handlers.py:0: error: Incompatible types in assignment (expression has type "list[Tag]", variable has type "set[Tag]") [assignment] +src/documents/signals/handlers.py:0: error: Incompatible types in assignment (expression has type "tuple[Any, Any, Any]", variable has type "tuple[Any, Any]") [assignment] +src/documents/signals/handlers.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "refresh_from_db" [union-attr] +src/documents/signals/handlers.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "save" [union-attr] +src/documents/signals/handlers.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "source_path" [union-attr] +src/documents/signals/handlers.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "tags" [union-attr] +src/documents/signals/handlers.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "tags" [union-attr] +src/documents/signals/handlers.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "title" [union-attr] +src/documents/signals/handlers.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/signals/handlers.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/signals/handlers.py:0: error: Item "None" of "Any | None" has no attribute "remove" [union-attr] +src/documents/signals/handlers.py:0: error: Item "None" of "Path | Any | None" has no attribute "is_file" [union-attr] +src/documents/signals/handlers.py:0: error: Item "None" of "Path | Any | None" has no attribute "is_file" [union-attr] +src/documents/signals/handlers.py:0: error: Missing return statement [return] +src/documents/signals/handlers.py:0: error: Unsupported right operand type for in ("Any | None") [operator] +src/documents/signals/handlers.py:0: error: Unsupported target for indexed assignment ("Any | None") [index] +src/documents/signals/handlers.py:0: error: Value of type variable "_StrPathT" of "move" cannot be "Path | Any | None" [type-var] +src/documents/signals/handlers.py:0: error: Value of type variable "_StrPathT" of "move" cannot be "Path | Any | None" [type-var] +src/documents/tasks.py:0: error: Argument 1 to "create_source_path_directory" has incompatible type "Path | None"; expected "Path" [arg-type] +src/documents/tasks.py:0: error: Argument 4 to "ConsumeTaskPlugin" has incompatible type "str"; expected "Path" [arg-type] +src/documents/tasks.py:0: error: Argument 5 to "ConsumeTaskPlugin" has incompatible type "str | None"; expected "str" [arg-type] +src/documents/tasks.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tasks.py:0: error: Incompatible type for "task_id" of "PaperlessTask" (got "UUID", expected "str | int | Combinable") [misc] +src/documents/tasks.py:0: error: Incompatible type for "task_id" of "PaperlessTask" (got "UUID", expected "str | int | Combinable") [misc] +src/documents/tasks.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "str") [assignment] +src/documents/tasks.py:0: error: Incompatible types in assignment (expression has type "QuerySet[Document, Document]", variable has type "UnknownQuerySet[Document, Document]") [assignment] +src/documents/tasks.py:0: error: Incompatible types in assignment (expression has type "type[DocumentParser] | None", variable has type "type[DocumentParser]") [assignment] +src/documents/tasks.py:0: error: Missing type parameters for generic type "Task" [type-arg] +src/documents/tasks.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/tasks.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tasks.py:0: error: Skipping analyzing "whoosh.writing": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tasks.py:0: error: Value of type variable "_StrPathT" of "move" cannot be "Path | None" [type-var] +src/documents/templating/environment.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/templating/environment.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/templating/filepath.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/templating/filepath.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/templating/filepath.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/templating/filepath.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/templating/filepath.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/templating/filepath.py:0: error: Incompatible types in assignment (expression has type "QuerySet[Tag, Tag]", variable has type "list[Tag]") [assignment] +src/documents/templating/filepath.py:0: error: Need type annotation for "field_data" [var-annotated] +src/documents/templating/filters.py:0: error: Incompatible types in assignment (expression has type "date | None", variable has type "str | datetime") [assignment] +src/documents/templating/filters.py:0: error: Incompatible types in assignment (expression has type "datetime | None", variable has type "date | datetime | str") [assignment] +src/documents/templating/filters.py:0: error: Item "str" of "str | datetime" has no attribute "strftime" [union-attr] +src/documents/templating/utils.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/templating/workflows.py:0: error: Incompatible return value type (got "None", expected "str") [return-value] +src/documents/tests/conftest.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/conftest.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/factories.py:0: error: Missing type parameters for generic type "DjangoModelFactory" [type-arg] +src/documents/tests/factories.py:0: error: Missing type parameters for generic type "DjangoModelFactory" [type-arg] +src/documents/tests/test_admin.py:0: error: "PaperlessUserForm" has no attribute "request" [attr-defined] +src/documents/tests/test_admin.py:0: error: "PaperlessUserForm" has no attribute "request" [attr-defined] +src/documents/tests/test_admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_admin.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "datetime" [attr-defined] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "ai_enabled" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_title" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_title" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "barcode_tag_mapping" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "color_conversion_strategy" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "language" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "llm_api_key" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "llm_api_key" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "llm_api_key" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "llm_embedding_backend" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "refresh_from_db" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "refresh_from_db" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/documents/tests/test_api_app_config.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "user_args" [union-attr] +src/documents/tests/test_api_bulk_download.py:0: error: Value of type variable "_StrPathT" of "copy" cannot be "Path | None" [type-var] +src/documents/tests/test_api_bulk_edit.py:0: error: "type[MatchingModel]" has no attribute "objects" [attr-defined] +src/documents/tests/test_api_bulk_edit.py:0: error: "type[MatchingModel]" has no attribute "objects" [attr-defined] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_bulk_edit.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_api_custom_fields.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_custom_fields.py:0: error: Value of type "Any | None" is not indexable [index] +src/documents/tests/test_api_documents.py:0: error: "None" object is not iterable [misc] +src/documents/tests/test_api_documents.py:0: error: "object" has no attribute "get" [attr-defined] +src/documents/tests/test_api_documents.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_api_documents.py:0: error: Argument 1 to "assertCountEqual" of "TestCase" has incompatible type "list[int] | None"; expected "Iterable[Any]" [arg-type] +src/documents/tests/test_api_documents.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_documents.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_documents.py:0: error: Item "None" of "SavedViewFilterRule | None" has no attribute "value" [union-attr] +src/documents/tests/test_api_documents.py:0: error: Value of type "object" is not indexable [index] +src/documents/tests/test_api_documents.py:0: error: Value of type "object" is not indexable [index] +src/documents/tests/test_api_documents.py:0: error: Value of type variable "_StrPathT" of "copy" cannot be "Path | None" [type-var] +src/documents/tests/test_api_documents.py:0: error: Value of type variable "_StrPathT" of "copy" cannot be "Path | None" [type-var] +src/documents/tests/test_api_email.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_email.py:0: error: Item "None" of "Path | None" has no attribute "stat" [union-attr] +src/documents/tests/test_api_email.py:0: error: Value of type variable "_StrPathT" of "copy" cannot be "Path | None" [type-var] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: List item 1 has incompatible type "list[str]"; expected "str" [list-item] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/tests/test_api_filter_by_custom_fields.py:0: error: Need type annotation for "documents" (hint: "documents: list[] = ...") [var-annotated] +src/documents/tests/test_api_objects.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_objects.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_permissions.py:0: error: Argument 2 to "get_perms" has incompatible type "Tag | None"; expected "Model" [arg-type] +src/documents/tests/test_api_permissions.py:0: error: Argument 2 to "get_perms" has incompatible type "Tag | None"; expected "Model" [arg-type] +src/documents/tests/test_api_permissions.py:0: error: Argument 2 to "has_perm" of "ObjectPermissionChecker" has incompatible type "Tag | None"; expected "Model" [arg-type] +src/documents/tests/test_api_permissions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_permissions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_permissions.py:0: error: Item "None" of "Tag | None" has no attribute "owner" [union-attr] +src/documents/tests/test_api_permissions.py:0: error: Item "None" of "Tag | None" has no attribute "owner" [union-attr] +src/documents/tests/test_api_permissions.py:0: error: Item "None" of "Tag | None" has no attribute "owner" [union-attr] +src/documents/tests/test_api_permissions.py:0: error: Skipping analyzing "allauth.mfa.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_api_permissions.py:0: error: Skipping analyzing "allauth.mfa.totp.internal": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_api_profile.py:0: error: "User" has no attribute "socialaccount_set"; maybe "mailaccount_set"? [attr-defined] +src/documents/tests/test_api_profile.py:0: error: "User" has no attribute "socialaccount_set"; maybe "mailaccount_set"? [attr-defined] +src/documents/tests/test_api_profile.py:0: error: "User" has no attribute "socialaccount_set"; maybe "mailaccount_set"? [attr-defined] +src/documents/tests/test_api_profile.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_profile.py:0: error: Item "None" of "Token | None" has no attribute "key" [union-attr] +src/documents/tests/test_api_profile.py:0: error: Skipping analyzing "allauth.mfa.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_api_profile.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_search.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_search.py:0: error: Need type annotation for "seen_ids" (hint: "seen_ids: list[] = ...") [var-annotated] +src/documents/tests/test_api_search.py:0: error: Skipping analyzing "whoosh.writing": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_status.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_api_uisettings.py:0: error: Argument 1 to "assertDictEqual" of "TestCase" has incompatible type "Any | None"; expected "Mapping[Any, object]" [arg-type] +src/documents/tests/test_api_workflows.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_api_workflows.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "Correspondent | None" has no attribute "pk" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowAction | None" has no attribute "assign_title" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowAction | None" has no attribute "id" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_custom_field_query" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_custom_field_query" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_all_tags" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_all_tags" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_any_correspondents" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_any_correspondents" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_any_document_types" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_any_document_types" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_any_storage_paths" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_any_storage_paths" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_not_correspondents" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_not_correspondents" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_not_document_types" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_not_document_types" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_not_storage_paths" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_not_storage_paths" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_not_tags" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_not_tags" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_tags" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "filter_has_tags" [union-attr] +src/documents/tests/test_api_workflows.py:0: error: Item "None" of "WorkflowTrigger | None" has no attribute "id" [union-attr] +src/documents/tests/test_barcodes.py:0: error: "GetReaderPluginMixin" has no attribute "dirs" [attr-defined] +src/documents/tests/test_barcodes.py:0: error: Argument 1 to "contextmanager" has incompatible type "Callable[[TestAsnBarcode, Path], BarcodePlugin]"; expected "Callable[[TestAsnBarcode, Path], Iterator[Never]]" [arg-type] +src/documents/tests/test_barcodes.py:0: error: Argument 1 to "contextmanager" has incompatible type "Callable[[TestTagBarcode, Path], BarcodePlugin]"; expected "Callable[[TestTagBarcode, Path], Iterator[Never]]" [arg-type] +src/documents/tests/test_barcodes.py:0: error: Argument 1 to "get_reader" of "GetReaderPluginMixin" has incompatible type "str"; expected "Path" [arg-type] +src/documents/tests/test_barcodes.py:0: error: Argument 3 to "BarcodePlugin" has incompatible type "DummyProgressManager"; expected "ProgressManager" [arg-type] +src/documents/tests/test_barcodes.py:0: error: Argument 3 to "BarcodePlugin" has incompatible type "DummyProgressManager"; expected "ProgressManager" [arg-type] +src/documents/tests/test_barcodes.py:0: error: Argument 3 to "BarcodePlugin" has incompatible type "DummyProgressManager"; expected "ProgressManager" [arg-type] +src/documents/tests/test_barcodes.py:0: error: Cannot find implementation or library stub for module named "zxingcpp" [import-not-found] +src/documents/tests/test_barcodes.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_barcodes.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "str") [assignment] +src/documents/tests/test_barcodes.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "barcode_string" [union-attr] +src/documents/tests/test_barcodes.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "barcodes_enabled" [union-attr] +src/documents/tests/test_barcodes.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/documents/tests/test_barcodes.py:0: error: Item "None" of "Document | None" has no attribute "archive_serial_number" [union-attr] +src/documents/tests/test_barcodes.py:0: error: Item "None" of "Tag | None" has no attribute "name" [union-attr] +src/documents/tests/test_barcodes.py:0: error: Item "None" of "Tag | None" has no attribute "name" [union-attr] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: Need type annotation for "reader" [var-annotated] +src/documents/tests/test_barcodes.py:0: error: The return type of a generator function should be "Generator" or one of its supertypes [misc] +src/documents/tests/test_barcodes.py:0: error: The return type of a generator function should be "Generator" or one of its supertypes [misc] +src/documents/tests/test_bulk_edit.py:0: error: Argument 2 to "set_correspondent" has incompatible type "None"; expected "Correspondent" [arg-type] +src/documents/tests/test_bulk_edit.py:0: error: Argument 2 to "set_correspondent" has incompatible type "int"; expected "Correspondent" [arg-type] +src/documents/tests/test_bulk_edit.py:0: error: Argument 2 to "set_document_type" has incompatible type "None"; expected "DocumentType" [arg-type] +src/documents/tests/test_bulk_edit.py:0: error: Argument 2 to "set_document_type" has incompatible type "int"; expected "DocumentType" [arg-type] +src/documents/tests/test_bulk_edit.py:0: error: Argument 2 to "set_storage_path" has incompatible type "None"; expected "StoragePath" [arg-type] +src/documents/tests/test_bulk_edit.py:0: error: Argument 2 to "set_storage_path" has incompatible type "int"; expected "StoragePath" [arg-type] +src/documents/tests/test_bulk_edit.py:0: error: Argument 2 to "set_storage_path" has incompatible type "int"; expected "StoragePath" [arg-type] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_bulk_edit.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_bulk_edit.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_bulk_edit.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_bulk_edit.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_bulk_edit.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_bulk_edit.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_bulk_edit.py:0: error: Item "None" of "CustomFieldInstance | None" has no attribute "value" [union-attr] +src/documents/tests/test_bulk_edit.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_bulk_edit.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_bulk_edit.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_bulk_edit.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_bulk_edit.py:0: error: Unsupported operand types for - ("None" and "int") [operator] +src/documents/tests/test_caching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: "None" has no attribute "classes_" [attr-defined] +src/documents/tests/test_classifier.py:0: error: "None" has no attribute "classes_" [attr-defined] +src/documents/tests/test_classifier.py:0: error: "None" has no attribute "transform" [attr-defined] +src/documents/tests/test_classifier.py:0: error: Cannot assign to a method [method-assign] +src/documents/tests/test_classifier.py:0: error: Cannot assign to a method [method-assign] +src/documents/tests/test_classifier.py:0: error: Cannot assign to a method [method-assign] +src/documents/tests/test_classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_classifier.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | Any | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_consumer.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | Any | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_consumer.py:0: error: Argument 2 to "has_perm" of "ObjectPermissionChecker" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_consumer.py:0: error: Argument 2 to "has_perm" of "ObjectPermissionChecker" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_consumer.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] +src/documents/tests/test_consumer.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] +src/documents/tests/test_consumer.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Correspondent | Any | None" has no attribute "id" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_checksum" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_path" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_path" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "archive_serial_number" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "checksum" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "content" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "created" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "created" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "created" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "created" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "created" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "created" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "created" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "custom_fields" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "custom_fields" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "custom_fields" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "delete" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "delete" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "filename" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "owner" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "pk" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "pk" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "source_path" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "source_path" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "source_path" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "thumbnail_path" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "DocumentType | Any | None" has no attribute "id" [union-attr] +src/documents/tests/test_consumer.py:0: error: Item "None" of "StoragePath | Any | None" has no attribute "id" [union-attr] +src/documents/tests/test_consumer.py:0: error: No overload variant of "copy" matches argument types "Any", "None" [call-overload] +src/documents/tests/test_delayedquery.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_delayedquery.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_delayedquery.py:0: error: Need type annotation for "tests" [var-annotated] +src/documents/tests/test_delayedquery.py:0: error: Skipping analyzing "whoosh": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_double_sided.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_double_sided.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_double_sided.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Any | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Any | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsNotFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Argument 1 to "assertIsNotFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_file_handling.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_file_handling.py:0: error: Skipping analyzing "auditlog.context": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_filters.py:0: error: Argument 1 to "localize_date" has incompatible type "list[object] | dict[Any, Any] | Literal[1698330605] | None"; expected "date | datetime | str" [arg-type] +src/documents/tests/test_filters.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_filters.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_filters.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_filters.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_filters.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_index.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_index.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "timezone" [attr-defined] +src/documents/tests/test_management.py:0: error: Argument 1 to "Path" has incompatible type "Path | None"; expected "str | PathLike[str]" [arg-type] +src/documents/tests/test_management.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_management.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_management.py:0: error: Argument 1 to "assertIsNotFile" of "FileSystemAssertsMixin" has incompatible type "Path | None"; expected "PathLike[Any] | str" [arg-type] +src/documents/tests/test_management.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_management.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_management.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_management.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_management.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_management.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_management_consumer.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_management_exporter.py:0: error: Argument 1 to "call_command" has incompatible type "*list[object]"; expected "BaseCommand | str" [arg-type] +src/documents/tests/test_management_exporter.py:0: error: Argument 1 to "call_command" has incompatible type "*list[object]"; expected "BaseCommand | str" [arg-type] +src/documents/tests/test_management_exporter.py:0: error: Argument 1 to "call_command" has incompatible type "*list[object]"; expected "BaseCommand | str" [arg-type] +src/documents/tests/test_management_exporter.py:0: error: Argument 1 to "call_command" has incompatible type "*list[object]"; expected "BaseCommand | str" [arg-type] +src/documents/tests/test_management_exporter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_management_exporter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_management_exporter.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_management_exporter.py:0: error: Item "None" of "MailAccount | None" has no attribute "password" [union-attr] +src/documents/tests/test_management_exporter.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/tests/test_management_fuzzy.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_management_retagger.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_management_superuser.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_migration_share_link_bundle.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_migration_share_link_bundle.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_migration_share_link_bundle.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/documents/tests/test_migration_share_link_bundle.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/documents/tests/test_migration_share_link_bundle.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/documents/tests/test_migration_share_link_bundle.py:0: error: Incompatible types in assignment (expression has type "str", base class "TestMigrations" defined the type as "None") [assignment] +src/documents/tests/test_models.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_models.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_parsers.py:0: error: "None" not callable [misc] +src/documents/tests/test_parsers.py:0: error: "None" not callable [misc] +src/documents/tests/test_parsers.py:0: error: "None" not callable [misc] +src/documents/tests/test_parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_sanity_check.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_sanity_check.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_sanity_check.py:0: error: Invalid index type "None" for "dict[int, list[dict[Any, Any]]]"; expected type "int" [index] +src/documents/tests/test_share_link_bundles.py:0: error: "_MonkeyPatchedResponse" has no attribute "streaming_content" [attr-defined] +src/documents/tests/test_share_link_bundles.py:0: error: Argument 1 to "ZipFile" has incompatible type "Path | None"; expected "str | PathLike[str] | IO[bytes]" [arg-type] +src/documents/tests/test_share_link_bundles.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_share_link_bundles.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_share_link_bundles.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_share_link_bundles.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/tests/test_share_link_bundles.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/tests/test_share_link_bundles.py:0: error: Item "None" of "Path | None" has no attribute "exists" [union-attr] +src/documents/tests/test_share_link_bundles.py:0: error: Item "None" of "Path | None" has no attribute "exists" [union-attr] +src/documents/tests/test_share_link_bundles.py:0: error: Item "None" of "Path | None" has no attribute "read_bytes" [union-attr] +src/documents/tests/test_share_link_bundles.py:0: error: Item "None" of "Path | None" has no attribute "resolve" [union-attr] +src/documents/tests/test_tag_hierarchy.py:0: error: Argument 1 to "run_workflows" has incompatible type "int"; expected "WorkflowTriggerType" [arg-type] +src/documents/tests/test_tag_hierarchy.py:0: error: Argument 1 to "run_workflows" has incompatible type "int"; expected "WorkflowTriggerType" [arg-type] +src/documents/tests/test_tag_hierarchy.py:0: error: Argument 2 to "get" of "APIClient" has incompatible type "dict[str, object]"; expected "Mapping[str, str | bytes | float | Iterable[str | bytes | float]] | Iterable[tuple[str, str | bytes | float | Iterable[str | bytes | float]]] | None" [arg-type] +src/documents/tests/test_tag_hierarchy.py:0: error: Need type annotation for "context" (hint: "context: dict[, ] = ...") [var-annotated] +src/documents/tests/test_task_signals.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "str"; expected "Path" [arg-type] +src/documents/tests/test_task_signals.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "str"; expected "Path" [arg-type] +src/documents/tests/test_task_signals.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "str"; expected "Path" [arg-type] +src/documents/tests/test_task_signals.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "str"; expected "Path" [arg-type] +src/documents/tests/test_task_signals.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_task_signals.py:0: error: Need type annotation for "body" [var-annotated] +src/documents/tests/test_task_signals.py:0: error: Need type annotation for "body" [var-annotated] +src/documents/tests/test_task_signals.py:0: error: Need type annotation for "body" [var-annotated] +src/documents/tests/test_task_signals.py:0: error: Need type annotation for "body" [var-annotated] +src/documents/tests/test_tasks.py:0: error: Argument 2 to "assertIn" of "TestCase" has incompatible type "str | None"; expected "Iterable[Any] | Container[Any]" [arg-type] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_tasks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_views.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "render" [attr-defined] +src/documents/tests/test_views.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "render" [attr-defined] +src/documents/tests/test_views.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "url" [attr-defined] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] +src/documents/tests/test_views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] +src/documents/tests/test_views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/documents/tests/test_views.py:0: error: Item "None" of "SuggestionCacheData | None" has no attribute "suggestions" [union-attr] +src/documents/tests/test_views.py:0: error: Value of type "dict[str, Any] | None" is not indexable [index] +src/documents/tests/test_views.py:0: error: Value of type "dict[str, Any] | None" is not indexable [index] +src/documents/tests/test_views.py:0: error: Value of type "dict[str, Any] | None" is not indexable [index] +src/documents/tests/test_views.py:0: error: Value of type "dict[str, Any] | None" is not indexable [index] +src/documents/tests/test_views.py:0: error: Value of type "dict[str, Any] | None" is not indexable [index] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "files" to "__call__" of "Task" has incompatible type "None"; expected "dict[Any, Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Any | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "Path | str"; expected "Path" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_groups_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "get_users_with_perms" has incompatible type "Document | None"; expected "Model" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "list" has incompatible type "Group | dict[Any, Any]"; expected "Iterable[Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "list" has incompatible type "Group | dict[Any, Any]"; expected "Iterable[Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "list" has incompatible type "Group | dict[Any, Any]"; expected "Iterable[Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "list" has incompatible type "Group | dict[Any, Any]"; expected "Iterable[Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "list" has incompatible type "Group | dict[Any, Any]"; expected "Iterable[Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "list" has incompatible type "Group | dict[Any, Any]"; expected "Iterable[Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "run_workflows" has incompatible type "int"; expected "WorkflowTriggerType" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "run_workflows" has incompatible type "int"; expected "WorkflowTriggerType" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 1 to "run_workflows" has incompatible type "int"; expected "WorkflowTriggerType" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 2 to "assertIn" of "TestCase" has incompatible type "str | None"; expected "Iterable[Any] | Container[Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 2 to "assertIn" of "TestCase" has incompatible type "str | None"; expected "Iterable[Any] | Container[Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Argument 2 to "assertIn" of "TestCase" has incompatible type "str | None"; expected "Iterable[Any] | Container[Any]" [arg-type] +src/documents/tests/test_workflows.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/test_workflows.py:0: error: Incompatible types in assignment (expression has type "Any | list[str]", variable has type "QuerySet[Any, Any]") [assignment] +src/documents/tests/test_workflows.py:0: error: Incompatible types in assignment (expression has type "Any | list[str]", variable has type "QuerySet[Any, Any]") [assignment] +src/documents/tests/test_workflows.py:0: error: Incompatible types in assignment (expression has type "Group | dict[Any, Any]", variable has type "QuerySet[Any, Any]") [assignment] +src/documents/tests/test_workflows.py:0: error: Incompatible types in assignment (expression has type "Group | dict[Any, Any]", variable has type "QuerySet[Any, Any]") [assignment] +src/documents/tests/test_workflows.py:0: error: Incompatible types in assignment (expression has type "Group | dict[Any, Any]", variable has type "QuerySet[Any, Any]") [assignment] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "Group" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "correspondent" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "custom_fields" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "custom_fields" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "custom_fields" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "custom_fields" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "custom_fields" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "document_type" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "owner" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "owner" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "owner" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "owner" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "owner" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "owner" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "owner" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "owner" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "storage_path" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "tags" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Document | None" has no attribute "title" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Request | None" has no attribute "headers" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Request | None" has no attribute "headers" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Request | None" has no attribute "headers" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Request | None" has no attribute "headers" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Request | None" has no attribute "headers" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "None" of "Request | None" has no attribute "url" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "dict[Any, Any]" of "Group | dict[Any, Any]" has no attribute "count" [union-attr] +src/documents/tests/test_workflows.py:0: error: Item "str" of "Any | str" has no attribute "name" [union-attr] +src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Missing type parameters for generic type "QuerySet" [type-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/test_workflows.py:0: error: Too few arguments for "count" of "list" [call-arg] +src/documents/tests/utils.py:0: error: "Collection[str]" has no attribute "update" [attr-defined] +src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertEqual"; maybe "assertFilesEqual"? [attr-defined] +src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertEqual"; maybe "assertFilesEqual"? [attr-defined] +src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertFalse"; maybe "assertIsFile"? [attr-defined] +src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertFalse"; maybe "assertIsFile"? [attr-defined] +src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertTrue" [attr-defined] +src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertTrue" [attr-defined] +src/documents/tests/utils.py:0: error: "FileSystemAssertsMixin" has no attribute "assertTrue" [attr-defined] +src/documents/tests/utils.py:0: error: "GetConsumerMixin" has no attribute "dirs" [attr-defined] +src/documents/tests/utils.py:0: error: "GetConsumerMixin" has no attribute "dirs" [attr-defined] +src/documents/tests/utils.py:0: error: "GetConsumerMixin" has no attribute "dirs" [attr-defined] +src/documents/tests/utils.py:0: error: "setUp" undefined in superclass [misc] +src/documents/tests/utils.py:0: error: "setUp" undefined in superclass [misc] +src/documents/tests/utils.py:0: error: "setUp" undefined in superclass [misc] +src/documents/tests/utils.py:0: error: "tearDown" undefined in superclass [misc] +src/documents/tests/utils.py:0: error: "tearDown" undefined in superclass [misc] +src/documents/tests/utils.py:0: error: "tearDown" undefined in superclass [misc] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "archive_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "archive_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "archive_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "consumption_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "consumption_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "data_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "data_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "data_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "data_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "data_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "index_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "index_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "index_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "logging_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "logging_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "logging_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "media_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "media_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "media_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "media_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "media_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "media_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "originals_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "originals_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "originals_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "scratch_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "scratch_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "settings_override" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "settings_override" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "static_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "static_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "thumbnail_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "thumbnail_dir" [attr-defined] +src/documents/tests/utils.py:0: error: "type[dirs@34]" has no attribute "thumbnail_dir" [attr-defined] +src/documents/tests/utils.py:0: error: Cannot determine type of "apps" [has-type] +src/documents/tests/utils.py:0: error: First argument to namedtuple() should be "dirs", not "Dirs" [name-match] +src/documents/tests/utils.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/utils.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/tests/utils.py:0: error: Item "None" of "AppConfig | None" has no attribute "name" [union-attr] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "Callable" [type-arg] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/tests/utils.py:0: error: Missing type parameters for generic type "tuple" [type-arg] +src/documents/tests/utils.py:0: error: Need type annotation for "payloads" (hint: "payloads: list[] = ...") [var-annotated] +src/documents/utils.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "float | int") [assignment] +src/documents/utils.py:0: error: Incompatible types in assignment (expression has type "float | int", variable has type "int | None") [assignment] +src/documents/utils.py:0: error: Missing type parameters for generic type "CompletedProcess" [type-arg] +src/documents/validators.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/views.py:0: error: "BulkPermissionMixin" has no attribute "filter_queryset" [attr-defined] +src/documents/views.py:0: error: "BulkPermissionMixin" has no attribute "get_queryset" [attr-defined] +src/documents/views.py:0: error: "BulkPermissionMixin" has no attribute "queryset" [attr-defined] +src/documents/views.py:0: error: "BulkPermissionMixin" has no attribute "queryset" [attr-defined] +src/documents/views.py:0: error: "BulkPermissionMixin" has no attribute "request" [attr-defined] +src/documents/views.py:0: error: "get_serializer_context" undefined in superclass [misc] +src/documents/views.py:0: error: "object" not callable [operator] +src/documents/views.py:0: error: "type[Model]" has no attribute "objects" [attr-defined] +src/documents/views.py:0: error: Argument "path" to "EmailAttachment" has incompatible type "Path | None"; expected "Path" [arg-type] +src/documents/views.py:0: error: Argument 1 to "int" has incompatible type "str | None"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] +src/documents/views.py:0: error: Argument 2 to "match_correspondents" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] +src/documents/views.py:0: error: Argument 2 to "match_document_types" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] +src/documents/views.py:0: error: Argument 2 to "match_storage_paths" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] +src/documents/views.py:0: error: Argument 2 to "match_tags" has incompatible type "DocumentClassifier | None"; expected "DocumentClassifier" [arg-type] +src/documents/views.py:0: error: Argument 4 to "autocomplete" has incompatible type "User | AnonymousUser | None"; expected "User | None" [arg-type] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/views.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/views.py:0: error: Incompatible type for lookup 'owner': (got "User | AnonymousUser", expected "User | int | None") [misc] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "Any | None", variable has type "dict[Any, Any]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "QuerySet[Any, Any]", variable has type "list[Any]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "QuerySet[Any, Any]", variable has type "list[Document]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "bool", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "bool", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "bool", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "int", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "str | None", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "str | None", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "str", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "str", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "str", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "str", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "str", target has type "dict[str, str]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "tuple[type[IsAuthenticated]]", variable has type "tuple[type[IsAuthenticated], type[PaperlessObjectPermissions]]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "type[ArchiveOnlyStrategy]", variable has type "type[OriginalAndArchiveStrategy]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "type[DelayedMoreLikeThisQuery]", variable has type "type[DelayedFullTextQuery]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "type[DocumentSerializer]", variable has type "type[TrashSerializer]") [assignment] +src/documents/views.py:0: error: Incompatible types in assignment (expression has type "type[OriginalsOnlyStrategy]", variable has type "type[OriginalAndArchiveStrategy]") [assignment] +src/documents/views.py:0: error: Item "AnonymousUser" of "User | AnonymousUser" has no attribute "get_full_name" [union-attr] +src/documents/views.py:0: error: Item "BasePagination" of "BasePagination | None" has no attribute "get_page_size" [union-attr] +src/documents/views.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/views.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "app_logo" [union-attr] +src/documents/views.py:0: error: Item "None" of "BasePagination | None" has no attribute "get_page_size" [union-attr] +src/documents/views.py:0: error: Item "None" of "dict[str, _PingReply] | None" has no attribute "keys" [union-attr] +src/documents/views.py:0: error: Missing positional argument "request" in call to "email_documents" [call-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "GenericViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "ReadOnlyModelViewSet" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "Serializer" [type-arg] +src/documents/views.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/documents/views.py:0: error: Need type annotation for "authentication_classes" (hint: "authentication_classes: list[] = ...") [var-annotated] +src/documents/views.py:0: error: Need type annotation for "children_map" (hint: "children_map: dict[, ] = ...") [var-annotated] +src/documents/views.py:0: error: Need type annotation for "doc" [var-annotated] +src/documents/views.py:0: error: Need type annotation for "docs" (hint: "docs: list[] = ...") [var-annotated] +src/documents/views.py:0: error: Need type annotation for "permission_classes" (hint: "permission_classes: list[] = ...") [var-annotated] +src/documents/views.py:0: error: Need type annotation for "ui_settings" (hint: "ui_settings: dict[, ] = ...") [var-annotated] +src/documents/views.py:0: error: Skipping analyzing "auditlog.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/views.py:0: error: Skipping analyzing "langdetect": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/documents/views.py:0: error: TypedDict key must be a string literal; expected one of ("pk", "correspondent", "document_type", "storage_path", "tags", ...) [literal-required] +src/documents/views.py:0: error: Unsupported operand types for + ("None" and "int") [operator] +src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[Any]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[CustomField]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[Group]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[MailAccount]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[MailRule]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[SavedView]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[User]" is not indexable [index] +src/documents/views.py:0: error: Value of type "Iterable[Workflow]" is not indexable [index] +src/documents/views.py:0: error: Value of type "dict[str, _PingReply] | None" is not indexable [index] +src/documents/workflows/actions.py:0: error: Argument "files" to "delay" of "Task" has incompatible type "dict[str, tuple[str, bytes, str]] | None"; expected "dict[Any, Any]" [arg-type] +src/documents/workflows/actions.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/workflows/actions.py:0: error: Function is missing a type annotation [no-untyped-def] +src/documents/workflows/actions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/workflows/actions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/workflows/actions.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/workflows/actions.py:0: error: Incompatible types in assignment (expression has type "Any | None", variable has type "Document") [assignment] +src/documents/workflows/actions.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "dict[Any, str]") [assignment] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "added" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "correspondent" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "correspondent" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "created" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "document_type" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "document_type" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "filename" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "original_filename" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "owner" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "pk" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "pk" [union-attr] +src/documents/workflows/actions.py:0: error: Item "ConsumableDocument" of "Document | ConsumableDocument" has no attribute "title" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionEmail | None" has no attribute "body" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionEmail | None" has no attribute "body" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionEmail | None" has no attribute "include_document" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionEmail | None" has no attribute "subject" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionEmail | None" has no attribute "subject" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionEmail | None" has no attribute "to" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionEmail | None" has no attribute "to" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "as_json" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "body" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "body" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "headers" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "headers" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "include_document" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "params" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "params" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "url" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "url" [union-attr] +src/documents/workflows/actions.py:0: error: Item "None" of "WorkflowActionWebhook | None" has no attribute "use_params" [union-attr] +src/documents/workflows/actions.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/workflows/actions.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/workflows/actions.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_change_groups"; maybe "assign_change_groups"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_change_groups"; maybe "assign_change_groups"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_change_users"; maybe "assign_change_users"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_change_users"; maybe "assign_change_users"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_custom_fields"; maybe "assign_custom_fields" or "assign_custom_fields_values"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_custom_fields"; maybe "assign_custom_fields" or "assign_custom_fields_values"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_tags"; maybe "assign_tags"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_tags"; maybe "assign_tags"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_view_groups"; maybe "assign_view_groups"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_view_groups"; maybe "assign_view_groups"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_view_users"; maybe "assign_view_users"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_assign_view_users"; maybe "assign_view_users"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_change_groups"; maybe "remove_change_groups"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_change_groups"; maybe "remove_change_groups"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_change_users"; maybe "remove_change_users"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_change_users"; maybe "remove_change_users"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_custom_fields"; maybe "remove_custom_fields" or "remove_all_custom_fields"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_custom_fields"; maybe "remove_custom_fields" or "remove_all_custom_fields"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_view_groups"; maybe "remove_view_groups"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_view_groups"; maybe "remove_view_groups"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_view_users"; maybe "remove_view_users"? [attr-defined] +src/documents/workflows/mutations.py:0: error: "WorkflowAction" has no attribute "has_remove_view_users"; maybe "remove_view_users"? [attr-defined] +src/documents/workflows/mutations.py:0: error: Argument "data_type" to "get_value_field_name" of "CustomFieldInstance" has incompatible type "str"; expected "FieldDataType" [arg-type] +src/documents/workflows/mutations.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/workflows/mutations.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/workflows/mutations.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/workflows/mutations.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/workflows/mutations.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/workflows/mutations.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/workflows/mutations.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/documents/workflows/mutations.py:0: error: Need type annotation for "permissions" [var-annotated] +src/documents/workflows/utils.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/workflows/webhooks.py:0: error: Argument 1 to "_format_ip_for_url" of "WebhookTransport" has incompatible type "str | int"; expected "str" [arg-type] +src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "Cookies | CookieJar | dict[str, str] | list[tuple[str, str]] | None" [arg-type] +src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None" [arg-type] +src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "Mapping[str, Any] | None" [arg-type] +src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "Mapping[str, IO[bytes] | bytes | str | tuple[str | None, IO[bytes] | bytes | str] | tuple[str | None, IO[bytes] | bytes | str, str | None] | tuple[str | None, IO[bytes] | bytes | str, str | None, Mapping[str, str]]] | Sequence[tuple[str, IO[bytes] | bytes | str | tuple[str | None, IO[bytes] | bytes | str] | tuple[str | None, IO[bytes] | bytes | str, str | None] | tuple[str | None, IO[bytes] | bytes | str, str | None, Mapping[str, str]]]] | None" [arg-type] +src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "URL | str" [arg-type] +src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "bool | UseClientDefault" [arg-type] +src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "float | tuple[float | None, float | None, float | None, float | None] | Timeout | None | UseClientDefault" [arg-type] +src/documents/workflows/webhooks.py:0: error: Argument 1 to "post" of "Client" has incompatible type "**dict[str, str | dict[Any, Any] | None]"; expected "tuple[str | bytes, str | bytes] | Callable[[Request], Request] | Auth | UseClientDefault" [arg-type] +src/documents/workflows/webhooks.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/documents/workflows/webhooks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/documents/workflows/webhooks.py:0: error: Incompatible return value type (got "str | int | None", expected "str | None") [return-value] +src/documents/workflows/webhooks.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/workflows/webhooks.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/documents/workflows/webhooks.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/adapter.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/adapter.py:0: error: Name "user" already defined on line 0 [no-redef] +src/paperless/adapter.py:0: error: Skipping analyzing "allauth.account.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/adapter.py:0: error: Skipping analyzing "allauth.core": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/adapter.py:0: error: Skipping analyzing "allauth.headless.tokens.strategies.sessions": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/adapter.py:0: error: Skipping analyzing "allauth.socialaccount.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/admin.py:0: error: "PaperlessUserForm" has no attribute "request" [attr-defined] +src/paperless/admin.py:0: error: "type[ModelForm[Any]]" has no attribute "request" [attr-defined] +src/paperless/admin.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/admin.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/admin.py:0: error: Item "None" of "dict[str, Any] | None" has no attribute "get" [union-attr] +src/paperless/admin.py:0: error: Missing type parameters for generic type "ModelForm" [type-arg] +src/paperless/admin.py:0: error: Missing type parameters for generic type "UserAdmin" [type-arg] +src/paperless/admin.py:0: error: Signature of "get_form" incompatible with supertype "django.contrib.admin.options.ModelAdmin" [override] +src/paperless/apps.py:0: error: Skipping analyzing "allauth.socialaccount.signals": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/asgi.py:0: error: Argument 1 to "URLRouter" has incompatible type "list[URLPattern]"; expected "list[_ExtendedURLPattern | URLRouter]" [arg-type] +src/paperless/auth.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/auth.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/auth.py:0: error: No return value expected [return-value] +src/paperless/auth.py:0: error: No return value expected [return-value] +src/paperless/auth.py:0: error: Return type "None" of "__call__" incompatible with return type "HttpResponseBase | Awaitable[HttpResponseBase]" in supertype "django.contrib.auth.middleware.RemoteUserMiddleware" [override] +src/paperless/auth.py:0: error: Skipping analyzing "allauth.mfa.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/checks.py:0: error: Argument 1 to "append" of "list" has incompatible type "Warning"; expected "Error" [arg-type] +src/paperless/checks.py:0: error: Argument 2 to "path_check" has incompatible type "Path | None"; expected "Path" [arg-type] +src/paperless/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/config.py:0: error: Incompatible return value type (got "ApplicationConfiguration | None", expected "ApplicationConfiguration") [return-value] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "Any | None", variable has type "str") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +src/paperless/config.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "str") [assignment] +src/paperless/consumers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/consumers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/consumers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/consumers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/consumers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/consumers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "groups" [union-attr] +src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "id" [union-attr] +src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "id" [union-attr] +src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "is_authenticated" [union-attr] +src/paperless/consumers.py:0: error: Item "None" of "UserLazyObject | None" has no attribute "is_superuser" [union-attr] +src/paperless/consumers.py:0: error: Item "UserLazyObject" of "UserLazyObject | None" has no attribute "groups" [union-attr] +src/paperless/consumers.py:0: error: Item "UserLazyObject" of "UserLazyObject | None" has no attribute "id" [union-attr] +src/paperless/consumers.py:0: error: Item "UserLazyObject" of "UserLazyObject | None" has no attribute "id" [union-attr] +src/paperless/consumers.py:0: error: Item "UserLazyObject" of "UserLazyObject | None" has no attribute "is_superuser" [union-attr] +src/paperless/db_cache.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/db_cache.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/db_cache.py:0: error: Skipping analyzing "cachalot.api": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/db_cache.py:0: error: Skipping analyzing "cachalot.utils": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/middleware.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/middleware.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/migrations/0001_initial.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/serialisers.py:0: error: "PasswordValidationMixin" has no attribute "instance" [attr-defined] +src/paperless/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/serialisers.py:0: error: Item "None" of "str | None" has no attribute "replace" [union-attr] +src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/paperless/serialisers.py:0: error: Missing type parameters for generic type "ModelSerializer" [type-arg] +src/paperless/serialisers.py:0: error: Need type annotation for "auth_token" [var-annotated] +src/paperless/serialisers.py:0: error: Signature of "run_validation" incompatible with supertype "rest_framework.fields.Field" [override] +src/paperless/serialisers.py:0: error: Skipping analyzing "allauth.mfa.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/serialisers.py:0: error: Skipping analyzing "allauth.mfa.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/serialisers.py:0: error: Skipping analyzing "allauth.mfa.totp.internal.auth": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/serialisers.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/settings.py:0: error: "Sequence[str]" has no attribute "append" [attr-defined] +src/paperless/settings.py:0: error: "Sequence[str]" has no attribute "insert" [attr-defined] +src/paperless/settings.py:0: error: "object" has no attribute "update" [attr-defined] +src/paperless/settings.py:0: error: "object" has no attribute "update" [attr-defined] +src/paperless/settings.py:0: error: "object" has no attribute "update" [attr-defined] +src/paperless/settings.py:0: error: "object" has no attribute "update" [attr-defined] +src/paperless/settings.py:0: error: Argument 1 to "_parse_ignore_dates" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/settings.py:0: error: Argument 1 to "append" of "list" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless/settings.py:0: error: Argument 1 to "int" has incompatible type "str | None"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] +src/paperless/settings.py:0: error: Argument 1 to "int" has incompatible type "str | None"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] +src/paperless/settings.py:0: error: Argument 1 to "int" has incompatible type "str | None"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] +src/paperless/settings.py:0: error: Argument 1 to "int" has incompatible type "str | None"; expected "str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc" [arg-type] +src/paperless/settings.py:0: error: Argument 2 to "__get_path" has incompatible type "str | None"; expected "PathLike[Any] | str" [arg-type] +src/paperless/settings.py:0: error: Argument 2 to "getenv" has incompatible type "None"; expected "Collection[str]" [arg-type] +src/paperless/settings.py:0: error: Argument 2 to "getenv" has incompatible type "None"; expected "Collection[str]" [arg-type] +src/paperless/settings.py:0: error: Argument 2 to "getenv" has incompatible type "None"; expected "Collection[str]" [arg-type] +src/paperless/settings.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/settings.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/settings.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/settings.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/settings.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/settings.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/settings.py:0: error: Incompatible return value type (got "set[date]", expected "set[datetime]") [return-value] +src/paperless/settings.py:0: error: Incompatible return value type (got "tuple[str | None, str, str, str, str]", expected "tuple[str, str, str, str, str]") [return-value] +src/paperless/settings.py:0: error: Incompatible types in assignment (expression has type "bool", variable has type "str") [assignment] +src/paperless/settings.py:0: error: Incompatible types in assignment (expression has type "set[datetime]", variable has type "set[date]") [assignment] +src/paperless/settings.py:0: error: Missing type parameters for generic type "PathLike" [type-arg] +src/paperless/settings.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/paperless/settings.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/paperless/settings.py:0: error: No overload variant of "getenv" matches argument types "Collection[str]", "Collection[str]" [call-overload] +src/paperless/settings.py:0: error: Skipping analyzing "compression_middleware.middleware": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_adapter.py:0: error: Cannot assign to a method [method-assign] +src/paperless/tests/test_adapter.py:0: error: Cannot assign to a method [method-assign] +src/paperless/tests/test_adapter.py:0: error: Cannot assign to a method [method-assign] +src/paperless/tests/test_adapter.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_adapter.py:0: error: Skipping analyzing "allauth.account.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/tests/test_adapter.py:0: error: Skipping analyzing "allauth.core": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/tests/test_adapter.py:0: error: Skipping analyzing "allauth.socialaccount.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/tests/test_db_cache.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_db_cache.py:0: error: Skipping analyzing "cachalot.settings": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/tests/test_settings.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_settings.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_signals.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/paperless/tests/test_signals.py:0: error: Item "None" of "Any | None" has no attribute "get" [union-attr] +src/paperless/tests/test_utils.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_utils.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_utils.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_websockets.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] +src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] +src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] +src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] +src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] +src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] +src/paperless/tests/test_websockets.py:0: error: Item "None" of "BaseChannelLayer | None" has no attribute "group_send" [union-attr] +src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-item] +src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-item] +src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-item] +src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-item] +src/paperless/tests/test_websockets.py:0: error: TypedDict "_WebsocketTestScope" has no key "user" [typeddict-unknown-key] +src/paperless/urls.py:0: error: Argument 2 to "path" has incompatible type "_ASGIApplicationProtocol"; expected "Callable[..., HttpResponseBase]" [arg-type] +src/paperless/urls.py:0: error: Skipping analyzing "allauth.account": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/urls.py:0: error: Skipping analyzing "allauth.mfa.base": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/urls.py:0: error: Skipping analyzing "allauth.socialaccount": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/urls.py:0: error: Skipping analyzing "allauth.urls": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/validators.py:0: error: Argument 1 to "join" of "str" has incompatible type "Iterator[str | bytes] | Any"; expected "Iterable[str]" [arg-type] +src/paperless/validators.py:0: error: Incompatible types in assignment (expression has type "str | bytes", variable has type "str") [assignment] +src/paperless/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless/views.py:0: error: Incompatible type for "user" of "Token" (got "User | AnonymousUser", expected "User | Combinable") [misc] +src/paperless/views.py:0: error: Incompatible type for lookup 'user': (got "User | AnonymousUser", expected "User | int | None") [misc] +src/paperless/views.py:0: error: Item "AnonymousUser" of "User | AnonymousUser" has no attribute "socialaccount_set" [union-attr] +src/paperless/views.py:0: error: Item "None" of "Any | None" has no attribute "results" [union-attr] +src/paperless/views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "ai_enabled" [union-attr] +src/paperless/views.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "llm_embedding_backend" [union-attr] +src/paperless/views.py:0: error: Item "None" of "Page[Any] | None" has no attribute "paginator" [union-attr] +src/paperless/views.py:0: error: Item "None" of "Page[Any] | None" has no attribute "paginator" [union-attr] +src/paperless/views.py:0: error: Item "None" of "Page[Any] | None" has no attribute "paginator" [union-attr] +src/paperless/views.py:0: error: Item "None" of "User | AnonymousUser | None" has no attribute "save" [union-attr] +src/paperless/views.py:0: error: Item "None" of "User | AnonymousUser | None" has no attribute "save" [union-attr] +src/paperless/views.py:0: error: Item "None" of "User | AnonymousUser | None" has no attribute "set_password" [union-attr] +src/paperless/views.py:0: error: Item "User" of "User | AnonymousUser" has no attribute "socialaccount_set" [union-attr] +src/paperless/views.py:0: error: Item "_SupportsPagination[Any]" of "_SupportsPagination[Any] | Any" has no attribute "values_list" [union-attr] +src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/paperless/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/paperless/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/paperless/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/paperless/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa.base.internal.flows": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa.recovery_codes.internal.flows": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/views.py:0: error: Skipping analyzing "allauth.mfa.totp.internal": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/views.py:0: error: Skipping analyzing "allauth.socialaccount.adapter": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless/views.py:0: error: Skipping analyzing "allauth.socialaccount.models": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless_ai/ai_classifier.py:0: error: Argument 1 to "parse_ai_response" has incompatible type "str"; expected "dict[Any, Any]" [arg-type] +src/paperless_ai/ai_classifier.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/paperless_ai/ai_classifier.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/paperless_ai/chat.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/chat.py:0: error: Item "AsyncGenerator[str, None]" of "Any | Generator[str, None, None] | AsyncGenerator[str, None]" has no attribute "__iter__" (not iterable) [union-attr] +src/paperless_ai/chat.py:0: error: Item "Response" of "Response | StreamingResponse | AsyncStreamingResponse | PydanticResponse" has no attribute "response_gen" [union-attr] +src/paperless_ai/client.py:0: error: Incompatible return value type (got "dict[str, Any]", expected "str") [return-value] +src/paperless_ai/indexing.py:0: error: Argument "persist_dir" to "from_defaults" of "StorageContext" has incompatible type "Path"; expected "str | None" [arg-type] +src/paperless_ai/indexing.py:0: error: Argument 1 to "from_persist_dir" of "FaissVectorStore" has incompatible type "Path"; expected "str" [arg-type] +src/paperless_ai/indexing.py:0: error: Argument 1 to "from_persist_dir" of "SimpleDocumentStore" has incompatible type "Path"; expected "str" [arg-type] +src/paperless_ai/indexing.py:0: error: Argument 1 to "from_persist_dir" of "SimpleIndexStore" has incompatible type "Path"; expected "str" [arg-type] +src/paperless_ai/indexing.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/indexing.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/indexing.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/indexing.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/indexing.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/indexing.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/indexing.py:0: error: Skipping analyzing "faiss": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless_ai/matching.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/matching.py:0: error: Missing type parameters for generic type "list" [type-arg] +src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_classifier.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_ai_indexing.py:0: error: Return type "list[float]" of "_aget_query_embedding" incompatible with return type "Coroutine[Any, Any, list[float]]" in supertype "llama_index.core.base.embeddings.base.BaseEmbedding" [override] +src/paperless_ai/tests/test_chat.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_chat.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_chat.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_chat.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_chat.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_client.py:0: error: Invalid index type "str" for "str"; expected type "SupportsIndex | slice[Any, Any, Any]" [index] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_embedding.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Argument "user" to "match_correspondents_by_name" has incompatible type "None"; expected "User" [arg-type] +src/paperless_ai/tests/test_matching.py:0: error: Argument "user" to "match_document_types_by_name" has incompatible type "None"; expected "User" [arg-type] +src/paperless_ai/tests/test_matching.py:0: error: Argument "user" to "match_storage_paths_by_name" has incompatible type "None"; expected "User" [arg-type] +src/paperless_ai/tests/test_matching.py:0: error: Argument "user" to "match_tags_by_name" has incompatible type "None"; expected "User" [arg-type] +src/paperless_ai/tests/test_matching.py:0: error: Argument "user" to "match_tags_by_name" has incompatible type "None"; expected "User" [arg-type] +src/paperless_ai/tests/test_matching.py:0: error: Argument "user" to "match_tags_by_name" has incompatible type "None"; expected "User" [arg-type] +src/paperless_ai/tests/test_matching.py:0: error: Argument 1 to "match_tags_by_name" has incompatible type "list[str | None]"; expected "list[str]" [arg-type] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_ai/tests/test_matching.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/admin.py:0: error: Missing type parameters for generic type "ModelAdmin" [type-arg] +src/paperless_mail/admin.py:0: error: Missing type parameters for generic type "ModelForm" [type-arg] +src/paperless_mail/mail.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] +src/paperless_mail/mail.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] +src/paperless_mail/mail.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] +src/paperless_mail/mail.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] +src/paperless_mail/mail.py:0: error: Argument "original_file" to "ConsumableDocument" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 1 to "TagMailAction" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "Header | list[Header] | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "Header | list[Header] | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "bool | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "bool | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "int | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "int | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "str | Iterable[str] | UidRange | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "str | Iterable[str] | UidRange | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "str | list[str] | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "AND" has incompatible type "**dict[str, date]"; expected "str | list[str] | None" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "flag" of "BaseMailBox" has incompatible type "list[str] | None"; expected "str | Iterable[str]" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 2 to "insert" of "list" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 3 to "post_consume" of "BaseMailAction" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/mail.py:0: error: Argument 4 to "uid" of "IMAP4" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/mail.py:0: error: Incompatible return value type (got "MailBoxUnencrypted", expected "MailBox") [return-value] +src/paperless_mail/mail.py:0: error: Incompatible type for "uid" of "ProcessedMail" (got "str | None", expected "str | int | Combinable") [misc] +src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "MailBox", variable has type "MailBoxUnencrypted") [assignment] +src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "MailBoxStartTls", variable has type "MailBoxUnencrypted") [assignment] +src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "str") [assignment] +src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "str", target has type "date") [assignment] +src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "str", target has type "date") [assignment] +src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "str", target has type "date") [assignment] +src/paperless_mail/mail.py:0: error: Incompatible types in assignment (expression has type "str", target has type "date") [assignment] +src/paperless_mail/mail.py:0: error: Missing type parameters for generic type "dict" [type-arg] +src/paperless_mail/management/commands/mail_fetcher.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/models.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/oauth.py:0: error: Argument "refresh_token" to "refresh_token" of "BaseOAuth2" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/oauth.py:0: error: Argument "refresh_token" to "refresh_token" of "BaseOAuth2" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/oauth.py:0: error: Argument 1 to "GoogleOAuth2" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/oauth.py:0: error: Argument 1 to "MicrosoftGraphOAuth2" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/oauth.py:0: error: Argument 2 to "GoogleOAuth2" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/oauth.py:0: error: Argument 2 to "MicrosoftGraphOAuth2" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_mail/oauth.py:0: error: Incompatible return value type (got "None", expected "GoogleOAuth2") [return-value] +src/paperless_mail/oauth.py:0: error: Incompatible return value type (got "None", expected "MicrosoftGraphOAuth2") [return-value] +src/paperless_mail/oauth.py:0: error: Incompatible types in assignment (expression has type "GoogleOAuth2", variable has type "None") [assignment] +src/paperless_mail/oauth.py:0: error: Incompatible types in assignment (expression has type "MicrosoftGraphOAuth2", variable has type "None") [assignment] +src/paperless_mail/parsers.py:0: error: "tuple[str, ...]" has no attribute "encode" [attr-defined] +src/paperless_mail/parsers.py:0: error: Argument 1 to "make_thumbnail_from_pdf" has incompatible type "None"; expected "Path" [arg-type] +src/paperless_mail/parsers.py:0: error: Argument 2 to "generate_pdf" of "MailDocumentParser" has incompatible type "int"; expected "PdfLayout | None" [arg-type] +src/paperless_mail/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] +src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] +src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] +src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "int", variable has type "PdfLayout | None") [assignment] +src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] +src/paperless_mail/parsers.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "tuple[str, ...]") [assignment] +src/paperless_mail/parsers.py:0: error: Item "None" of "EmailAddress | None" has no attribute "full" [union-attr] +src/paperless_mail/parsers.py:0: error: Item "None" of "EmailAddress | None" has no attribute "full" [union-attr] +src/paperless_mail/parsers.py:0: error: Need type annotation for "result" (hint: "result: list[] = ...") [var-annotated] +src/paperless_mail/preprocessor.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/preprocessor.py:0: error: Skipping analyzing "gnupg": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless_mail/serialisers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/serialisers.py:0: error: Missing type parameters for generic type "PrimaryKeyRelatedField" [type-arg] +src/paperless_mail/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: "BogusFolderManager" has no attribute "list" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "BogusFolderManager" has no attribute "list" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "BogusFolderManager" has no attribute "list" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "BogusFolderManager" has no attribute "list" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "MailMessage" has no attribute "flagged" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "MailMessage" has no attribute "flagged" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "MailMessage" has no attribute "seen" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "MailMessage" has no attribute "seen" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[att@480]" has no attribute "filename" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message2@426]" has no attribute "from_" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message2@426]" has no attribute "from_" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message2@426]" has no attribute "from_values" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message@419]" has no attribute "from_" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message@419]" has no attribute "from_values" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message@478]" has no attribute "subject" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: "type[message@531]" has no attribute "attachments" [attr-defined] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxFolderSelectError" has incompatible type "None"; expected "tuple[Any, ...]" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxFolderSelectError" has incompatible type "None"; expected "tuple[Any, ...]" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxLoginError" has incompatible type "str"; expected "tuple[Any, ...]" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxLoginError" has incompatible type "str"; expected "tuple[Any, ...]" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxLoginError" has incompatible type "str"; expected "tuple[Any, ...]" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "MailboxLoginError" has incompatible type "str"; expected "tuple[Any, ...]" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message2@426]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message2@426]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@419]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@419]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@419]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_correspondent" of "MailAccountHandler" has incompatible type "type[message@419]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_title" of "MailAccountHandler" has incompatible type "type[message@478]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_title" of "MailAccountHandler" has incompatible type "type[message@478]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "_get_title" of "MailAccountHandler" has incompatible type "type[message@478]"; expected "MailMessage" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "filter" has incompatible type "Callable[[Any], bool]"; expected "Callable[[MailMessage], TypeGuard[Never]]" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 1 to "filter" has incompatible type "Callable[[Any], bool]"; expected "Callable[[MailMessage], TypeGuard[Never]]" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "_get_title" of "MailAccountHandler" has incompatible type "type[att@480]"; expected "MailAttachment" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "_get_title" of "MailAccountHandler" has incompatible type "type[att@480]"; expected "MailAttachment" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "_get_title" of "MailAccountHandler" has incompatible type "type[att@480]"; expected "MailAttachment" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Argument 2 to "assertIn" of "TestCase" has incompatible type "str | None"; expected "Iterable[Any] | Container[Any]" [arg-type] +src/paperless_mail/tests/test_mail.py:0: error: Dict entry 0 has incompatible type "str": "None"; expected "str": "str" [dict-item] +src/paperless_mail/tests/test_mail.py:0: error: Dict entry 0 has incompatible type "str": "int"; expected "str": "str" [dict-item] +src/paperless_mail/tests/test_mail.py:0: error: First argument to namedtuple() should be "att", not "Attachment" [name-match] +src/paperless_mail/tests/test_mail.py:0: error: First argument to namedtuple() should be "message", not "MailMessage" [name-match] +src/paperless_mail/tests/test_mail.py:0: error: First argument to namedtuple() should be "message", not "MailMessage" [name-match] +src/paperless_mail/tests/test_mail.py:0: error: First argument to namedtuple() should be "message", not "MailMessage" [name-match] +src/paperless_mail/tests/test_mail.py:0: error: First argument to namedtuple() should be "message2", not "MailMessage" [name-match] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[MailMessage]", variable has type "list[MailMessage]") [assignment] +src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[MailMessage]", variable has type "list[MailMessage]") [assignment] +src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[MailMessage]", variable has type "list[MailMessage]") [assignment] +src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[MailMessage]", variable has type "list[MailMessage]") [assignment] +src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[MailMessage]", variable has type "list[MailMessage]") [assignment] +src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[MailMessage]", variable has type "list[MailMessage]") [assignment] +src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[Never]", variable has type "list[MailMessage]") [assignment] +src/paperless_mail/tests/test_mail.py:0: error: Incompatible types in assignment (expression has type "filter[Never]", variable has type "list[MailMessage]") [assignment] +src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | None" has no attribute "id" [union-attr] +src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | None" has no attribute "id" [union-attr] +src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | None" has no attribute "match" [union-attr] +src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | None" has no attribute "matching_algorithm" [union-attr] +src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | None" has no attribute "name" [union-attr] +src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | None" has no attribute "name" [union-attr] +src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "Correspondent | None" has no attribute "name" [union-attr] +src/paperless_mail/tests/test_mail.py:0: error: Item "None" of "MailRule | None" has no attribute "name" [union-attr] +src/paperless_mail/tests/test_mail.py:0: error: Missing type parameters for generic type "AbstractContextManager" [type-arg] +src/paperless_mail/tests/test_mail.py:0: error: Module "django.utils.timezone" does not explicitly export attribute "datetime" [attr-defined] +src/paperless_mail/tests/test_mail_oauth.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "url" [attr-defined] +src/paperless_mail/tests/test_mail_oauth.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "url" [attr-defined] +src/paperless_mail/tests/test_mail_oauth.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "url" [attr-defined] +src/paperless_mail/tests/test_mail_oauth.py:0: error: "_MonkeyPatchedWSGIResponse" has no attribute "url" [attr-defined] +src/paperless_mail/tests/test_mail_oauth.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail_oauth.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail_oauth.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_mail_oauth.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_mail/tests/test_parsers.py:0: error: Argument 1 to "extract_metadata" of "MailDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_mail/tests/test_parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_parsers.py:0: error: Item "None" of "Request | None" has no attribute "url" [union-attr] +src/paperless_mail/tests/test_parsers.py:0: error: Item "None" of "Request | None" has no attribute "url" [union-attr] +src/paperless_mail/tests/test_parsers_live.py:0: error: List item 0 has incompatible type "str | None"; expected "str | bytes | PathLike[str] | PathLike[bytes]" [list-item] +src/paperless_mail/tests/test_preprocessor.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] +src/paperless_mail/tests/test_preprocessor.py:0: error: "Message[str, str]" has no attribute "_headers"; maybe "add_header"? [attr-defined] +src/paperless_mail/tests/test_preprocessor.py:0: error: "TestMailMessageGpgDecryptor" has no attribute "messageEncryptor" [attr-defined] +src/paperless_mail/tests/test_preprocessor.py:0: error: "TestMailMessageGpgDecryptor" has no attribute "messageEncryptor" [attr-defined] +src/paperless_mail/tests/test_preprocessor.py:0: error: "TestMailMessageGpgDecryptor" has no attribute "messageEncryptor" [attr-defined] +src/paperless_mail/tests/test_preprocessor.py:0: error: "TestMailMessageGpgDecryptor" has no attribute "messageEncryptor" [attr-defined] +src/paperless_mail/tests/test_preprocessor.py:0: error: "TestMailMessageGpgDecryptor" has no attribute "messageEncryptor" [attr-defined] +src/paperless_mail/tests/test_preprocessor.py:0: error: "type[TestMailMessageGpgDecryptor]" has no attribute "messageEncryptor" [attr-defined] +src/paperless_mail/tests/test_preprocessor.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/tests/test_preprocessor.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_preprocessor.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/tests/test_preprocessor.py:0: error: Skipping analyzing "gnupg": module is installed, but missing library stubs or py.typed marker [import-untyped] +src/paperless_mail/views.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_mail/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/views.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_mail/views.py:0: error: Incompatible types in assignment (expression has type "tuple[type[IsAuthenticated]]", variable has type "tuple[type[IsAuthenticated], type[PaperlessObjectPermissions]]") [assignment] +src/paperless_mail/views.py:0: error: Missing type parameters for generic type "GenericAPIView" [type-arg] +src/paperless_mail/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/paperless_mail/views.py:0: error: Missing type parameters for generic type "ModelViewSet" [type-arg] +src/paperless_mail/views.py:0: error: Missing type parameters for generic type "ReadOnlyModelViewSet" [type-arg] +src/paperless_remote/checks.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_remote/parsers.py:0: error: "None" has no attribute "open" [attr-defined] +src/paperless_remote/parsers.py:0: error: Argument "engine" to "RemoteEngineConfig" has incompatible type "str | None"; expected "str" [arg-type] +src/paperless_remote/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_remote/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_remote/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_remote/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_remote/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] +src/paperless_remote/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] +src/paperless_remote/parsers.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] +src/paperless_remote/parsers.py:0: error: Return type "RemoteEngineConfig" of "get_settings" incompatible with return type "OcrConfig" in supertype "paperless_tesseract.parsers.RasterisedDocumentParser" [override] +src/paperless_remote/signals.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_remote/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_remote/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_remote/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_remote/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_remote/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/checks.py:0: error: Argument 1 to "append" of "list" has incompatible type "Error"; expected "Warning" [arg-type] +src/paperless_tesseract/checks.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_tesseract/checks.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tesseract/checks.py:0: error: List item 0 has incompatible type "str | None"; expected "str | bytes | PathLike[str] | PathLike[bytes]" [list-item] +src/paperless_tesseract/parsers.py:0: error: Argument "logger" to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] +src/paperless_tesseract/parsers.py:0: error: Argument "logger" to "run_subprocess" has incompatible type "LoggerAdapter[Logger]"; expected "Logger | None" [arg-type] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "None", variable has type "str") [assignment] +src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "Path", variable has type "None") [assignment] +src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] +src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] +src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] +src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] +src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] +src/paperless_tesseract/parsers.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] +src/paperless_tesseract/parsers.py:0: error: List item 4 has incompatible type "Path"; expected "str" [list-item] +src/paperless_tesseract/parsers.py:0: error: List item 5 has incompatible type "Path"; expected "str" [list-item] +src/paperless_tesseract/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tesseract/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tesseract/tests/test_checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/tests/test_checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/tests/test_checks.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "assertIsFile" of "FileSystemAssertsMixin" has incompatible type "None"; expected "PathLike[Any] | str" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Argument 1 to "parse" of "RasterisedDocumentParser" has incompatible type "str"; expected "Path" [arg-type] +src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/tests/test_parser.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tesseract/tests/test_parser.py:0: error: Item "None" of "str | None" has no attribute "strip" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "color_conversion_strategy" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "deskew" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "language" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "max_image_pixels" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "mode" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "output_type" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "pages" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "save" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "unpaper_clean" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "unpaper_clean" [union-attr] +src/paperless_tesseract/tests/test_parser_custom_settings.py:0: error: Item "None" of "ApplicationConfiguration | None" has no attribute "user_args" [union-attr] +src/paperless_text/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_text/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_text/parsers.py:0: error: Incompatible types in assignment (expression has type "str", variable has type "None") [assignment] +src/paperless_text/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_text/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tika/parsers.py:0: error: Argument 1 to "make_thumbnail_from_pdf" has incompatible type "None"; expected "Path" [arg-type] +src/paperless_tika/parsers.py:0: error: Function is missing a return type annotation [no-untyped-def] +src/paperless_tika/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tika/parsers.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tika/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tika/parsers.py:0: error: Function is missing a type annotation for one or more arguments [no-untyped-def] +src/paperless_tika/parsers.py:0: error: Incompatible types in assignment (expression has type "str | None", variable has type "None") [assignment] +src/paperless_tika/signals.py:0: error: Function is missing a type annotation [no-untyped-def] +src/paperless_tika/signals.py:0: error: Function is missing a type annotation [no-untyped-def] diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 84dda4382..54afde612 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,7 @@ # This file configures pre-commit hooks. # See https://pre-commit.com/ for general information # See https://pre-commit.com/hooks.html for a listing of possible hooks +# We actually run via https://github.com/j178/prek which is compatible repos: # General hooks - repo: https://github.com/pre-commit/pre-commit-hooks @@ -37,7 +38,7 @@ repos: - json # See https://github.com/prettier/prettier/issues/15742 for the fork reason - repo: https://github.com/rbubley/mirrors-prettier - rev: 'v3.6.2' + rev: 'v3.8.1' hooks: - id: prettier types_or: @@ -49,26 +50,26 @@ repos: - 'prettier-plugin-organize-imports@4.1.0' # Python hooks - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.13.0 + rev: v0.15.0 hooks: - id: ruff-check - id: ruff-format - repo: https://github.com/tox-dev/pyproject-fmt - rev: "v2.6.0" + rev: "v2.12.1" hooks: - id: pyproject-fmt # Dockerfile hooks - repo: https://github.com/AleksaC/hadolint-py - rev: v2.12.1b3 + rev: v2.14.0 hooks: - id: hadolint # Shell script hooks - repo: https://github.com/lovesegfault/beautysh - rev: v6.2.1 + rev: v6.4.2 hooks: - id: beautysh - additional_dependencies: - - setuptools + types: [file] + files: (\.sh$|/run$|/finish$) args: - "--tab" - repo: https://github.com/shellcheck-py/shellcheck-py @@ -76,7 +77,9 @@ repos: hooks: - id: shellcheck - repo: https://github.com/google/yamlfmt - rev: v0.17.2 + rev: v0.21.0 hooks: - id: yamlfmt exclude: "^src-ui/pnpm-lock.yaml" + types: + - yaml diff --git a/.pyrefly-baseline.json b/.pyrefly-baseline.json new file mode 100644 index 000000000..da084db22 --- /dev/null +++ b/.pyrefly-baseline.json @@ -0,0 +1,17368 @@ +{ + "errors": [ + { + "line": 94, + "column": 5, + "stop_line": 94, + "stop_column": 31, + "path": "src/documents/admin.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FunctionType` has no attribute `short_description`", + "concise_description": "Object of class `FunctionType` has no attribute `short_description`", + "severity": "error" + }, + { + "line": 245, + "column": 27, + "stop_line": 245, + "stop_column": 35, + "path": "src/documents/admin.py", + "code": -2, + "name": "unbound-name", + "description": "`LogEntry` may be uninitialized", + "concise_description": "`LogEntry` may be uninitialized", + "severity": "error" + }, + { + "line": 246, + "column": 25, + "stop_line": 246, + "stop_column": 33, + "path": "src/documents/admin.py", + "code": -2, + "name": "unbound-name", + "description": "`LogEntry` may be uninitialized", + "concise_description": "`LogEntry` may be uninitialized", + "severity": "error" + }, + { + "line": 239, + "column": 16, + "stop_line": 239, + "stop_column": 24, + "path": "src/documents/barcodes.py", + "code": -2, + "name": "missing-import", + "description": "Cannot find module `zxingcpp`\n Looked in these locations (from config in `/home/trenton/projects/paperless-ngx/pyproject.toml`):\n Search path (from config file): [\"/home/trenton/projects/paperless-ngx/src\"]\n Import root (inferred from project layout): \"/home/trenton/projects/paperless-ngx/src\"\n Site package path queried from interpreter: [\"/home/trenton/.local/share/uv/python/cpython-3.13.4-linux-x86_64-gnu/lib/python3.13\", \"/home/trenton/.local/share/uv/python/cpython-3.13.4-linux-x86_64-gnu/lib/python3.13/lib-dynload\", \"/home/trenton/projects/paperless-ngx/.venv/lib/python3.13/site-packages\"]", + "concise_description": "Cannot find module `zxingcpp`", + "severity": "error" + }, + { + "line": 323, + "column": 38, + "stop_line": 323, + "stop_column": 51, + "path": "src/documents/barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Image` has no attribute `filename`", + "concise_description": "Object of class `Image` has no attribute `filename`", + "severity": "error" + }, + { + "line": 77, + "column": 9, + "stop_line": 77, + "stop_column": 21, + "path": "src/documents/bulk_download.py", + "code": -2, + "name": "bad-override", + "description": "Class member `OriginalsOnlyStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner\n `OriginalsOnlyStrategy.add_document` has type `BoundMethod[OriginalsOnlyStrategy, (self: OriginalsOnlyStrategy, doc: Document) -> None]`, which is not assignable to `BoundMethod[OriginalsOnlyStrategy, (self: OriginalsOnlyStrategy, doc: Document) -> NoReturn]`, the type of `BulkArchiveStrategy.add_document`", + "concise_description": "Class member `OriginalsOnlyStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner", + "severity": "error" + }, + { + "line": 82, + "column": 9, + "stop_line": 82, + "stop_column": 21, + "path": "src/documents/bulk_download.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ArchiveOnlyStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner\n `ArchiveOnlyStrategy.add_document` has type `BoundMethod[ArchiveOnlyStrategy, (self: ArchiveOnlyStrategy, doc: Document) -> None]`, which is not assignable to `BoundMethod[ArchiveOnlyStrategy, (self: ArchiveOnlyStrategy, doc: Document) -> NoReturn]`, the type of `BulkArchiveStrategy.add_document`", + "concise_description": "Class member `ArchiveOnlyStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner", + "severity": "error" + }, + { + "line": 95, + "column": 9, + "stop_line": 95, + "stop_column": 21, + "path": "src/documents/bulk_download.py", + "code": -2, + "name": "bad-override", + "description": "Class member `OriginalAndArchiveStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner\n `OriginalAndArchiveStrategy.add_document` has type `BoundMethod[OriginalAndArchiveStrategy, (self: OriginalAndArchiveStrategy, doc: Document) -> None]`, which is not assignable to `BoundMethod[OriginalAndArchiveStrategy, (self: OriginalAndArchiveStrategy, doc: Document) -> NoReturn]`, the type of `BulkArchiveStrategy.add_document`", + "concise_description": "Class member `OriginalAndArchiveStrategy.add_document` overrides parent class `BulkArchiveStrategy` in an inconsistent manner", + "severity": "error" + }, + { + "line": 200, + "column": 16, + "stop_line": 200, + "stop_column": 23, + "path": "src/documents/bulk_edit.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `Literal['ERROR']` is not assignable to declared return type `Literal['OK']`", + "concise_description": "Returned type `Literal['ERROR']` is not assignable to declared return type `Literal['OK']`", + "severity": "error" + }, + { + "line": 214, + "column": 9, + "stop_line": 216, + "stop_column": 60, + "path": "src/documents/bulk_edit.py", + "code": -2, + "name": "bad-assignment", + "description": "`dict_items[Unknown, Unknown] | list[tuple[int, None]]` is not assignable to variable `add_custom_fields` with type `dict[Unknown, Unknown] | list[int]`", + "concise_description": "`dict_items[Unknown, Unknown] | list[tuple[int, None]]` is not assignable to variable `add_custom_fields` with type `dict[Unknown, Unknown] | list[int]`", + "severity": "error" + }, + { + "line": 220, + "column": 32, + "stop_line": 220, + "stop_column": 40, + "path": "src/documents/bulk_edit.py", + "code": -2, + "name": "not-iterable", + "description": "Type `int` is not iterable", + "concise_description": "Type `int` is not iterable", + "severity": "error" + }, + { + "line": 222, + "column": 9, + "stop_line": 222, + "stop_column": 24, + "path": "src/documents/bulk_edit.py", + "code": -2, + "name": "not-iterable", + "description": "Type `int` is not iterable", + "concise_description": "Type `int` is not iterable", + "severity": "error" + }, + { + "line": 228, + "column": 21, + "stop_line": 228, + "stop_column": 43, + "path": "src/documents/bulk_edit.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `dict[CustomField.FieldDataType, str]`\n Argument `str` is not assignable to parameter `key` with type `CustomField.FieldDataType` in function `dict.__getitem__`", + "concise_description": "Cannot index into `dict[CustomField.FieldDataType, str]`", + "severity": "error" + }, + { + "line": 264, + "column": 5, + "stop_line": 267, + "stop_column": 18, + "path": "src/documents/bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `QuerySet` has no attribute `hard_delete`", + "concise_description": "Object of class `QuerySet` has no attribute `hard_delete`", + "severity": "error" + }, + { + "line": 536, + "column": 33, + "stop_line": 536, + "stop_column": 63, + "path": "src/documents/bulk_edit.py", + "code": -2, + "name": "missing-argument", + "description": "Missing argument `p` in function `pikepdf._core.PageList.remove`", + "concise_description": "Missing argument `p` in function `pikepdf._core.PageList.remove`", + "severity": "error" + }, + { + "line": 772, + "column": 13, + "stop_line": 772, + "stop_column": 64, + "path": "src/documents/bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `append`", + "concise_description": "Object of class `NoneType` has no attribute `append`", + "severity": "error" + }, + { + "line": 180, + "column": 25, + "stop_line": 180, + "stop_column": 55, + "path": "src/documents/caching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `bytes | None` is not assignable to parameter `data` with type `Buffer` in function `binascii.hexlify`\n Protocol `Buffer` requires attribute `__buffer__`", + "concise_description": "Argument `bytes | None` is not assignable to parameter `data` with type `Buffer` in function `binascii.hexlify`", + "severity": "error" + }, + { + "line": 27, + "column": 1, + "stop_line": 27, + "stop_column": 12, + "path": "src/documents/checks.py", + "code": -2, + "name": "bad-specialization", + "description": "`(app_configs: Unknown, **kwargs: Unknown) -> list[django.core.checks.messages.Warning | builtins.Warning] | list[Unknown]` is not assignable to upper bound `_CheckCallable` of type variable `_C`", + "concise_description": "`(app_configs: Unknown, **kwargs: Unknown) -> list[django.core.checks.messages.Warning | builtins.Warning] | list[Unknown]` is not assignable to upper bound `_CheckCallable` of type variable `_C`", + "severity": "error" + }, + { + "line": 37, + "column": 21, + "stop_line": 37, + "stop_column": 25, + "path": "src/documents/checks.py", + "code": -2, + "name": "unexpected-keyword", + "description": "Unexpected keyword argument `hint` in function `BaseException.__init__`", + "concise_description": "Unexpected keyword argument `hint` in function `BaseException.__init__`", + "severity": "error" + }, + { + "line": 131, + "column": 40, + "stop_line": 131, + "stop_column": 66, + "path": "src/documents/classifier.py", + "code": -2, + "name": "missing-module-attribute", + "description": "Could not import `InconsistentVersionWarning` from `sklearn.exceptions`", + "concise_description": "Could not import `InconsistentVersionWarning` from `sklearn.exceptions`", + "severity": "error" + }, + { + "line": 307, + "column": 36, + "stop_line": 309, + "stop_column": 10, + "path": "src/documents/classifier.py", + "code": -2, + "name": "bad-assignment", + "description": "`ndarray[tuple[Any, ...], dtype[Any]] | spmatrix` is not assignable to `ndarray[tuple[Any, ...], dtype[Any]]`", + "concise_description": "`ndarray[tuple[Any, ...], dtype[Any]] | spmatrix` is not assignable to `ndarray[tuple[Any, ...], dtype[Any]]`", + "severity": "error" + }, + { + "line": 314, + "column": 44, + "stop_line": 314, + "stop_column": 48, + "path": "src/documents/classifier.py", + "code": -2, + "name": "bad-assignment", + "description": "`None` is not assignable to attribute `stop_words_` with type `set[Unknown]`", + "concise_description": "`None` is not assignable to attribute `stop_words_` with type `set[Unknown]`", + "severity": "error" + }, + { + "line": 327, + "column": 51, + "stop_line": 329, + "stop_column": 24, + "path": "src/documents/classifier.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `spmatrix` has no attribute `ravel`", + "concise_description": "Object of class `spmatrix` has no attribute `ravel`", + "severity": "error" + }, + { + "line": 332, + "column": 42, + "stop_line": 332, + "stop_column": 88, + "path": "src/documents/classifier.py", + "code": -2, + "name": "bad-assignment", + "description": "`ndarray[tuple[Any, ...], dtype[Any]] | spmatrix` is not assignable to variable `labels_tags_vectorized` with type `ndarray[tuple[Any, ...], dtype[Any]]`", + "concise_description": "`ndarray[tuple[Any, ...], dtype[Any]] | spmatrix` is not assignable to variable `labels_tags_vectorized` with type `ndarray[tuple[Any, ...], dtype[Any]]`", + "severity": "error" + }, + { + "line": 424, + "column": 18, + "stop_line": 424, + "stop_column": 42, + "path": "src/documents/classifier.py", + "code": -2, + "name": "not-iterable", + "description": "`in` is not supported between `str` and `None`", + "concise_description": "`in` is not supported between `str` and `None`", + "severity": "error" + }, + { + "line": 430, + "column": 26, + "stop_line": 430, + "stop_column": 44, + "path": "src/documents/classifier.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `stem`", + "concise_description": "Object of class `NoneType` has no attribute `stem`", + "severity": "error" + }, + { + "line": 487, + "column": 22, + "stop_line": 487, + "stop_column": 52, + "path": "src/documents/classifier.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `transform`", + "concise_description": "Object of class `NoneType` has no attribute `transform`", + "severity": "error" + }, + { + "line": 522, + "column": 24, + "stop_line": 522, + "stop_column": 61, + "path": "src/documents/classifier.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `inverse_transform`", + "concise_description": "Object of class `NoneType` has no attribute `inverse_transform`", + "severity": "error" + }, + { + "line": 79, + "column": 5, + "stop_line": 79, + "stop_column": 16, + "path": "src/documents/conditionals.py", + "code": -2, + "name": "unreachable", + "description": "This `return` statement is unreachable", + "concise_description": "This `return` statement is unreachable", + "severity": "error" + }, + { + "line": 93, + "column": 5, + "stop_line": 93, + "stop_column": 16, + "path": "src/documents/conditionals.py", + "code": -2, + "name": "unreachable", + "description": "This `return` statement is unreachable", + "concise_description": "This `return` statement is unreachable", + "severity": "error" + }, + { + "line": 109, + "column": 5, + "stop_line": 109, + "stop_column": 16, + "path": "src/documents/conditionals.py", + "code": -2, + "name": "unreachable", + "description": "This `return` statement is unreachable", + "concise_description": "This `return` statement is unreachable", + "severity": "error" + }, + { + "line": 122, + "column": 5, + "stop_line": 122, + "stop_column": 16, + "path": "src/documents/conditionals.py", + "code": -2, + "name": "unreachable", + "description": "This `return` statement is unreachable", + "concise_description": "This `return` statement is unreachable", + "severity": "error" + }, + { + "line": 68, + "column": 9, + "stop_line": 68, + "stop_column": 23, + "path": "src/documents/consumer.py", + "code": -2, + "name": "not-iterable", + "description": "Type `None` is not iterable", + "concise_description": "Type `None` is not iterable", + "severity": "error" + }, + { + "line": 113, + "column": 26, + "stop_line": 113, + "stop_column": 35, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-count", + "description": "Expected 0 positional arguments, got 5 in function `object.__init__`", + "concise_description": "Expected 0 positional arguments, got 5 in function `object.__init__`", + "severity": "error" + }, + { + "line": 115, + "column": 9, + "stop_line": 115, + "stop_column": 33, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `renew_logging_group`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `renew_logging_group`", + "severity": "error" + }, + { + "line": 117, + "column": 25, + "stop_line": 117, + "stop_column": 38, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "severity": "error" + }, + { + "line": 117, + "column": 51, + "stop_line": 117, + "stop_column": 65, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `input_doc`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `input_doc`", + "severity": "error" + }, + { + "line": 127, + "column": 9, + "stop_line": 127, + "stop_column": 24, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `status_mgr`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `status_mgr`", + "severity": "error" + }, + { + "line": 134, + "column": 29, + "stop_line": 134, + "stop_column": 42, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "severity": "error" + }, + { + "line": 134, + "column": 55, + "stop_line": 134, + "stop_column": 68, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "severity": "error" + }, + { + "line": 135, + "column": 36, + "stop_line": 135, + "stop_column": 49, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "severity": "error" + }, + { + "line": 136, + "column": 20, + "stop_line": 136, + "stop_column": 33, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "severity": "error" + }, + { + "line": 137, + "column": 37, + "stop_line": 137, + "stop_column": 50, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "severity": "error" + }, + { + "line": 138, + "column": 20, + "stop_line": 138, + "stop_column": 33, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `metadata`", + "severity": "error" + }, + { + "line": 150, + "column": 9, + "stop_line": 150, + "stop_column": 17, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumerPluginMixin` has no attribute `log`", + "concise_description": "Object of class `ConsumerPluginMixin` has no attribute `log`", + "severity": "error" + }, + { + "line": 196, + "column": 17, + "stop_line": 196, + "stop_column": 25, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 273, + "column": 17, + "stop_line": 273, + "stop_column": 25, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 321, + "column": 25, + "stop_line": 325, + "stop_column": 26, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 326, + "column": 32, + "stop_line": 326, + "stop_column": 40, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 436, + "column": 66, + "stop_line": 436, + "stop_column": 70, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `content` with type `str` in function `documents.plugins.date_parsing.base.DateParserPluginBase.parse`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `content` with type `str` in function `documents.plugins.date_parsing.base.DateParserPluginBase.parse`", + "severity": "error" + }, + { + "line": 481, + "column": 26, + "stop_line": 481, + "stop_column": 30, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `text` with type `str` in function `ConsumerPlugin._store`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `text` with type `str` in function `ConsumerPlugin._store`", + "severity": "error" + }, + { + "line": 523, + "column": 54, + "stop_line": 523, + "stop_column": 75, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "concise_description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "severity": "error" + }, + { + "line": 610, + "column": 13, + "stop_line": 610, + "stop_column": 31, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `correspondent_name` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "concise_description": "Argument `str | None` is not assignable to parameter `correspondent_name` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "severity": "error" + }, + { + "line": 611, + "column": 13, + "stop_line": 611, + "stop_column": 26, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `doc_type_name` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "concise_description": "Argument `str | None` is not assignable to parameter `doc_type_name` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "severity": "error" + }, + { + "line": 612, + "column": 13, + "stop_line": 612, + "stop_column": 27, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `owner_username` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "concise_description": "Argument `str | None` is not assignable to parameter `owner_username` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "severity": "error" + }, + { + "line": 731, + "column": 31, + "stop_line": 731, + "stop_column": 46, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `data_type` with type `CustomField.FieldDataType` in function `documents.models.CustomFieldInstance.get_value_field_name`", + "concise_description": "Argument `str` is not assignable to parameter `data_type` with type `CustomField.FieldDataType` in function `documents.models.CustomFieldInstance.get_value_field_name`", + "severity": "error" + }, + { + "line": 804, + "column": 21, + "stop_line": 804, + "stop_column": 36, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 805, + "column": 24, + "stop_line": 805, + "stop_column": 51, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `original_filename`", + "concise_description": "Object of class `NoneType` has no attribute `original_filename`", + "severity": "error" + }, + { + "line": 806, + "column": 30, + "stop_line": 806, + "stop_column": 48, + "path": "src/documents/consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `object | Unknown` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `object | Unknown` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 806, + "column": 58, + "stop_line": 806, + "stop_column": 76, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filename`", + "concise_description": "Object of class `NoneType` has no attribute `filename`", + "severity": "error" + }, + { + "line": 807, + "column": 28, + "stop_line": 807, + "stop_column": 40, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `pk`", + "concise_description": "Object of class `NoneType` has no attribute `pk`", + "severity": "error" + }, + { + "line": 814, + "column": 65, + "stop_line": 814, + "stop_column": 77, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `pk`", + "concise_description": "Object of class `NoneType` has no attribute `pk`", + "severity": "error" + }, + { + "line": 891, + "column": 16, + "stop_line": 891, + "stop_column": 51, + "path": "src/documents/consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `deleted_at`", + "concise_description": "Object of class `NoneType` has no attribute `deleted_at`", + "severity": "error" + }, + { + "line": 31, + "column": 13, + "stop_line": 37, + "stop_column": 14, + "path": "src/documents/converters.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 46, + "column": 24, + "stop_line": 46, + "stop_column": 49, + "path": "src/documents/converters.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `bytes | None` is not assignable to parameter `buffer` with type `Buffer` in function `_io.BufferedWriter.write`\n Protocol `Buffer` requires attribute `__buffer__`", + "concise_description": "Argument `bytes | None` is not assignable to parameter `buffer` with type `Buffer` in function `_io.BufferedWriter.write`", + "severity": "error" + }, + { + "line": 109, + "column": 13, + "stop_line": 112, + "stop_column": 26, + "path": "src/documents/data_models.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `list` has no attribute `values_list`", + "concise_description": "Object of class `list` has no attribute `values_list`", + "severity": "error" + }, + { + "line": 115, + "column": 13, + "stop_line": 118, + "stop_column": 26, + "path": "src/documents/data_models.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `list` has no attribute `values_list`", + "concise_description": "Object of class `list` has no attribute `values_list`", + "severity": "error" + }, + { + "line": 131, + "column": 26, + "stop_line": 131, + "stop_column": 43, + "path": "src/documents/data_models.py", + "code": -2, + "name": "not-iterable", + "description": "Type `Group` is not iterable", + "concise_description": "Type `Group` is not iterable", + "severity": "error" + }, + { + "line": 132, + "column": 35, + "stop_line": 132, + "stop_column": 59, + "path": "src/documents/data_models.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `Group`\n Object of class `Group` has no attribute `__getitem__`", + "concise_description": "Cannot index into `Group`", + "severity": "error" + }, + { + "line": 136, + "column": 26, + "stop_line": 136, + "stop_column": 43, + "path": "src/documents/data_models.py", + "code": -2, + "name": "not-iterable", + "description": "Type `Group` is not iterable", + "concise_description": "Type `Group` is not iterable", + "severity": "error" + }, + { + "line": 137, + "column": 37, + "stop_line": 137, + "stop_column": 61, + "path": "src/documents/data_models.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `Group`\n Object of class `Group` has no attribute `__getitem__`", + "concise_description": "Cannot index into `Group`", + "severity": "error" + }, + { + "line": 165, + "column": 22, + "stop_line": 165, + "stop_column": 65, + "path": "src/documents/data_models.py", + "code": -2, + "name": "bad-assignment", + "description": "`None` is not assignable to `str`", + "concise_description": "`None` is not assignable to `str`", + "severity": "error" + }, + { + "line": 174, + "column": 51, + "stop_line": 174, + "stop_column": 61, + "path": "src/documents/filters.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SharedByUser` has no attribute `model`", + "concise_description": "Object of class `SharedByUser` has no attribute `model`", + "severity": "error" + }, + { + "line": 227, + "column": 31, + "stop_line": 227, + "stop_column": 51, + "path": "src/documents/filters.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get`", + "concise_description": "Object of class `NoneType` has no attribute `get`", + "severity": "error" + }, + { + "line": 259, + "column": 25, + "stop_line": 259, + "stop_column": 66, + "path": "src/documents/filters.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 286, + "column": 47, + "stop_line": 286, + "stop_column": 76, + "path": "src/documents/filters.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `dict[Unknown | None, Unknown]` is not assignable to parameter `detail` with type `ErrorDetail | Mapping[str, Unknown] | Sequence[Unknown] | _StrPromise | dict[str, Unknown] | list[Unknown] | str | None` in function `rest_framework.exceptions.APIException.__init__`", + "concise_description": "Argument `dict[Unknown | None, Unknown]` is not assignable to parameter `detail` with type `ErrorDetail | Mapping[str, Unknown] | Sequence[Unknown] | _StrPromise | dict[str, Unknown] | list[Unknown] | str | None` in function `rest_framework.exceptions.APIException.__init__`", + "severity": "error" + }, + { + "line": 295, + "column": 5, + "stop_line": 295, + "stop_column": 26, + "path": "src/documents/filters.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FunctionType` has no attribute `__signature__`", + "concise_description": "Object of class `FunctionType` has no attribute `__signature__`", + "severity": "error" + }, + { + "line": 600, + "column": 26, + "stop_line": 600, + "stop_column": 49, + "path": "src/documents/filters.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ForeignObjectRel` has no attribute `deconstruct`\nObject of class `GenericForeignKey` has no attribute `deconstruct`", + "concise_description": "Object of class `ForeignObjectRel` has no attribute `deconstruct`\nObject of class `GenericForeignKey` has no attribute `deconstruct`", + "severity": "error" + }, + { + "line": 603, + "column": 17, + "stop_line": 603, + "stop_column": 28, + "path": "src/documents/filters.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Field[Unknown, Unknown] | ForeignObjectRel | GenericForeignKey` is not assignable to parameter `model_field` with type `Field[Unknown, Unknown]` in function `rest_framework.serializers.ModelSerializer.build_standard_field`", + "concise_description": "Argument `Field[Unknown, Unknown] | ForeignObjectRel | GenericForeignKey` is not assignable to parameter `model_field` with type `Field[Unknown, Unknown]` in function `rest_framework.serializers.ModelSerializer.build_standard_field`", + "severity": "error" + }, + { + "line": 660, + "column": 17, + "stop_line": 660, + "stop_column": 42, + "path": "src/documents/filters.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `set.__init__` called with arguments: (Any | None)\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", + "concise_description": "No matching overload found for function `set.__init__` called with arguments: (Any | None)", + "severity": "error" + }, + { + "line": 845, + "column": 9, + "stop_line": 845, + "stop_column": 24, + "path": "src/documents/filters.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ObjectOwnedOrGrantedPermissionsFilter.filter_queryset` overrides parent class `ObjectPermissionsFilter` in an inconsistent manner\n `ObjectOwnedOrGrantedPermissionsFilter.filter_queryset` has type `BoundMethod[ObjectOwnedOrGrantedPermissionsFilter, (self: ObjectOwnedOrGrantedPermissionsFilter, request: Unknown, queryset: Unknown, view: Unknown) -> type[Any]]`, which is not assignable to `BoundMethod[ObjectOwnedOrGrantedPermissionsFilter, (self: ObjectOwnedOrGrantedPermissionsFilter, request: Unknown, queryset: Unknown, view: Unknown) -> QuerySet[Unknown, Unknown]]`, the type of `ObjectPermissionsFilter.filter_queryset`", + "concise_description": "Class member `ObjectOwnedOrGrantedPermissionsFilter.filter_queryset` overrides parent class `ObjectPermissionsFilter` in an inconsistent manner", + "severity": "error" + }, + { + "line": 858, + "column": 9, + "stop_line": 858, + "stop_column": 24, + "path": "src/documents/filters.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ObjectOwnedPermissionsFilter.filter_queryset` overrides parent class `ObjectPermissionsFilter` in an inconsistent manner\n `ObjectOwnedPermissionsFilter.filter_queryset` has type `BoundMethod[ObjectOwnedPermissionsFilter, (self: ObjectOwnedPermissionsFilter, request: Unknown, queryset: Unknown, view: Unknown) -> type[Any] | Unknown]`, which is not assignable to `BoundMethod[ObjectOwnedPermissionsFilter, (self: ObjectOwnedPermissionsFilter, request: Unknown, queryset: Unknown, view: Unknown) -> QuerySet[Unknown, Unknown]]`, the type of `ObjectPermissionsFilter.filter_queryset`", + "concise_description": "Class member `ObjectOwnedPermissionsFilter.filter_queryset` overrides parent class `ObjectPermissionsFilter` in an inconsistent manner", + "severity": "error" + }, + { + "line": 928, + "column": 25, + "stop_line": 928, + "stop_column": 45, + "path": "src/documents/filters.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get`", + "concise_description": "Object of class `NoneType` has no attribute `get`", + "severity": "error" + }, + { + "line": 138, + "column": 1, + "stop_line": 138, + "stop_column": 16, + "path": "src/documents/index.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `(*, optimize: bool | Unknown = False) -> AsyncWriter` is not assignable to parameter `func` with type `(*, optimize: bool | Unknown = False) -> Iterator[@_]` in function `contextlib.contextmanager`\n Protocol `Iterator` requires attribute `__next__`", + "concise_description": "Argument `(*, optimize: bool | Unknown = False) -> AsyncWriter` is not assignable to parameter `func` with type `(*, optimize: bool | Unknown = False) -> Iterator[@_]` in function `contextlib.contextmanager`", + "severity": "error" + }, + { + "line": 139, + "column": 45, + "stop_line": 139, + "stop_column": 56, + "path": "src/documents/index.py", + "code": -2, + "name": "bad-return", + "description": "Generator function should return `Generator`", + "concise_description": "Generator function should return `Generator`", + "severity": "error" + }, + { + "line": 151, + "column": 1, + "stop_line": 151, + "stop_column": 16, + "path": "src/documents/index.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `() -> Searcher` is not assignable to parameter `func` with type `() -> Iterator[@_]` in function `contextlib.contextmanager`\n Protocol `Iterator` requires attribute `__next__`", + "concise_description": "Argument `() -> Searcher` is not assignable to parameter `func` with type `() -> Iterator[@_]` in function `contextlib.contextmanager`", + "severity": "error" + }, + { + "line": 152, + "column": 30, + "stop_line": 152, + "stop_column": 38, + "path": "src/documents/index.py", + "code": -2, + "name": "bad-return", + "description": "Generator function should return `Generator`", + "concise_description": "Generator function should return `Generator`", + "severity": "error" + }, + { + "line": 187, + "column": 37, + "stop_line": 187, + "stop_column": 41, + "path": "src/documents/index.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `str` has no attribute `id`", + "concise_description": "Object of class `str` has no attribute `id`", + "severity": "error" + }, + { + "line": 211, + "column": 32, + "stop_line": 211, + "stop_column": 49, + "path": "src/documents/index.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 257, + "column": 9, + "stop_line": 257, + "stop_column": 21, + "path": "src/documents/index.py", + "code": -2, + "name": "bad-param-name-override", + "description": "Class member `MappedDocIdSet.__contains__` overrides parent class `DocIdSet` in an inconsistent manner\n Got parameter name `docnum`, expected `i`", + "concise_description": "Class member `MappedDocIdSet.__contains__` overrides parent class `DocIdSet` in an inconsistent manner", + "severity": "error" + }, + { + "line": 258, + "column": 50, + "stop_line": 258, + "stop_column": 58, + "path": "src/documents/index.py", + "code": -2, + "name": "missing-argument", + "description": "Missing argument `docnum` in function `whoosh.reading.IndexReader.stored_fields`", + "concise_description": "Missing argument `docnum` in function `whoosh.reading.IndexReader.stored_fields`", + "severity": "error" + }, + { + "line": 344, + "column": 36, + "stop_line": 344, + "stop_column": 52, + "path": "src/documents/index.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `list` has no attribute `score`", + "concise_description": "Object of class `list` has no attribute `score`", + "severity": "error" + }, + { + "line": 380, + "column": 20, + "stop_line": 380, + "stop_column": 43, + "path": "src/documents/index.py", + "code": -2, + "name": "bad-assignment", + "description": "`ManualResultsPage` is not assignable to variable `page` with type `ResultsPage`", + "concise_description": "`ManualResultsPage` is not assignable to variable `page` with type `ResultsPage`", + "severity": "error" + }, + { + "line": 447, + "column": 9, + "stop_line": 447, + "stop_column": 19, + "path": "src/documents/index.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DelayedFullTextQuery._get_query` overrides parent class `DelayedQuery` in an inconsistent manner\n `DelayedFullTextQuery._get_query` has type `BoundMethod[DelayedFullTextQuery, (self: DelayedFullTextQuery) -> tuple[Unknown, ...]]`, which is not assignable to `BoundMethod[DelayedFullTextQuery, (self: DelayedFullTextQuery) -> Never]`, the type of `DelayedQuery._get_query`", + "concise_description": "Class member `DelayedFullTextQuery._get_query` overrides parent class `DelayedQuery` in an inconsistent manner", + "severity": "error" + }, + { + "line": 485, + "column": 9, + "stop_line": 485, + "stop_column": 19, + "path": "src/documents/index.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DelayedMoreLikeThisQuery._get_query` overrides parent class `DelayedQuery` in an inconsistent manner\n `DelayedMoreLikeThisQuery._get_query` has type `BoundMethod[DelayedMoreLikeThisQuery, (self: DelayedMoreLikeThisQuery) -> tuple[Unknown, ...]]`, which is not assignable to `BoundMethod[DelayedMoreLikeThisQuery, (self: DelayedMoreLikeThisQuery) -> Never]`, the type of `DelayedQuery._get_query`", + "concise_description": "Class member `DelayedMoreLikeThisQuery._get_query` overrides parent class `DelayedQuery` in an inconsistent manner", + "severity": "error" + }, + { + "line": 637, + "column": 21, + "stop_line": 637, + "stop_column": 26, + "path": "src/documents/index.py", + "code": -2, + "name": "unbound-name", + "description": "`start` may be uninitialized", + "concise_description": "`start` may be uninitialized", + "severity": "error" + }, + { + "line": 638, + "column": 19, + "stop_line": 638, + "stop_column": 22, + "path": "src/documents/index.py", + "code": -2, + "name": "unbound-name", + "description": "`end` may be uninitialized", + "concise_description": "`end` may be uninitialized", + "severity": "error" + }, + { + "line": 13, + "column": 31, + "stop_line": 13, + "stop_column": 48, + "path": "src/documents/loggers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `LoggingMixin` has no attribute `logging_name`", + "concise_description": "Object of class `LoggingMixin` has no attribute `logging_name`", + "severity": "error" + }, + { + "line": 35, + "column": 9, + "stop_line": 35, + "stop_column": 15, + "path": "src/documents/management/commands/convert_mariadb_uuid.py", + "code": -2, + "name": "bad-override", + "description": "Class member `Command.handle` overrides parent class `BaseCommand` in an inconsistent manner\n `Command.handle` has type `BoundMethod[Command, (self: Command, **options: Unknown) -> None]`, which is not assignable to `BoundMethod[Command, (self: Command, *args: Any, **options: Any) -> str | None]`, the type of `BaseCommand.handle`", + "concise_description": "Class member `Command.handle` overrides parent class `BaseCommand` in an inconsistent manner", + "severity": "error" + }, + { + "line": 426, + "column": 41, + "stop_line": 426, + "stop_column": 50, + "path": "src/documents/management/commands/document_exporter.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | str` is not assignable to parameter `element` with type `str` in function `set.add`", + "concise_description": "Argument `Path | str` is not assignable to parameter `element` with type `str` in function `set.add`", + "severity": "error" + }, + { + "line": 571, + "column": 32, + "stop_line": 571, + "stop_column": 60, + "path": "src/documents/management/commands/document_exporter.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['exporter_key'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", + "concise_description": "Cannot index into `str`", + "severity": "error" + }, + { + "line": 572, + "column": 32, + "stop_line": 572, + "stop_column": 54, + "path": "src/documents/management/commands/document_exporter.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['fields'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", + "concise_description": "Cannot index into `str`", + "severity": "error" + }, + { + "line": 104, + "column": 38, + "stop_line": 104, + "stop_column": 70, + "path": "src/documents/management/commands/document_fuzzy_match.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[tuple[int, int] | tuple[int, ...]]` is not assignable to parameter `*s` with type `Iterable[tuple[int, int]]` in function `set.update`", + "concise_description": "Argument `list[tuple[int, int] | tuple[int, ...]]` is not assignable to parameter `*s` with type `Iterable[tuple[int, int]]` in function `set.update`", + "severity": "error" + }, + { + "line": 237, + "column": 14, + "stop_line": 237, + "stop_column": 18, + "path": "src/documents/management/commands/document_importer.py", + "code": -2, + "name": "bad-override", + "description": "Class member `Command.salt` overrides parent class `CryptMixin` in an inconsistent manner\n `Command.salt` has type `str | None`, which is not consistent with `str` in `CryptMixin.salt` (the type of read-write attributes cannot be changed)", + "concise_description": "Class member `Command.salt` overrides parent class `CryptMixin` in an inconsistent manner", + "severity": "error" + }, + { + "line": 413, + "column": 50, + "stop_line": 413, + "stop_column": 71, + "path": "src/documents/management/commands/document_importer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "concise_description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "severity": "error" + }, + { + "line": 417, + "column": 62, + "stop_line": 417, + "stop_column": 83, + "path": "src/documents/management/commands/document_importer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `dest` with type `Path | str` in function `documents.utils.copy_file_with_basic_stats`", + "concise_description": "Argument `Path | None` is not assignable to parameter `dest` with type `Path | str` in function `documents.utils.copy_file_with_basic_stats`", + "severity": "error" + }, + { + "line": 432, + "column": 39, + "stop_line": 432, + "stop_column": 65, + "path": "src/documents/management/commands/document_importer.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['model_name'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", + "concise_description": "Cannot index into `str`", + "severity": "error" + }, + { + "line": 433, + "column": 37, + "stop_line": 433, + "stop_column": 59, + "path": "src/documents/management/commands/document_importer.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['fields'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", + "concise_description": "Cannot index into `str`", + "severity": "error" + }, + { + "line": 14, + "column": 9, + "stop_line": 14, + "stop_column": 19, + "path": "src/documents/management/commands/loaddata_stdin.py", + "code": -2, + "name": "bad-override", + "description": "Class member `Command.parse_name` overrides parent class `Command` in an inconsistent manner\n `Command.parse_name` has type `BoundMethod[Command, (self: Command, fixture_name: Unknown) -> tuple[Literal['-'], Literal['json'], Literal['stdin']] | None]`, which is not assignable to `BoundMethod[Command, (self: Command, fixture_name: str) -> tuple[str, str | None, str | None]]`, the type of `Command.parse_name`", + "concise_description": "Class member `Command.parse_name` overrides parent class `Command` in an inconsistent manner", + "severity": "error" + }, + { + "line": 15, + "column": 45, + "stop_line": 15, + "stop_column": 75, + "path": "src/documents/management/commands/loaddata_stdin.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str | None, tuple[(str, _ReadBinaryMode) -> BufferedReader[_BufferedReaderStream]]]`\n Argument `tuple[(x: str, y: _ReadBinaryMode) -> TextIO | Any, None]` is not assignable to parameter `value` with type `tuple[(str, _ReadBinaryMode) -> BufferedReader[_BufferedReaderStream]]` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str | None, tuple[(str, _ReadBinaryMode) -> BufferedReader[_BufferedReaderStream]]]`", + "severity": "error" + }, + { + "line": 19, + "column": 9, + "stop_line": 19, + "stop_column": 22, + "path": "src/documents/management/commands/loaddata_stdin.py", + "code": -2, + "name": "bad-override", + "description": "Class member `Command.find_fixtures` overrides parent class `Command` in an inconsistent manner\n `Command.find_fixtures` has type `BoundMethod[Command, (self: Command, fixture_label: Unknown) -> list[tuple[str, str | None, str | None]] | list[tuple[str, None, str]]]`, which is not assignable to `BoundMethod[Command, (self: Command, fixture_label: str) -> list[tuple[str, str | None, str | None]]]`, the type of `Command.find_fixtures`", + "concise_description": "Class member `Command.find_fixtures` overrides parent class `Command` in an inconsistent manner", + "severity": "error" + }, + { + "line": 33, + "column": 28, + "stop_line": 33, + "stop_column": 47, + "path": "src/documents/management/commands/mixins.py", + "code": -2, + "name": "unsupported-operation", + "description": "`//` is not supported between `None` and `Literal[4]`\n Argument `None` is not assignable to parameter `value` with type `int` in function `int.__rfloordiv__`", + "concise_description": "`//` is not supported between `None` and `Literal[4]`", + "severity": "error" + }, + { + "line": 94, + "column": 33, + "stop_line": 111, + "stop_column": 6, + "path": "src/documents/management/commands/mixins.py", + "code": -2, + "name": "bad-assignment", + "description": "`list[dict[str, list[str] | str]]` is not assignable to `CryptFields`", + "concise_description": "`list[dict[str, list[str] | str]]` is not assignable to `CryptFields`", + "severity": "error" + }, + { + "line": 19, + "column": 9, + "stop_line": 19, + "stop_column": 15, + "path": "src/documents/management/commands/prune_audit_logs.py", + "code": -2, + "name": "bad-override", + "description": "Class member `Command.handle` overrides parent class `BaseCommand` in an inconsistent manner\n `Command.handle` has type `BoundMethod[Command, (self: Command, **options: Unknown) -> None]`, which is not assignable to `BoundMethod[Command, (self: Command, *args: Any, **options: Any) -> str | None]`, the type of `BaseCommand.handle`", + "concise_description": "Class member `Command.handle` overrides parent class `BaseCommand` in an inconsistent manner", + "severity": "error" + }, + { + "line": 345, + "column": 24, + "stop_line": 348, + "stop_column": 10, + "path": "src/documents/matching.py", + "code": -2, + "name": "bad-specialization", + "description": "`Path` is not assignable to upper bound `bytes | str` of type variable `AnyStr`", + "concise_description": "`Path` is not assignable to upper bound `bytes | str` of type variable `AnyStr`", + "severity": "error" + }, + { + "line": 347, + "column": 13, + "stop_line": 347, + "stop_column": 32, + "path": "src/documents/matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `pat` with type `Path` in function `fnmatch.fnmatch`", + "concise_description": "Argument `str` is not assignable to parameter `pat` with type `Path` in function `fnmatch.fnmatch`", + "severity": "error" + }, + { + "line": 356, + "column": 12, + "stop_line": 356, + "stop_column": 37, + "path": "src/documents/matching.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `tuple[bool, Literal[''] | tuple[str]]` is not assignable to declared return type `tuple[bool, str]`", + "concise_description": "Returned type `tuple[bool, Literal[''] | tuple[str]]` is not assignable to declared return type `tuple[bool, str]`", + "severity": "error" + }, + { + "line": 370, + "column": 9, + "stop_line": 370, + "stop_column": 16, + "path": "src/documents/matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `WorkflowTrigger` is not assignable to parameter `matching_model` with type `MatchingModel` in function `matches`", + "concise_description": "Argument `WorkflowTrigger` is not assignable to parameter `matching_model` with type `MatchingModel` in function `matches`", + "severity": "error" + }, + { + "line": 395, + "column": 17, + "stop_line": 395, + "stop_column": 55, + "path": "src/documents/matching.py", + "code": -2, + "name": "unsupported-operation", + "description": "`&` is not supported between `None` and `set[Any]`\n Cannot find `__and__` or `__rand__`", + "concise_description": "`&` is not supported between `None` and `set[Any]`", + "severity": "error" + }, + { + "line": 405, + "column": 42, + "stop_line": 405, + "stop_column": 58, + "path": "src/documents/matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `set[Any] | None` is not assignable to parameter `s` with type `Iterable[Any]` in function `set.issubset`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `set[Any] | None` is not assignable to parameter `s` with type `Iterable[Any]` in function `set.issubset`", + "severity": "error" + }, + { + "line": 414, + "column": 12, + "stop_line": 414, + "stop_column": 47, + "path": "src/documents/matching.py", + "code": -2, + "name": "unsupported-operation", + "description": "`&` is not supported between `None` and `set[Any]`\n Cannot find `__and__` or `__rand__`", + "concise_description": "`&` is not supported between `None` and `set[Any]`", + "severity": "error" + }, + { + "line": 685, + "column": 21, + "stop_line": 685, + "stop_column": 29, + "path": "src/documents/matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `ConsumableDocument | Document` is not assignable to parameter `document` with type `ConsumableDocument` in function `consumable_document_matches_workflow`", + "concise_description": "Argument `ConsumableDocument | Document` is not assignable to parameter `document` with type `ConsumableDocument` in function `consumable_document_matches_workflow`", + "severity": "error" + }, + { + "line": 694, + "column": 21, + "stop_line": 694, + "stop_column": 29, + "path": "src/documents/matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `ConsumableDocument | Document` is not assignable to parameter `document` with type `Document` in function `existing_document_matches_workflow`", + "concise_description": "Argument `ConsumableDocument | Document` is not assignable to parameter `document` with type `Document` in function `existing_document_matches_workflow`", + "severity": "error" + }, + { + "line": 117, + "column": 11, + "stop_line": 117, + "stop_column": 15, + "path": "src/documents/models.py", + "code": -2, + "name": "inconsistent-inheritance", + "description": "Field `ordering` has inconsistent types inherited from multiple base classes\n Inherited types include:\n `tuple[Literal['name']]` from `Meta`\n `list[str]` from `Meta`", + "concise_description": "Field `ordering` has inconsistent types inherited from multiple base classes", + "severity": "error" + }, + { + "line": 372, + "column": 21, + "stop_line": 372, + "stop_column": 38, + "path": "src/documents/models.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 872, + "column": 9, + "stop_line": 872, + "stop_column": 15, + "path": "src/documents/models.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ShareLinkBundle.delete` overrides parent class `Model` in an inconsistent manner\n `ShareLinkBundle.delete` has type `BoundMethod[ShareLinkBundle, (self: ShareLinkBundle, using: Unknown | None = None, *, keep_parents: bool | Unknown = False) -> tuple[int, dict[str, int]]]`, which is not assignable to `BoundMethod[ShareLinkBundle, (self: ShareLinkBundle, using: Any | None = None, keep_parents: bool = False) -> tuple[int, dict[str, int]]]`, the type of `Model.delete`", + "concise_description": "Class member `ShareLinkBundle.delete` overrides parent class `Model` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1035, + "column": 31, + "stop_line": 1035, + "stop_column": 70, + "path": "src/documents/models.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 1059, + "column": 54, + "stop_line": 1059, + "stop_column": 74, + "path": "src/documents/models.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `data_type` with type `CustomField.FieldDataType` in function `CustomFieldInstance.get_value_field_name`", + "concise_description": "Argument `str` is not assignable to parameter `data_type` with type `CustomField.FieldDataType` in function `CustomFieldInstance.get_value_field_name`", + "severity": "error" + }, + { + "line": 1064, + "column": 5, + "stop_line": 1064, + "stop_column": 13, + "path": "src/documents/models.py", + "code": -2, + "name": "unbound-name", + "description": "`auditlog` may be uninitialized", + "concise_description": "`auditlog` may be uninitialized", + "severity": "error" + }, + { + "line": 1069, + "column": 5, + "stop_line": 1069, + "stop_column": 13, + "path": "src/documents/models.py", + "code": -2, + "name": "unbound-name", + "description": "`auditlog` may be uninitialized", + "concise_description": "`auditlog` may be uninitialized", + "severity": "error" + }, + { + "line": 1070, + "column": 5, + "stop_line": 1070, + "stop_column": 13, + "path": "src/documents/models.py", + "code": -2, + "name": "unbound-name", + "description": "`auditlog` may be uninitialized", + "concise_description": "`auditlog` may be uninitialized", + "severity": "error" + }, + { + "line": 1071, + "column": 5, + "stop_line": 1071, + "stop_column": 13, + "path": "src/documents/models.py", + "code": -2, + "name": "unbound-name", + "description": "`auditlog` may be uninitialized", + "concise_description": "`auditlog` may be uninitialized", + "severity": "error" + }, + { + "line": 1072, + "column": 5, + "stop_line": 1072, + "stop_column": 13, + "path": "src/documents/models.py", + "code": -2, + "name": "unbound-name", + "description": "`auditlog` may be uninitialized", + "concise_description": "`auditlog` may be uninitialized", + "severity": "error" + }, + { + "line": 1073, + "column": 5, + "stop_line": 1073, + "stop_column": 13, + "path": "src/documents/models.py", + "code": -2, + "name": "unbound-name", + "description": "`auditlog` may be uninitialized", + "concise_description": "`auditlog` may be uninitialized", + "severity": "error" + }, + { + "line": 1074, + "column": 5, + "stop_line": 1074, + "stop_column": 13, + "path": "src/documents/models.py", + "code": -2, + "name": "unbound-name", + "description": "`auditlog` may be uninitialized", + "concise_description": "`auditlog` may be uninitialized", + "severity": "error" + }, + { + "line": 71, + "column": 32, + "stop_line": 71, + "stop_column": 64, + "path": "src/documents/parsers.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['mime_types'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", + "concise_description": "Cannot index into `str`", + "severity": "error" + }, + { + "line": 71, + "column": 32, + "stop_line": 71, + "stop_column": 64, + "path": "src/documents/parsers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 99, + "column": 32, + "stop_line": 99, + "stop_column": 64, + "path": "src/documents/parsers.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['mime_types'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", + "concise_description": "Cannot index into `str`", + "severity": "error" + }, + { + "line": 99, + "column": 32, + "stop_line": 99, + "stop_column": 64, + "path": "src/documents/parsers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 121, + "column": 32, + "stop_line": 121, + "stop_column": 64, + "path": "src/documents/parsers.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['mime_types'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", + "concise_description": "Cannot index into `str`", + "severity": "error" + }, + { + "line": 121, + "column": 32, + "stop_line": 121, + "stop_column": 64, + "path": "src/documents/parsers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 202, + "column": 28, + "stop_line": 202, + "stop_column": 31, + "path": "src/documents/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[Path | str | Unknown]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `list[Path | str | Unknown]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 94, + "column": 42, + "stop_line": 94, + "stop_column": 64, + "path": "src/documents/permissions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `list` has no attribute `exists`", + "concise_description": "Object of class `list` has no attribute `exists`", + "severity": "error" + }, + { + "line": 95, + "column": 35, + "stop_line": 95, + "stop_column": 58, + "path": "src/documents/permissions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `list` has no attribute `exclude`", + "concise_description": "Object of class `list` has no attribute `exclude`", + "severity": "error" + }, + { + "line": 96, + "column": 16, + "stop_line": 96, + "stop_column": 38, + "path": "src/documents/permissions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `list` has no attribute `exists`", + "concise_description": "Object of class `list` has no attribute `exists`", + "severity": "error" + }, + { + "line": 181, + "column": 12, + "stop_line": 181, + "stop_column": 64, + "path": "src/documents/permissions.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `UnionType | type` is not assignable to declared return type `QuerySet[Unknown, Unknown]`", + "concise_description": "Returned type `UnionType | type` is not assignable to declared return type `QuerySet[Unknown, Unknown]`", + "severity": "error" + }, + { + "line": 40, + "column": 29, + "stop_line": 40, + "stop_column": 48, + "path": "src/documents/plugins/helpers.py", + "code": -2, + "name": "bad-assignment", + "description": "`BaseChannelLayer | None` is not assignable to attribute `_channel` with type `RedisPubSubChannelLayer | None`", + "concise_description": "`BaseChannelLayer | None` is not assignable to attribute `_channel` with type `RedisPubSubChannelLayer | None`", + "severity": "error" + }, + { + "line": 90, + "column": 19, + "stop_line": 90, + "stop_column": 26, + "path": "src/documents/plugins/helpers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `dict[str, str | dict[str, ProgressStatusOptions | int | str | None]]` is not assignable to parameter `payload` with type `dict[str, int | str | None]` in function `BaseStatusManager.send`", + "concise_description": "Argument `dict[str, str | dict[str, ProgressStatusOptions | int | str | None]]` is not assignable to parameter `payload` with type `dict[str, int | str | None]` in function `BaseStatusManager.send`", + "severity": "error" + }, + { + "line": 102, + "column": 19, + "stop_line": 102, + "stop_column": 26, + "path": "src/documents/plugins/helpers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `dict[str, str | dict[str, list[int]]]` is not assignable to parameter `payload` with type `dict[str, int | str | None]` in function `BaseStatusManager.send`", + "concise_description": "Argument `dict[str, str | dict[str, list[int]]]` is not assignable to parameter `payload` with type `dict[str, int | str | None]` in function `BaseStatusManager.send`", + "severity": "error" + }, + { + "line": 23, + "column": 26, + "stop_line": 23, + "stop_column": 33, + "path": "src/documents/regex.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `error` has no attribute `msg`", + "concise_description": "Object of class `error` has no attribute `msg`", + "severity": "error" + }, + { + "line": 127, + "column": 9, + "stop_line": 127, + "stop_column": 17, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-param-name-override", + "description": "Class member `MatchingModelSerializer.validate` overrides parent class `ModelSerializer` in an inconsistent manner\n Got parameter name `data`, expected `attrs`", + "concise_description": "Class member `MatchingModelSerializer.validate` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 201, + "column": 62, + "stop_line": 203, + "stop_column": 26, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, QuerySet[User, User]]`\n Argument `QuerySet[Group, Group]` is not assignable to parameter `value` with type `QuerySet[User, User]` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, QuerySet[User, User]]`", + "severity": "error" + }, + { + "line": 290, + "column": 17, + "stop_line": 294, + "stop_column": 30, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `list` has no attribute `values_list`", + "concise_description": "Object of class `list` has no attribute `values_list`", + "severity": "error" + }, + { + "line": 356, + "column": 21, + "stop_line": 356, + "stop_column": 37, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `has_perm`", + "concise_description": "Object of class `NoneType` has no attribute `has_perm`", + "severity": "error" + }, + { + "line": 468, + "column": 9, + "stop_line": 468, + "stop_column": 26, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-param-name-override", + "description": "Class member `OwnedObjectListSerializer.to_representation` overrides parent class `ListSerializer` in an inconsistent manner\n Got parameter name `documents`, expected `data`", + "concise_description": "Class member `OwnedObjectListSerializer.to_representation` overrides parent class `ListSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 469, + "column": 9, + "stop_line": 469, + "stop_column": 27, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `context`", + "concise_description": "Object of class `NoneType` has no attribute `context`", + "severity": "error" + }, + { + "line": 469, + "column": 51, + "stop_line": 469, + "stop_column": 83, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BaseSerializer` has no attribute `get_shared_object_pks`\nObject of class `Field` has no attribute `get_shared_object_pks`\nObject of class `NoneType` has no attribute `get_shared_object_pks`", + "concise_description": "Object of class `BaseSerializer` has no attribute `get_shared_object_pks`\nObject of class `Field` has no attribute `get_shared_object_pks`\nObject of class `NoneType` has no attribute `get_shared_object_pks`", + "severity": "error" + }, + { + "line": 478, + "column": 11, + "stop_line": 478, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `CorrespondentSerializer.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner\n `CorrespondentSerializer.Meta` has type `type[CorrespondentSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `MatchingModelSerializer.Meta`", + "concise_description": "Class member `CorrespondentSerializer.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 478, + "column": 11, + "stop_line": 478, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `CorrespondentSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `CorrespondentSerializer.Meta` has type `type[CorrespondentSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `CorrespondentSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 497, + "column": 11, + "stop_line": 497, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DocumentTypeSerializer.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner\n `DocumentTypeSerializer.Meta` has type `type[DocumentTypeSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `MatchingModelSerializer.Meta`", + "concise_description": "Class member `DocumentTypeSerializer.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 497, + "column": 11, + "stop_line": 497, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DocumentTypeSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `DocumentTypeSerializer.Meta` has type `type[DocumentTypeSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `DocumentTypeSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 554, + "column": 11, + "stop_line": 554, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TagSerializerVersion1.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner\n `TagSerializerVersion1.Meta` has type `type[TagSerializerVersion1.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `MatchingModelSerializer.Meta`", + "concise_description": "Class member `TagSerializerVersion1.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 554, + "column": 11, + "stop_line": 554, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TagSerializerVersion1.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `TagSerializerVersion1.Meta` has type `type[TagSerializerVersion1.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `TagSerializerVersion1.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 590, + "column": 14, + "stop_line": 595, + "stop_column": 6, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-assignment", + "description": "`ManyRelatedField | RelatedField[@_, @_, Any]` is not assignable to attribute `parent` with type `BaseSerializer[Unknown]`", + "concise_description": "`ManyRelatedField | RelatedField[@_, @_, Any]` is not assignable to attribute `parent` with type `BaseSerializer[Unknown]`", + "severity": "error" + }, + { + "line": 644, + "column": 11, + "stop_line": 644, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TagSerializer.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner\n `TagSerializer.Meta` has type `type[TagSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `MatchingModelSerializer.Meta`", + "concise_description": "Class member `TagSerializer.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 644, + "column": 11, + "stop_line": 644, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TagSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `TagSerializer.Meta` has type `type[TagSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `TagSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 671, + "column": 9, + "stop_line": 671, + "stop_column": 17, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-param-name-override", + "description": "Class member `TagSerializer.validate` overrides parent class `MatchingModelSerializer` in an inconsistent manner\n Got parameter name `attrs`, expected `data`", + "concise_description": "Class member `TagSerializer.validate` overrides parent class `MatchingModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 733, + "column": 17, + "stop_line": 733, + "stop_column": 42, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[CustomField.FieldDataType]` is not assignable to parameter `choices` with type `Sequence[Any]` in function `rest_framework.fields.ChoiceField.__init__`", + "concise_description": "Argument `type[CustomField.FieldDataType]` is not assignable to parameter `choices` with type `Sequence[Any]` in function `rest_framework.fields.ChoiceField.__init__`", + "severity": "error" + }, + { + "line": 739, + "column": 11, + "stop_line": 739, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `CustomFieldSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `CustomFieldSerializer.Meta` has type `type[CustomFieldSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `CustomFieldSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 850, + "column": 28, + "stop_line": 850, + "stop_column": 39, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-assignment", + "description": "`Unknown | None` is not assignable to attribute `method_name` with type `str`", + "concise_description": "`Unknown | None` is not assignable to attribute `method_name` with type `str`", + "severity": "error" + }, + { + "line": 869, + "column": 13, + "stop_line": 869, + "stop_column": 35, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `data_type` with type `CustomField.FieldDataType` in function `documents.models.CustomFieldInstance.get_value_field_name`", + "concise_description": "Argument `str` is not assignable to parameter `data_type` with type `CustomField.FieldDataType` in function `documents.models.CustomFieldInstance.get_value_field_name`", + "severity": "error" + }, + { + "line": 885, + "column": 9, + "stop_line": 885, + "stop_column": 18, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-param-name-override", + "description": "Class member `CustomFieldInstanceSerializer.get_value` overrides parent class `ModelSerializer` in an inconsistent manner\n Got parameter name `obj`, expected `dictionary`", + "concise_description": "Class member `CustomFieldInstanceSerializer.get_value` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 888, + "column": 9, + "stop_line": 888, + "stop_column": 17, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-param-name-override", + "description": "Class member `CustomFieldInstanceSerializer.validate` overrides parent class `ModelSerializer` in an inconsistent manner\n Got parameter name `data`, expected `attrs`", + "concise_description": "Class member `CustomFieldInstanceSerializer.validate` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 931, + "column": 34, + "stop_line": 931, + "stop_column": 68, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 949, + "column": 21, + "stop_line": 949, + "stop_column": 34, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[Unknown] | None` is not assignable to parameter `obj` with type `Sized` in function `len`\n Protocol `Sized` requires attribute `__len__`", + "concise_description": "Argument `list[Unknown] | None` is not assignable to parameter `obj` with type `Sized` in function `len`", + "severity": "error" + }, + { + "line": 1001, + "column": 11, + "stop_line": 1001, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `CustomFieldInstanceSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `CustomFieldInstanceSerializer.Meta` has type `type[CustomFieldInstanceSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `CustomFieldInstanceSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1011, + "column": 11, + "stop_line": 1011, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `BasicUserSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `BasicUserSerializer.Meta` has type `type[BasicUserSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `BasicUserSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1019, + "column": 11, + "stop_line": 1019, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `NotesSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `NotesSerializer.Meta` has type `type[NotesSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `NotesSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1130, + "column": 30, + "stop_line": 1130, + "stop_column": 55, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 1190, + "column": 12, + "stop_line": 1190, + "stop_column": 34, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1194, + "column": 42, + "stop_line": 1194, + "stop_column": 64, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1224, + "column": 35, + "stop_line": 1224, + "stop_column": 50, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get_ancestors`", + "concise_description": "Object of class `NoneType` has no attribute `get_ancestors`", + "severity": "error" + }, + { + "line": 1277, + "column": 11, + "stop_line": 1277, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DocumentSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `DocumentSerializer.Meta` has type `type[DocumentSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `DocumentSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1277, + "column": 11, + "stop_line": 1277, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DocumentSerializer.Meta` overrides parent class `NestedUpdateMixin` in an inconsistent manner\n `DocumentSerializer.Meta` has type `type[DocumentSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `NestedUpdateMixin.Meta`", + "concise_description": "Class member `DocumentSerializer.Meta` overrides parent class `NestedUpdateMixin` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1277, + "column": 11, + "stop_line": 1277, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DocumentSerializer.Meta` overrides parent class `DynamicFieldsModelSerializer` in an inconsistent manner\n `DocumentSerializer.Meta` has type `type[DocumentSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `DynamicFieldsModelSerializer.Meta`", + "concise_description": "Class member `DocumentSerializer.Meta` overrides parent class `DynamicFieldsModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1311, + "column": 9, + "stop_line": 1311, + "stop_column": 26, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-param-name-override", + "description": "Class member `SearchResultListSerializer.to_representation` overrides parent class `ListSerializer` in an inconsistent manner\n Got parameter name `hits`, expected `data`", + "concise_description": "Class member `SearchResultListSerializer.to_representation` overrides parent class `ListSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1314, + "column": 21, + "stop_line": 1314, + "stop_column": 47, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BaseSerializer` has no attribute `fetch_documents`\nObject of class `Field` has no attribute `fetch_documents`\nObject of class `NoneType` has no attribute `fetch_documents`", + "concise_description": "Object of class `BaseSerializer` has no attribute `fetch_documents`\nObject of class `Field` has no attribute `fetch_documents`\nObject of class `NoneType` has no attribute `fetch_documents`", + "severity": "error" + }, + { + "line": 1315, + "column": 9, + "stop_line": 1315, + "stop_column": 27, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `context`", + "concise_description": "Object of class `NoneType` has no attribute `context`", + "severity": "error" + }, + { + "line": 1317, + "column": 9, + "stop_line": 1317, + "stop_column": 27, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `context`", + "concise_description": "Object of class `NoneType` has no attribute `context`", + "severity": "error" + }, + { + "line": 1317, + "column": 51, + "stop_line": 1317, + "stop_column": 83, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BaseSerializer` has no attribute `get_shared_object_pks`\nObject of class `Field` has no attribute `get_shared_object_pks`\nObject of class `NoneType` has no attribute `get_shared_object_pks`", + "concise_description": "Object of class `BaseSerializer` has no attribute `get_shared_object_pks`\nObject of class `Field` has no attribute `get_shared_object_pks`\nObject of class `NoneType` has no attribute `get_shared_object_pks`", + "severity": "error" + }, + { + "line": 1342, + "column": 9, + "stop_line": 1342, + "stop_column": 26, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-param-name-override", + "description": "Class member `SearchResultSerializer.to_representation` overrides parent class `DocumentSerializer` in an inconsistent manner\n Got parameter name `hit`, expected `instance`", + "concise_description": "Class member `SearchResultSerializer.to_representation` overrides parent class `DocumentSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1353, + "column": 35, + "stop_line": 1353, + "stop_column": 49, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `notes`", + "concise_description": "Object of class `Document` has no attribute `notes`", + "severity": "error" + }, + { + "line": 1368, + "column": 9, + "stop_line": 1368, + "stop_column": 30, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `Meta.list_serializer_class` overrides parent class `Meta` in an inconsistent manner\n `Meta.list_serializer_class` has type `type[SearchResultListSerializer]`, which is not consistent with `type[OwnedObjectListSerializer]` in `Meta.list_serializer_class` (the type of read-write attributes cannot be changed)", + "concise_description": "Class member `Meta.list_serializer_class` overrides parent class `Meta` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1372, + "column": 11, + "stop_line": 1372, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `SavedViewFilterRuleSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `SavedViewFilterRuleSerializer.Meta` has type `type[SavedViewFilterRuleSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `SavedViewFilterRuleSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1380, + "column": 11, + "stop_line": 1380, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `SavedViewSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `SavedViewSerializer.Meta` has type `type[SavedViewSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `SavedViewSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1403, + "column": 21, + "stop_line": 1403, + "stop_column": 62, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`Literal[SavedView.DisplayFields.CUSTOM_FIELD]` is not subscriptable", + "concise_description": "`Literal[SavedView.DisplayFields.CUSTOM_FIELD]` is not subscriptable", + "severity": "error" + }, + { + "line": 1405, + "column": 36, + "stop_line": 1405, + "stop_column": 63, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 2059, + "column": 73, + "stop_line": 2059, + "stop_column": 80, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "unbound-name", + "description": "`address` is uninitialized", + "concise_description": "`address` is uninitialized", + "severity": "error" + }, + { + "line": 2072, + "column": 11, + "stop_line": 2072, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `StoragePathSerializer.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner\n `StoragePathSerializer.Meta` has type `type[StoragePathSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `MatchingModelSerializer.Meta`", + "concise_description": "Class member `StoragePathSerializer.Meta` overrides parent class `MatchingModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2072, + "column": 11, + "stop_line": 2072, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `StoragePathSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `StoragePathSerializer.Meta` has type `type[StoragePathSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `StoragePathSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2117, + "column": 11, + "stop_line": 2117, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `UiSettingsViewSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `UiSettingsViewSerializer.Meta` has type `type[UiSettingsViewSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `UiSettingsViewSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2143, + "column": 11, + "stop_line": 2143, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TasksViewSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `TasksViewSerializer.Meta` has type `type[TasksViewSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `TasksViewSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2181, + "column": 30, + "stop_line": 2181, + "stop_column": 57, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `group`", + "concise_description": "Object of class `NoneType` has no attribute `group`", + "severity": "error" + }, + { + "line": 2232, + "column": 11, + "stop_line": 2232, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ShareLinkSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `ShareLinkSerializer.Meta` has type `type[ShareLinkSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `ShareLinkSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2266, + "column": 11, + "stop_line": 2266, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ShareLinkBundleSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `ShareLinkBundleSerializer.Meta` has type `type[ShareLinkBundleSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `ShareLinkBundleSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2413, + "column": 17, + "stop_line": 2413, + "stop_column": 37, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `objects`", + "concise_description": "Object of class `NoneType` has no attribute `objects`", + "severity": "error" + }, + { + "line": 2457, + "column": 11, + "stop_line": 2457, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `WorkflowTriggerSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `WorkflowTriggerSerializer.Meta` has type `type[WorkflowTriggerSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `WorkflowTriggerSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2553, + "column": 11, + "stop_line": 2553, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `WorkflowActionEmailSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `WorkflowActionEmailSerializer.Meta` has type `type[WorkflowActionEmailSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `WorkflowActionEmailSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2571, + "column": 11, + "stop_line": 2571, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `WorkflowActionWebhookSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `WorkflowActionWebhookSerializer.Meta` has type `type[WorkflowActionWebhookSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `WorkflowActionWebhookSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2594, + "column": 11, + "stop_line": 2594, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `WorkflowActionSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `WorkflowActionSerializer.Meta` has type `type[WorkflowActionSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `WorkflowActionSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2713, + "column": 11, + "stop_line": 2713, + "stop_column": 15, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `WorkflowSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `WorkflowSerializer.Meta` has type `type[WorkflowSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `WorkflowSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 2895, + "column": 16, + "stop_line": 2895, + "stop_column": 33, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowTrigger` has no attribute `workflows`", + "concise_description": "Object of class `WorkflowTrigger` has no attribute `workflows`", + "severity": "error" + }, + { + "line": 2899, + "column": 16, + "stop_line": 2899, + "stop_column": 32, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `workflows`", + "concise_description": "Object of class `WorkflowAction` has no attribute `workflows`", + "severity": "error" + }, + { + "line": 2914, + "column": 52, + "stop_line": 2914, + "stop_column": 60, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "unbound-name", + "description": "`triggers` may be uninitialized", + "concise_description": "`triggers` may be uninitialized", + "severity": "error" + }, + { + "line": 2914, + "column": 62, + "stop_line": 2914, + "stop_column": 69, + "path": "src/documents/serialisers.py", + "code": -2, + "name": "unbound-name", + "description": "`actions` may be uninitialized", + "concise_description": "`actions` may be uninitialized", + "severity": "error" + }, + { + "line": 118, + "column": 72, + "stop_line": 118, + "stop_column": 82, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_correspondents`", + "concise_description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_correspondents`", + "severity": "error" + }, + { + "line": 144, + "column": 17, + "stop_line": 144, + "stop_column": 25, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", + "severity": "error" + }, + { + "line": 174, + "column": 71, + "stop_line": 174, + "stop_column": 81, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_document_types`", + "concise_description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_document_types`", + "severity": "error" + }, + { + "line": 201, + "column": 17, + "stop_line": 201, + "stop_column": 25, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", + "severity": "error" + }, + { + "line": 236, + "column": 50, + "stop_line": 236, + "stop_column": 60, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_tags`", + "concise_description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_tags`", + "severity": "error" + }, + { + "line": 247, + "column": 19, + "stop_line": 247, + "stop_column": 37, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `SUCCESS`", + "concise_description": "Object of class `NoneType` has no attribute `SUCCESS`", + "severity": "error" + }, + { + "line": 249, + "column": 13, + "stop_line": 249, + "stop_column": 25, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `write`", + "concise_description": "Object of class `NoneType` has no attribute `write`", + "severity": "error" + }, + { + "line": 250, + "column": 13, + "stop_line": 250, + "stop_column": 25, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `write`", + "concise_description": "Object of class `NoneType` has no attribute `write`", + "severity": "error" + }, + { + "line": 252, + "column": 13, + "stop_line": 252, + "stop_column": 25, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `write`", + "concise_description": "Object of class `NoneType` has no attribute `write`", + "severity": "error" + }, + { + "line": 252, + "column": 36, + "stop_line": 252, + "stop_column": 54, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `SUCCESS`", + "concise_description": "Object of class `NoneType` has no attribute `SUCCESS`", + "severity": "error" + }, + { + "line": 254, + "column": 13, + "stop_line": 254, + "stop_column": 25, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `write`", + "concise_description": "Object of class `NoneType` has no attribute `write`", + "severity": "error" + }, + { + "line": 256, + "column": 13, + "stop_line": 256, + "stop_column": 25, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `write`", + "concise_description": "Object of class `NoneType` has no attribute `write`", + "severity": "error" + }, + { + "line": 289, + "column": 9, + "stop_line": 289, + "stop_column": 19, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_storage_paths`", + "concise_description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_storage_paths`", + "severity": "error" + }, + { + "line": 317, + "column": 17, + "stop_line": 317, + "stop_column": 25, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `selected` with type `MatchingModel` in function `_suggestion_printer`", + "severity": "error" + }, + { + "line": 365, + "column": 16, + "stop_line": 365, + "stop_column": 24, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`settings` may be uninitialized", + "concise_description": "`settings` may be uninitialized", + "severity": "error" + }, + { + "line": 384, + "column": 18, + "stop_line": 384, + "stop_column": 26, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`settings` may be uninitialized", + "concise_description": "`settings` may be uninitialized", + "severity": "error" + }, + { + "line": 390, + "column": 22, + "stop_line": 390, + "stop_column": 30, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`settings` may be uninitialized", + "concise_description": "`settings` may be uninitialized", + "severity": "error" + }, + { + "line": 495, + "column": 46, + "stop_line": 495, + "stop_column": 66, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 496, + "column": 49, + "stop_line": 496, + "stop_column": 69, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 534, + "column": 21, + "stop_line": 534, + "stop_column": 37, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `old_path` with type `Path` in function `validate_move`", + "concise_description": "Argument `Path | None` is not assignable to parameter `old_path` with type `Path` in function `validate_move`", + "severity": "error" + }, + { + "line": 535, + "column": 21, + "stop_line": 535, + "stop_column": 42, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `new_path` with type `Path` in function `validate_move`", + "concise_description": "Argument `Path | None` is not assignable to parameter `new_path` with type `Path` in function `validate_move`", + "severity": "error" + }, + { + "line": 538, + "column": 46, + "stop_line": 538, + "stop_column": 67, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "concise_description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "severity": "error" + }, + { + "line": 539, + "column": 28, + "stop_line": 539, + "stop_column": 69, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-specialization", + "description": "`Path | None` is not assignable to upper bound `PathLike[str] | str` of type variable `_StrPathT`", + "concise_description": "`Path | None` is not assignable to upper bound `PathLike[str] | str` of type variable `_StrPathT`", + "severity": "error" + }, + { + "line": 539, + "column": 29, + "stop_line": 539, + "stop_column": 45, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", + "concise_description": "Argument `Path | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", + "severity": "error" + }, + { + "line": 559, + "column": 20, + "stop_line": 559, + "stop_column": 33, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`move_original` is uninitialized", + "concise_description": "`move_original` is uninitialized", + "severity": "error" + }, + { + "line": 561, + "column": 55, + "stop_line": 561, + "stop_column": 70, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`old_source_path` is uninitialized", + "concise_description": "`old_source_path` is uninitialized", + "severity": "error" + }, + { + "line": 563, + "column": 20, + "stop_line": 563, + "stop_column": 32, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`move_archive` is uninitialized", + "concise_description": "`move_archive` is uninitialized", + "severity": "error" + }, + { + "line": 563, + "column": 37, + "stop_line": 563, + "stop_column": 66, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `is_file`", + "concise_description": "Object of class `NoneType` has no attribute `is_file`", + "severity": "error" + }, + { + "line": 565, + "column": 32, + "stop_line": 565, + "stop_column": 73, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-specialization", + "description": "`Path | None` is not assignable to upper bound `PathLike[str] | str` of type variable `_StrPathT`", + "concise_description": "`Path | None` is not assignable to upper bound `PathLike[str] | str` of type variable `_StrPathT`", + "severity": "error" + }, + { + "line": 565, + "column": 33, + "stop_line": 565, + "stop_column": 54, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", + "concise_description": "Argument `Path | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", + "severity": "error" + }, + { + "line": 565, + "column": 56, + "stop_line": 565, + "stop_column": 72, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`old_archive_path` is uninitialized", + "concise_description": "`old_archive_path` is uninitialized", + "severity": "error" + }, + { + "line": 579, + "column": 33, + "stop_line": 579, + "stop_column": 45, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`old_filename` is uninitialized", + "concise_description": "`old_filename` is uninitialized", + "severity": "error" + }, + { + "line": 580, + "column": 41, + "stop_line": 580, + "stop_column": 61, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`old_archive_filename` is uninitialized", + "concise_description": "`old_archive_filename` is uninitialized", + "severity": "error" + }, + { + "line": 590, + "column": 49, + "stop_line": 590, + "stop_column": 73, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `is_file`", + "concise_description": "Object of class `NoneType` has no attribute `is_file`", + "severity": "error" + }, + { + "line": 592, + "column": 22, + "stop_line": 592, + "stop_column": 38, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 609, + "column": 23, + "stop_line": 609, + "stop_column": 50, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get`", + "concise_description": "Object of class `NoneType` has no attribute `get`", + "severity": "error" + }, + { + "line": 613, + "column": 5, + "stop_line": 613, + "stop_column": 24, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `CustomField` has no attribute `fields`", + "concise_description": "Object of class `CustomField` has no attribute `fields`", + "severity": "error" + }, + { + "line": 617, + "column": 24, + "stop_line": 617, + "stop_column": 43, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `CustomField` has no attribute `fields`", + "concise_description": "Object of class `CustomField` has no attribute `fields`", + "severity": "error" + }, + { + "line": 634, + "column": 13, + "stop_line": 634, + "stop_column": 28, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `CustomField` has no attribute `fields`", + "concise_description": "Object of class `CustomField` has no attribute `fields`", + "severity": "error" + }, + { + "line": 648, + "column": 12, + "stop_line": 648, + "stop_column": 51, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "not-iterable", + "description": "`in` is not supported between `str` and `None`", + "concise_description": "`in` is not supported between `str` and `None`", + "severity": "error" + }, + { + "line": 652, + "column": 13, + "stop_line": 652, + "stop_column": 39, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `remove`", + "concise_description": "Object of class `NoneType` has no attribute `remove`", + "severity": "error" + }, + { + "line": 691, + "column": 27, + "stop_line": 691, + "stop_column": 51, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get`", + "concise_description": "Object of class `NoneType` has no attribute `get`", + "severity": "error" + }, + { + "line": 711, + "column": 17, + "stop_line": 711, + "stop_column": 52, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `None`\n Object of class `NoneType` has no attribute `__setitem__`", + "concise_description": "Cannot set item in `None`", + "severity": "error" + }, + { + "line": 778, + "column": 13, + "stop_line": 778, + "stop_column": 33, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `source_path`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `source_path`", + "severity": "error" + }, + { + "line": 778, + "column": 60, + "stop_line": 778, + "stop_column": 82, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `original_file`", + "concise_description": "Object of class `Document` has no attribute `original_file`", + "severity": "error" + }, + { + "line": 789, + "column": 13, + "stop_line": 789, + "stop_column": 37, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `refresh_from_db`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `refresh_from_db`", + "severity": "error" + }, + { + "line": 790, + "column": 32, + "stop_line": 790, + "stop_column": 45, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `tags`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `tags`", + "severity": "error" + }, + { + "line": 807, + "column": 29, + "stop_line": 807, + "stop_column": 37, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `ConsumableDocument | Document` is not assignable to parameter `document` with type `Document` in function `documents.workflows.mutations.apply_assignment_to_document`", + "concise_description": "Argument `ConsumableDocument | Document` is not assignable to parameter `document` with type `Document` in function `documents.workflows.mutations.apply_assignment_to_document`", + "severity": "error" + }, + { + "line": 808, + "column": 29, + "stop_line": 808, + "stop_column": 40, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`doc_tag_ids` may be uninitialized", + "concise_description": "`doc_tag_ids` may be uninitialized", + "severity": "error" + }, + { + "line": 815, + "column": 59, + "stop_line": 815, + "stop_column": 67, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `ConsumableDocument | Document` is not assignable to parameter `document` with type `Document` in function `documents.workflows.mutations.apply_removal_to_document`", + "concise_description": "Argument `ConsumableDocument | Document` is not assignable to parameter `document` with type `Document` in function `documents.workflows.mutations.apply_removal_to_document`", + "severity": "error" + }, + { + "line": 815, + "column": 69, + "stop_line": 815, + "stop_column": 80, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`doc_tag_ids` may be uninitialized", + "concise_description": "`doc_tag_ids` may be uninitialized", + "severity": "error" + }, + { + "line": 840, + "column": 17, + "stop_line": 840, + "stop_column": 31, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `title`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `title`", + "severity": "error" + }, + { + "line": 840, + "column": 34, + "stop_line": 840, + "stop_column": 48, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `title`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `title`", + "severity": "error" + }, + { + "line": 842, + "column": 17, + "stop_line": 842, + "stop_column": 30, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `save`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `save`", + "severity": "error" + }, + { + "line": 843, + "column": 17, + "stop_line": 843, + "stop_column": 30, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `tags`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `tags`", + "severity": "error" + }, + { + "line": 843, + "column": 35, + "stop_line": 843, + "stop_column": 46, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unbound-name", + "description": "`doc_tag_ids` may be uninitialized", + "concise_description": "`doc_tag_ids` may be uninitialized", + "severity": "error" + }, + { + "line": 866, + "column": 8, + "stop_line": 866, + "stop_column": 29, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "not-iterable", + "description": "`not in` is not supported between `Literal['task']` and `None`", + "concise_description": "`not in` is not supported between `Literal['task']` and `None`", + "severity": "error" + }, + { + "line": 866, + "column": 33, + "stop_line": 866, + "stop_column": 48, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 873, + "column": 21, + "stop_line": 873, + "stop_column": 28, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 881, + "column": 21, + "stop_line": 881, + "stop_column": 34, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 939, + "column": 36, + "stop_line": 939, + "stop_column": 41, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "bad-assignment", + "description": "`Unknown | None` is not assignable to attribute `status` with type `str`", + "concise_description": "`Unknown | None` is not assignable to attribute `status` with type `str`", + "severity": "error" + }, + { + "line": 988, + "column": 13, + "stop_line": 988, + "stop_column": 28, + "path": "src/documents/signals/handlers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BaseDatabaseWrapper` has no attribute `close_pool`", + "concise_description": "Object of class `BaseDatabaseWrapper` has no attribute `close_pool`", + "severity": "error" + }, + { + "line": 185, + "column": 17, + "stop_line": 185, + "stop_column": 32, + "path": "src/documents/tasks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `task_id` with type `str` in function `documents.plugins.base.ConsumeTaskPlugin.__init__`", + "concise_description": "Argument `str | None` is not assignable to parameter `task_id` with type `str` in function `documents.plugins.base.ConsumeTaskPlugin.__init__`", + "severity": "error" + }, + { + "line": 217, + "column": 12, + "stop_line": 217, + "stop_column": 15, + "path": "src/documents/tasks.py", + "code": -2, + "name": "unbound-name", + "description": "`msg` may be uninitialized", + "concise_description": "`msg` may be uninitialized", + "severity": "error" + }, + { + "line": 276, + "column": 42, + "stop_line": 276, + "stop_column": 83, + "path": "src/documents/tasks.py", + "code": -2, + "name": "bad-assignment", + "description": "`type[DocumentParser] | None` is not assignable to `type[DocumentParser]`", + "concise_description": "`type[DocumentParser] | None` is not assignable to `type[DocumentParser]`", + "severity": "error" + }, + { + "line": 299, + "column": 27, + "stop_line": 299, + "stop_column": 52, + "path": "src/documents/tasks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 316, + "column": 21, + "stop_line": 316, + "stop_column": 48, + "path": "src/documents/tasks.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `log_create`", + "concise_description": "Object of class `Manager` has no attribute `log_create`", + "severity": "error" + }, + { + "line": 340, + "column": 21, + "stop_line": 340, + "stop_column": 48, + "path": "src/documents/tasks.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `log_create`", + "concise_description": "Object of class `Manager` has no attribute `log_create`", + "severity": "error" + }, + { + "line": 353, + "column": 50, + "stop_line": 353, + "stop_column": 71, + "path": "src/documents/tasks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "concise_description": "Argument `Path | None` is not assignable to parameter `source_path` with type `Path` in function `documents.file_handling.create_source_path_directory`", + "severity": "error" + }, + { + "line": 354, + "column": 32, + "stop_line": 354, + "stop_column": 82, + "path": "src/documents/tasks.py", + "code": -2, + "name": "bad-specialization", + "description": "`Path | None` is not assignable to upper bound `PathLike[str] | str` of type variable `_StrPathT`", + "concise_description": "`Path | None` is not assignable to upper bound `PathLike[str] | str` of type variable `_StrPathT`", + "severity": "error" + }, + { + "line": 354, + "column": 33, + "stop_line": 354, + "stop_column": 58, + "path": "src/documents/tasks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `src` with type `PathLike[str] | str` in function `shutil.move`", + "severity": "error" + }, + { + "line": 520, + "column": 33, + "stop_line": 520, + "stop_column": 61, + "path": "src/documents/tasks.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `run_at`", + "concise_description": "Object of class `NoneType` has no attribute `run_at`", + "severity": "error" + }, + { + "line": 84, + "column": 49, + "stop_line": 84, + "stop_column": 61, + "path": "src/documents/templating/filepath.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(custom_field_data: dict[str, dict[str, str]], name: str, default: str | None = None) -> str | None` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", + "severity": "error" + }, + { + "line": 86, + "column": 45, + "stop_line": 86, + "stop_column": 60, + "path": "src/documents/templating/filepath.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(value: datetime | str, format: str) -> str` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", + "severity": "error" + }, + { + "line": 90, + "column": 50, + "stop_line": 90, + "stop_column": 63, + "path": "src/documents/templating/filepath.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(value: date | datetime | str, format: str, locale: str) -> str` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", + "severity": "error" + }, + { + "line": 239, + "column": 17, + "stop_line": 239, + "stop_column": 66, + "path": "src/documents/templating/filepath.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 241, + "column": 23, + "stop_line": 241, + "stop_column": 72, + "path": "src/documents/templating/filepath.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 261, + "column": 12, + "stop_line": 261, + "stop_column": 22, + "path": "src/documents/templating/filepath.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `dict[str, dict[str, dict[str, str | Unknown | None]]]` is not assignable to declared return type `dict[str, dict[str, dict[str, str]]]`", + "concise_description": "Returned type `dict[str, dict[str, dict[str, str | Unknown | None]]]` is not assignable to declared return type `dict[str, dict[str, dict[str, str]]]`", + "severity": "error" + }, + { + "line": 30, + "column": 17, + "stop_line": 30, + "stop_column": 38, + "path": "src/documents/templating/filters.py", + "code": -2, + "name": "bad-assignment", + "description": "`datetime | None` is not assignable to variable `value` with type `date | datetime | str`", + "concise_description": "`datetime | None` is not assignable to variable `value` with type `date | datetime | str`", + "severity": "error" + }, + { + "line": 47, + "column": 17, + "stop_line": 47, + "stop_column": 34, + "path": "src/documents/templating/filters.py", + "code": -2, + "name": "bad-assignment", + "description": "`date | None` is not assignable to variable `value` with type `datetime | str`", + "concise_description": "`date | None` is not assignable to variable `value` with type `datetime | str`", + "severity": "error" + }, + { + "line": 48, + "column": 12, + "stop_line": 48, + "stop_column": 26, + "path": "src/documents/templating/filters.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `str` has no attribute `strftime`", + "concise_description": "Object of class `str` has no attribute `strftime`", + "severity": "error" + }, + { + "line": 25, + "column": 45, + "stop_line": 25, + "stop_column": 60, + "path": "src/documents/templating/workflows.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(value: datetime | str, format: str) -> str` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", + "severity": "error" + }, + { + "line": 29, + "column": 50, + "stop_line": 29, + "stop_column": 63, + "path": "src/documents/templating/workflows.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`\n Argument `(value: date | datetime | str, format: str, locale: str) -> str` is not assignable to parameter `value` with type `((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, ((obj: Sized, /) -> int) | ((s: Any, /) -> Markup) | ((s: Any, /) -> str) | ((env: Environment, s: str, length: int = 255, killwords: bool = False, end: str = '...', leeway: int | None = None) -> str) | ((environment: Environment, obj: Any, name: str) -> Undefined | Any) | ((environment: Environment, s: str, width: int = 79, break_long_words: bool = True, wrapstring: str | None = None, break_on_hyphens: bool = True) -> str) | ((eval_ctx: EvalContext, d: Mapping[str, Any], autospace: bool = True) -> str) | ((eval_ctx: EvalContext, s: str, old: str, new: str, count: int | None = None) -> str) | ((eval_ctx: EvalContext, value: str, trim_url_limit: int | None = None, nofollow: bool = False, target: str | None = None, rel: str | None = None, extra_schemes: Iterable[str] | None = None) -> str) | ((eval_ctx: EvalContext, value: Any, indent: int | None = None) -> Markup) | ((s: str) -> int) | ((s: str) -> str) | ((s: str, width: int | str = 4, first: bool = False, blank: bool = False) -> str) | ((value: HasHTML | str) -> Markup) | ((value: HasHTML | str) -> str) | ((value: Iterable[tuple[str, Any]] | Mapping[str, Any] | str) -> str) | ((value: float | int | str, binary: bool = False) -> str) | ((value: float, precision: int = 0, method: Literal['ceil', 'common', 'floor'] = 'common') -> float) | ((value: str) -> Markup) | ((value: str, chars: str | None = None) -> str) | ((value: str, width: int = 80) -> str) | ((value: str, *args: Any, **kwargs: Any) -> str) | ((value: Any) -> str) | ((value: Any, default: float = ...) -> float) | ((value: Any, default: int = 0, base: int = 10) -> int) | ((*args: Unknown, **kwargs: Unknown) -> Unknown) | Overload[(context: Context, value: AsyncIterable[Any] | Iterable[Any], name: str, *args: Any, **kwargs: Any) -> Iterable[Any], (context: Context, value: AsyncIterable[Any] | Iterable[Any], *, attribute: str = ..., default: Any | None = None) -> Iterable[Any]] | Overload[(value: str) -> str, [V](value: Iterable[Unknown]) -> Iterable[Unknown]] | [K, V](value: Mapping[Unknown, Unknown], case_sensitive: bool = False, by: Literal['key', 'value'] = 'key', reverse: bool = False) -> list[tuple[Unknown, Unknown]] | [K, V](value: Mapping[Unknown, Unknown] | Undefined) -> Iterator[tuple[Unknown, Unknown]] | [V](value: Iterable[Unknown], linecount: int, fill_with: Unknown | None = None) -> Iterator[list[Unknown]] | [V](value: Unknown, default_value: Unknown = ..., boolean: bool = False) -> Unknown | [V](environment: Environment, seq: Reversible[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], case_sensitive: bool = False, attribute: int | str | None = None) -> Undefined | Unknown | [V](context: Context, seq: Sequence[Unknown]) -> Undefined | Unknown | [V](environment: Environment, value: Iterable[Unknown], reverse: bool = False, case_sensitive: bool = False, attribute: int | str | None = None) -> list[Unknown] | [_T](x: SupportsAbs[Unknown], /) -> Unknown]`", + "severity": "error" + }, + { + "line": 109, + "column": 12, + "stop_line": 109, + "stop_column": 16, + "path": "src/documents/templating/workflows.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `None` is not assignable to declared return type `str`", + "concise_description": "Returned type `None` is not assignable to declared return type `str`", + "severity": "error" + }, + { + "line": 28, + "column": 12, + "stop_line": 28, + "stop_column": 41, + "path": "src/documents/tests/conftest.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `create_user`", + "concise_description": "Object of class `Manager` has no attribute `create_user`", + "severity": "error" + }, + { + "line": 9, + "column": 11, + "stop_line": 9, + "stop_column": 15, + "path": "src/documents/tests/factories.py", + "code": -2, + "name": "bad-override", + "description": "Class member `CorrespondentFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner\n `CorrespondentFactory.Meta` has type `type[CorrespondentFactory.Meta]`, which is not assignable to `type[DjangoModelFactory.Meta]`, the type of `DjangoModelFactory.Meta`", + "concise_description": "Class member `CorrespondentFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner", + "severity": "error" + }, + { + "line": 16, + "column": 11, + "stop_line": 16, + "stop_column": 15, + "path": "src/documents/tests/factories.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DocumentFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner\n `DocumentFactory.Meta` has type `type[DocumentFactory.Meta]`, which is not assignable to `type[DjangoModelFactory.Meta]`, the type of `DjangoModelFactory.Meta`", + "concise_description": "Class member `DocumentFactory.Meta` overrides parent class `DjangoModelFactory` in an inconsistent manner", + "severity": "error" + }, + { + "line": 36, + "column": 26, + "stop_line": 36, + "stop_column": 65, + "path": "src/documents/tests/test_admin.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 107, + "column": 26, + "stop_line": 107, + "stop_column": 38, + "path": "src/documents/tests/test_admin.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ModelForm` has no attribute `request`", + "concise_description": "Object of class `ModelForm` has no attribute `request`", + "severity": "error" + }, + { + "line": 119, + "column": 9, + "stop_line": 119, + "stop_column": 21, + "path": "src/documents/tests/test_admin.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ModelForm` has no attribute `request`", + "concise_description": "Object of class `ModelForm` has no attribute `request`", + "severity": "error" + }, + { + "line": 127, + "column": 9, + "stop_line": 127, + "stop_column": 21, + "path": "src/documents/tests/test_admin.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ModelForm` has no attribute `request`", + "concise_description": "Object of class `ModelForm` has no attribute `request`", + "severity": "error" + }, + { + "line": 91, + "column": 9, + "stop_line": 91, + "stop_column": 25, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_title`", + "concise_description": "Object of class `NoneType` has no attribute `app_title`", + "severity": "error" + }, + { + "line": 92, + "column": 9, + "stop_line": 92, + "stop_column": 24, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_logo`", + "concise_description": "Object of class `NoneType` has no attribute `app_logo`", + "severity": "error" + }, + { + "line": 93, + "column": 9, + "stop_line": 93, + "stop_column": 20, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 98, + "column": 30, + "stop_line": 98, + "stop_column": 46, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_title`", + "concise_description": "Object of class `NoneType` has no attribute `app_title`", + "severity": "error" + }, + { + "line": 99, + "column": 29, + "stop_line": 99, + "stop_column": 44, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_logo`", + "concise_description": "Object of class `NoneType` has no attribute `app_logo`", + "severity": "error" + }, + { + "line": 125, + "column": 26, + "stop_line": 125, + "stop_column": 58, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `color_conversion_strategy`", + "concise_description": "Object of class `NoneType` has no attribute `color_conversion_strategy`", + "severity": "error" + }, + { + "line": 150, + "column": 26, + "stop_line": 150, + "stop_column": 42, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `user_args`", + "concise_description": "Object of class `NoneType` has no attribute `user_args`", + "severity": "error" + }, + { + "line": 151, + "column": 26, + "stop_line": 151, + "stop_column": 41, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `language`", + "concise_description": "Object of class `NoneType` has no attribute `language`", + "severity": "error" + }, + { + "line": 152, + "column": 26, + "stop_line": 152, + "stop_column": 52, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `barcode_tag_mapping`", + "concise_description": "Object of class `NoneType` has no attribute `barcode_tag_mapping`", + "severity": "error" + }, + { + "line": 187, + "column": 20, + "stop_line": 187, + "stop_column": 35, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_logo`", + "concise_description": "Object of class `NoneType` has no attribute `app_logo`", + "severity": "error" + }, + { + "line": 636, + "column": 9, + "stop_line": 636, + "stop_column": 27, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `llm_api_key`", + "concise_description": "Object of class `NoneType` has no attribute `llm_api_key`", + "severity": "error" + }, + { + "line": 637, + "column": 9, + "stop_line": 637, + "stop_column": 20, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 650, + "column": 9, + "stop_line": 650, + "stop_column": 31, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `refresh_from_db`", + "concise_description": "Object of class `NoneType` has no attribute `refresh_from_db`", + "severity": "error" + }, + { + "line": 651, + "column": 26, + "stop_line": 651, + "stop_column": 44, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `llm_api_key`", + "concise_description": "Object of class `NoneType` has no attribute `llm_api_key`", + "severity": "error" + }, + { + "line": 663, + "column": 9, + "stop_line": 663, + "stop_column": 31, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `refresh_from_db`", + "concise_description": "Object of class `NoneType` has no attribute `refresh_from_db`", + "severity": "error" + }, + { + "line": 676, + "column": 9, + "stop_line": 676, + "stop_column": 26, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `ai_enabled`", + "concise_description": "Object of class `NoneType` has no attribute `ai_enabled`", + "severity": "error" + }, + { + "line": 677, + "column": 9, + "stop_line": 677, + "stop_column": 37, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `llm_embedding_backend`", + "concise_description": "Object of class `NoneType` has no attribute `llm_embedding_backend`", + "severity": "error" + }, + { + "line": 678, + "column": 9, + "stop_line": 678, + "stop_column": 20, + "path": "src/documents/tests/test_api_app_config.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 57, + "column": 20, + "stop_line": 57, + "stop_column": 83, + "path": "src/documents/tests/test_api_bulk_download.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `shutil.copy` called with arguments: (Path, Path | None)\n Possible overloads:\n (src: StrPath, dst: _StrPathT, *, follow_symlinks: bool = True) -> str | _StrPathT [closest match]\n (src: BytesPath, dst: _BytesPathT, *, follow_symlinks: bool = True) -> bytes | _BytesPathT", + "concise_description": "No matching overload found for function `shutil.copy` called with arguments: (Path, Path | None)", + "severity": "error" + }, + { + "line": 278, + "column": 26, + "stop_line": 278, + "stop_column": 43, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 358, + "column": 13, + "stop_line": 358, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 422, + "column": 26, + "stop_line": 422, + "stop_column": 43, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 635, + "column": 30, + "stop_line": 635, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 676, + "column": 26, + "stop_line": 676, + "stop_column": 43, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 693, + "column": 26, + "stop_line": 693, + "stop_column": 43, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 741, + "column": 30, + "stop_line": 741, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 758, + "column": 30, + "stop_line": 758, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 759, + "column": 26, + "stop_line": 759, + "stop_column": 43, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 800, + "column": 30, + "stop_line": 800, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 840, + "column": 38, + "stop_line": 840, + "stop_column": 55, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 892, + "column": 30, + "stop_line": 892, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 963, + "column": 30, + "stop_line": 963, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 998, + "column": 30, + "stop_line": 998, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1039, + "column": 30, + "stop_line": 1039, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1076, + "column": 30, + "stop_line": 1076, + "stop_column": 47, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1171, + "column": 26, + "stop_line": 1171, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1172, + "column": 26, + "stop_line": 1172, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1173, + "column": 26, + "stop_line": 1173, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1190, + "column": 26, + "stop_line": 1190, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1207, + "column": 26, + "stop_line": 1207, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1208, + "column": 26, + "stop_line": 1208, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1209, + "column": 26, + "stop_line": 1209, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1221, + "column": 26, + "stop_line": 1221, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1222, + "column": 26, + "stop_line": 1222, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1223, + "column": 26, + "stop_line": 1223, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1248, + "column": 26, + "stop_line": 1248, + "stop_column": 44, + "path": "src/documents/tests/test_api_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 316, + "column": 44, + "stop_line": 316, + "stop_column": 67, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 331, + "column": 31, + "stop_line": 331, + "stop_column": 54, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `thumbnail_dir`", + "concise_description": "Class `dirs` has no class attribute `thumbnail_dir`", + "severity": "error" + }, + { + "line": 361, + "column": 44, + "stop_line": 361, + "stop_column": 67, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 383, + "column": 20, + "stop_line": 383, + "stop_column": 43, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `thumbnail_dir`", + "concise_description": "Class `dirs` has no class attribute `thumbnail_dir`", + "severity": "error" + }, + { + "line": 421, + "column": 19, + "stop_line": 421, + "stop_column": 35, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 1192, + "column": 47, + "stop_line": 1192, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1235, + "column": 47, + "stop_line": 1235, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1266, + "column": 47, + "stop_line": 1266, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1279, + "column": 47, + "stop_line": 1279, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1292, + "column": 47, + "stop_line": 1292, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1313, + "column": 47, + "stop_line": 1313, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1335, + "column": 47, + "stop_line": 1335, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1349, + "column": 47, + "stop_line": 1349, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1371, + "column": 47, + "stop_line": 1371, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1385, + "column": 47, + "stop_line": 1385, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1407, + "column": 47, + "stop_line": 1407, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1421, + "column": 47, + "stop_line": 1421, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1438, + "column": 31, + "stop_line": 1438, + "stop_column": 48, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[int] | None` is not assignable to parameter `first` with type `Iterable[Any]` in function `unittest.case.TestCase.assertCountEqual`\n Protocol `Iterable` requires attribute `__iter__`", + "concise_description": "Argument `list[int] | None` is not assignable to parameter `first` with type `Iterable[Any]` in function `unittest.case.TestCase.assertCountEqual`", + "severity": "error" + }, + { + "line": 1444, + "column": 47, + "stop_line": 1444, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1460, + "column": 47, + "stop_line": 1460, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1488, + "column": 47, + "stop_line": 1488, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1512, + "column": 47, + "stop_line": 1512, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1546, + "column": 47, + "stop_line": 1546, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1593, + "column": 9, + "stop_line": 1593, + "stop_column": 25, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "not-iterable", + "description": "Type `None` is not iterable", + "concise_description": "Type `None` is not iterable", + "severity": "error" + }, + { + "line": 1608, + "column": 47, + "stop_line": 1608, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1654, + "column": 47, + "stop_line": 1654, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1726, + "column": 47, + "stop_line": 1726, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1750, + "column": 47, + "stop_line": 1750, + "stop_column": 60, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.result` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 1781, + "column": 20, + "stop_line": 1781, + "stop_column": 52, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `shutil.copy` called with arguments: (Path, Path | None)\n Possible overloads:\n (src: StrPath, dst: _StrPathT, *, follow_symlinks: bool = True) -> str | _StrPathT [closest match]\n (src: BytesPath, dst: _BytesPathT, *, follow_symlinks: bool = True) -> bytes | _BytesPathT", + "concise_description": "No matching overload found for function `shutil.copy` called with arguments: (Path, Path | None)", + "severity": "error" + }, + { + "line": 2089, + "column": 26, + "stop_line": 2089, + "stop_column": 41, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SavedView` has no attribute `filter_rules`", + "concise_description": "Object of class `SavedView` has no attribute `filter_rules`", + "severity": "error" + }, + { + "line": 2101, + "column": 26, + "stop_line": 2101, + "stop_column": 41, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SavedView` has no attribute `filter_rules`", + "concise_description": "Object of class `SavedView` has no attribute `filter_rules`", + "severity": "error" + }, + { + "line": 2109, + "column": 26, + "stop_line": 2109, + "stop_column": 41, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SavedView` has no attribute `filter_rules`", + "concise_description": "Object of class `SavedView` has no attribute `filter_rules`", + "severity": "error" + }, + { + "line": 2110, + "column": 26, + "stop_line": 2110, + "stop_column": 41, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SavedView` has no attribute `filter_rules`", + "concise_description": "Object of class `SavedView` has no attribute `filter_rules`", + "severity": "error" + }, + { + "line": 2118, + "column": 26, + "stop_line": 2118, + "stop_column": 41, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `SavedView` has no attribute `filter_rules`", + "concise_description": "Object of class `SavedView` has no attribute `filter_rules`", + "severity": "error" + }, + { + "line": 2527, + "column": 27, + "stop_line": 2527, + "stop_column": 39, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `id`", + "concise_description": "Object of class `NoneType` has no attribute `id`", + "severity": "error" + }, + { + "line": 2528, + "column": 33, + "stop_line": 2528, + "stop_column": 51, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `username`", + "concise_description": "Object of class `NoneType` has no attribute `username`", + "severity": "error" + }, + { + "line": 2529, + "column": 35, + "stop_line": 2529, + "stop_column": 55, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `first_name`", + "concise_description": "Object of class `NoneType` has no attribute `first_name`", + "severity": "error" + }, + { + "line": 2530, + "column": 34, + "stop_line": 2530, + "stop_column": 53, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `last_name`", + "concise_description": "Object of class `NoneType` has no attribute `last_name`", + "severity": "error" + }, + { + "line": 3129, + "column": 20, + "stop_line": 3129, + "stop_column": 52, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `shutil.copy` called with arguments: (Path, Path | None)\n Possible overloads:\n (src: StrPath, dst: _StrPathT, *, follow_symlinks: bool = True) -> str | _StrPathT [closest match]\n (src: BytesPath, dst: _BytesPathT, *, follow_symlinks: bool = True) -> bytes | _BytesPathT", + "concise_description": "No matching overload found for function `shutil.copy` called with arguments: (Path, Path | None)", + "severity": "error" + }, + { + "line": 3466, + "column": 39, + "stop_line": 3466, + "stop_column": 53, + "path": "src/documents/tests/test_api_documents.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[bool] | list[date] | list[float] | list[int] | list[str]` is not assignable to parameter `iterable` with type `Iterable[bool]` in function `enumerate.__new__`", + "concise_description": "Argument `list[bool] | list[date] | list[float] | list[int] | list[str]` is not assignable to parameter `iterable` with type `Iterable[bool]` in function `enumerate.__new__`", + "severity": "error" + }, + { + "line": 44, + "column": 20, + "stop_line": 47, + "stop_column": 10, + "path": "src/documents/tests/test_api_email.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `shutil.copy` called with arguments: (Path, Path | None)\n Possible overloads:\n (src: StrPath, dst: _StrPathT, *, follow_symlinks: bool = True) -> str | _StrPathT [closest match]\n (src: BytesPath, dst: _BytesPathT, *, follow_symlinks: bool = True) -> bytes | _BytesPathT", + "concise_description": "No matching overload found for function `shutil.copy` called with arguments: (Path, Path | None)", + "severity": "error" + }, + { + "line": 103, + "column": 24, + "stop_line": 103, + "stop_column": 51, + "path": "src/documents/tests/test_api_email.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `stat`", + "concise_description": "Object of class `NoneType` has no attribute `stat`", + "severity": "error" + }, + { + "line": 25, + "column": 16, + "stop_line": 25, + "stop_column": 44, + "path": "src/documents/tests/test_api_filter_by_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 28, + "column": 16, + "stop_line": 28, + "stop_column": 44, + "path": "src/documents/tests/test_api_filter_by_custom_fields.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 222, + "column": 26, + "stop_line": 222, + "stop_column": 36, + "path": "src/documents/tests/test_api_permissions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 252, + "column": 26, + "stop_line": 252, + "stop_column": 36, + "path": "src/documents/tests/test_api_permissions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 299, + "column": 55, + "stop_line": 299, + "stop_column": 59, + "path": "src/documents/tests/test_api_permissions.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Tag | None` is not assignable to parameter `obj` with type `Model` in function `guardian.core.ObjectPermissionChecker.has_perm`", + "concise_description": "Argument `Tag | None` is not assignable to parameter `obj` with type `Model` in function `guardian.core.ObjectPermissionChecker.has_perm`", + "severity": "error" + }, + { + "line": 300, + "column": 53, + "stop_line": 300, + "stop_column": 57, + "path": "src/documents/tests/test_api_permissions.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Tag | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_perms`", + "concise_description": "Argument `Tag | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_perms`", + "severity": "error" + }, + { + "line": 344, + "column": 26, + "stop_line": 344, + "stop_column": 36, + "path": "src/documents/tests/test_api_permissions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 345, + "column": 53, + "stop_line": 345, + "stop_column": 57, + "path": "src/documents/tests/test_api_permissions.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Tag | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_perms`", + "concise_description": "Argument `Tag | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_perms`", + "severity": "error" + }, + { + "line": 46, + "column": 21, + "stop_line": 46, + "stop_column": 29, + "path": "src/documents/tests/test_api_profile.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `name`", + "concise_description": "Object of class `NoneType` has no attribute `name`", + "severity": "error" + }, + { + "line": 49, + "column": 19, + "stop_line": 49, + "stop_column": 39, + "path": "src/documents/tests/test_api_profile.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `provider_id`", + "concise_description": "Object of class `NoneType` has no attribute `provider_id`", + "severity": "error" + }, + { + "line": 71, + "column": 9, + "stop_line": 71, + "stop_column": 36, + "path": "src/documents/tests/test_api_profile.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `User` has no attribute `socialaccount_set`", + "concise_description": "Object of class `User` has no attribute `socialaccount_set`", + "severity": "error" + }, + { + "line": 279, + "column": 41, + "stop_line": 279, + "stop_column": 51, + "path": "src/documents/tests/test_api_profile.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `key`", + "concise_description": "Object of class `NoneType` has no attribute `key`", + "severity": "error" + }, + { + "line": 382, + "column": 29, + "stop_line": 382, + "stop_column": 56, + "path": "src/documents/tests/test_api_profile.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `User` has no attribute `socialaccount_set`", + "concise_description": "Object of class `User` has no attribute `socialaccount_set`", + "severity": "error" + }, + { + "line": 393, + "column": 17, + "stop_line": 393, + "stop_column": 44, + "path": "src/documents/tests/test_api_profile.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `User` has no attribute `socialaccount_set`", + "concise_description": "Object of class `User` has no attribute `socialaccount_set`", + "severity": "error" + }, + { + "line": 53, + "column": 52, + "stop_line": 53, + "stop_column": 65, + "path": "src/documents/tests/test_api_tasks.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 57, + "column": 52, + "stop_line": 57, + "stop_column": 65, + "path": "src/documents/tests/test_api_tasks.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 235, + "column": 20, + "stop_line": 235, + "stop_column": 33, + "path": "src/documents/tests/test_api_tasks.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 261, + "column": 20, + "stop_line": 261, + "stop_column": 33, + "path": "src/documents/tests/test_api_tasks.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 291, + "column": 20, + "stop_line": 291, + "stop_column": 33, + "path": "src/documents/tests/test_api_tasks.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 317, + "column": 20, + "stop_line": 317, + "stop_column": 33, + "path": "src/documents/tests/test_api_tasks.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 355, + "column": 20, + "stop_line": 355, + "stop_column": 33, + "path": "src/documents/tests/test_api_tasks.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 73, + "column": 23, + "stop_line": 73, + "stop_column": 49, + "path": "src/documents/tests/test_api_uisettings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `User` has no attribute `ui_settings`", + "concise_description": "Object of class `User` has no attribute `ui_settings`", + "severity": "error" + }, + { + "line": 99, + "column": 13, + "stop_line": 99, + "stop_column": 48, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `pk`", + "concise_description": "Object of class `NoneType` has no attribute `pk`", + "severity": "error" + }, + { + "line": 243, + "column": 17, + "stop_line": 243, + "stop_column": 40, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_tags`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_tags`", + "severity": "error" + }, + { + "line": 247, + "column": 17, + "stop_line": 247, + "stop_column": 44, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_all_tags`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_all_tags`", + "severity": "error" + }, + { + "line": 251, + "column": 17, + "stop_line": 251, + "stop_column": 44, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_not_tags`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_not_tags`", + "severity": "error" + }, + { + "line": 255, + "column": 17, + "stop_line": 255, + "stop_column": 54, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_any_correspondents`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_any_correspondents`", + "severity": "error" + }, + { + "line": 259, + "column": 17, + "stop_line": 259, + "stop_column": 54, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_not_correspondents`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_not_correspondents`", + "severity": "error" + }, + { + "line": 263, + "column": 17, + "stop_line": 263, + "stop_column": 54, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_any_document_types`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_any_document_types`", + "severity": "error" + }, + { + "line": 267, + "column": 17, + "stop_line": 267, + "stop_column": 54, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_not_document_types`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_not_document_types`", + "severity": "error" + }, + { + "line": 271, + "column": 17, + "stop_line": 271, + "stop_column": 53, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_any_storage_paths`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_any_storage_paths`", + "severity": "error" + }, + { + "line": 275, + "column": 17, + "stop_line": 275, + "stop_column": 53, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_not_storage_paths`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_not_storage_paths`", + "severity": "error" + }, + { + "line": 279, + "column": 13, + "stop_line": 279, + "stop_column": 46, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_custom_field_query`", + "concise_description": "Object of class `NoneType` has no attribute `filter_custom_field_query`", + "severity": "error" + }, + { + "line": 462, + "column": 26, + "stop_line": 462, + "stop_column": 67, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_tags`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_tags`", + "severity": "error" + }, + { + "line": 464, + "column": 13, + "stop_line": 464, + "stop_column": 58, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_all_tags`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_all_tags`", + "severity": "error" + }, + { + "line": 468, + "column": 13, + "stop_line": 468, + "stop_column": 58, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_not_tags`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_not_tags`", + "severity": "error" + }, + { + "line": 472, + "column": 13, + "stop_line": 472, + "stop_column": 68, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_any_correspondents`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_any_correspondents`", + "severity": "error" + }, + { + "line": 476, + "column": 13, + "stop_line": 476, + "stop_column": 68, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_not_correspondents`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_not_correspondents`", + "severity": "error" + }, + { + "line": 480, + "column": 13, + "stop_line": 480, + "stop_column": 68, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_any_document_types`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_any_document_types`", + "severity": "error" + }, + { + "line": 484, + "column": 13, + "stop_line": 484, + "stop_column": 68, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_not_document_types`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_not_document_types`", + "severity": "error" + }, + { + "line": 488, + "column": 13, + "stop_line": 488, + "stop_column": 67, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_any_storage_paths`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_any_storage_paths`", + "severity": "error" + }, + { + "line": 492, + "column": 13, + "stop_line": 492, + "stop_column": 67, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_has_not_storage_paths`", + "concise_description": "Object of class `NoneType` has no attribute `filter_has_not_storage_paths`", + "severity": "error" + }, + { + "line": 496, + "column": 13, + "stop_line": 496, + "stop_column": 64, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filter_custom_field_query`", + "concise_description": "Object of class `NoneType` has no attribute `filter_custom_field_query`", + "severity": "error" + }, + { + "line": 499, + "column": 26, + "stop_line": 499, + "stop_column": 63, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `assign_title`", + "concise_description": "Object of class `NoneType` has no attribute `assign_title`", + "severity": "error" + }, + { + "line": 581, + "column": 29, + "stop_line": 581, + "stop_column": 57, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `id`", + "concise_description": "Object of class `NoneType` has no attribute `id`", + "severity": "error" + }, + { + "line": 583, + "column": 29, + "stop_line": 583, + "stop_column": 56, + "path": "src/documents/tests/test_api_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `id`", + "concise_description": "Object of class `NoneType` has no attribute `id`", + "severity": "error" + }, + { + "line": 29, + "column": 12, + "stop_line": 29, + "stop_column": 20, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-import", + "description": "Cannot find module `zxingcpp`\n Looked in these locations (from config in `/home/trenton/projects/paperless-ngx/pyproject.toml`):\n Search path (from config file): [\"/home/trenton/projects/paperless-ngx/src\"]\n Import root (inferred from project layout): \"/home/trenton/projects/paperless-ngx/src\"\n Site package path queried from interpreter: [\"/home/trenton/.local/share/uv/python/cpython-3.13.4-linux-x86_64-gnu/lib/python3.13\", \"/home/trenton/.local/share/uv/python/cpython-3.13.4-linux-x86_64-gnu/lib/python3.13/lib-dynload\", \"/home/trenton/projects/paperless-ngx/.venv/lib/python3.13/site-packages\"]", + "concise_description": "Cannot find module `zxingcpp`", + "severity": "error" + }, + { + "line": 42, + "column": 13, + "stop_line": 42, + "stop_column": 54, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DummyProgressManager` is not assignable to parameter `status_mgr` with type `ProgressManager` in function `documents.barcodes.BarcodePlugin.__init__`", + "concise_description": "Argument `DummyProgressManager` is not assignable to parameter `status_mgr` with type `ProgressManager` in function `documents.barcodes.BarcodePlugin.__init__`", + "severity": "error" + }, + { + "line": 43, + "column": 13, + "stop_line": 43, + "stop_column": 22, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `GetReaderPluginMixin` has no attribute `dirs`", + "concise_description": "Object of class `GetReaderPluginMixin` has no attribute `dirs`", + "severity": "error" + }, + { + "line": 597, + "column": 9, + "stop_line": 597, + "stop_column": 36, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `barcodes_enabled`", + "concise_description": "Object of class `NoneType` has no attribute `barcodes_enabled`", + "severity": "error" + }, + { + "line": 598, + "column": 9, + "stop_line": 598, + "stop_column": 34, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `barcode_string`", + "concise_description": "Object of class `NoneType` has no attribute `barcode_string`", + "severity": "error" + }, + { + "line": 599, + "column": 9, + "stop_line": 599, + "stop_column": 24, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 631, + "column": 21, + "stop_line": 631, + "stop_column": 42, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 667, + "column": 5, + "stop_line": 667, + "stop_column": 20, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `(self: Self@TestAsnBarcode, filepath: Path) -> BarcodePlugin` is not assignable to parameter `func` with type `(self: Self@TestAsnBarcode, filepath: Path) -> Iterator[@_]` in function `contextlib.contextmanager`\n Protocol `Iterator` requires attribute `__next__`", + "concise_description": "Argument `(self: Self@TestAsnBarcode, filepath: Path) -> BarcodePlugin` is not assignable to parameter `func` with type `(self: Self@TestAsnBarcode, filepath: Path) -> Iterator[@_]` in function `contextlib.contextmanager`", + "severity": "error" + }, + { + "line": 668, + "column": 45, + "stop_line": 668, + "stop_column": 58, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "bad-return", + "description": "Generator function should return `Generator`", + "concise_description": "Generator function should return `Generator`", + "severity": "error" + }, + { + "line": 672, + "column": 13, + "stop_line": 672, + "stop_column": 54, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DummyProgressManager` is not assignable to parameter `status_mgr` with type `ProgressManager` in function `documents.barcodes.BarcodePlugin.__init__`", + "concise_description": "Argument `DummyProgressManager` is not assignable to parameter `status_mgr` with type `ProgressManager` in function `documents.barcodes.BarcodePlugin.__init__`", + "severity": "error" + }, + { + "line": 673, + "column": 13, + "stop_line": 673, + "stop_column": 34, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 785, + "column": 30, + "stop_line": 785, + "stop_column": 60, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `archive_serial_number`", + "concise_description": "Object of class `NoneType` has no attribute `archive_serial_number`", + "severity": "error" + }, + { + "line": 848, + "column": 5, + "stop_line": 848, + "stop_column": 20, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `(self: Self@TestTagBarcode, filepath: Path) -> BarcodePlugin` is not assignable to parameter `func` with type `(self: Self@TestTagBarcode, filepath: Path) -> Iterator[@_]` in function `contextlib.contextmanager`\n Protocol `Iterator` requires attribute `__next__`", + "concise_description": "Argument `(self: Self@TestTagBarcode, filepath: Path) -> BarcodePlugin` is not assignable to parameter `func` with type `(self: Self@TestTagBarcode, filepath: Path) -> Iterator[@_]` in function `contextlib.contextmanager`", + "severity": "error" + }, + { + "line": 849, + "column": 45, + "stop_line": 849, + "stop_column": 58, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "bad-return", + "description": "Generator function should return `Generator`", + "concise_description": "Generator function should return `Generator`", + "severity": "error" + }, + { + "line": 853, + "column": 13, + "stop_line": 853, + "stop_column": 54, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DummyProgressManager` is not assignable to parameter `status_mgr` with type `ProgressManager` in function `documents.barcodes.BarcodePlugin.__init__`", + "concise_description": "Argument `DummyProgressManager` is not assignable to parameter `status_mgr` with type `ProgressManager` in function `documents.barcodes.BarcodePlugin.__init__`", + "severity": "error" + }, + { + "line": 854, + "column": 13, + "stop_line": 854, + "stop_column": 34, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 1094, + "column": 30, + "stop_line": 1094, + "stop_column": 52, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `name`", + "concise_description": "Object of class `NoneType` has no attribute `name`", + "severity": "error" + }, + { + "line": 1098, + "column": 30, + "stop_line": 1098, + "stop_column": 52, + "path": "src/documents/tests/test_barcodes.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `name`", + "concise_description": "Object of class `NoneType` has no attribute `name`", + "severity": "error" + }, + { + "line": 74, + "column": 13, + "stop_line": 74, + "stop_column": 23, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `correspondent` with type `Correspondent` in function `documents.bulk_edit.set_correspondent`", + "concise_description": "Argument `int` is not assignable to parameter `correspondent` with type `Correspondent` in function `documents.bulk_edit.set_correspondent`", + "severity": "error" + }, + { + "line": 83, + "column": 81, + "stop_line": 83, + "stop_column": 85, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `correspondent` with type `Correspondent` in function `documents.bulk_edit.set_correspondent`", + "concise_description": "Argument `None` is not assignable to parameter `correspondent` with type `Correspondent` in function `documents.bulk_edit.set_correspondent`", + "severity": "error" + }, + { + "line": 93, + "column": 13, + "stop_line": 93, + "stop_column": 24, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `document_type` with type `DocumentType` in function `documents.bulk_edit.set_document_type`", + "concise_description": "Argument `int` is not assignable to parameter `document_type` with type `DocumentType` in function `documents.bulk_edit.set_document_type`", + "severity": "error" + }, + { + "line": 102, + "column": 81, + "stop_line": 102, + "stop_column": 85, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `document_type` with type `DocumentType` in function `documents.bulk_edit.set_document_type`", + "concise_description": "Argument `None` is not assignable to parameter `document_type` with type `DocumentType` in function `documents.bulk_edit.set_document_type`", + "severity": "error" + }, + { + "line": 121, + "column": 13, + "stop_line": 121, + "stop_column": 24, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `storage_path` with type `StoragePath` in function `documents.bulk_edit.set_storage_path`", + "concise_description": "Argument `int` is not assignable to parameter `storage_path` with type `StoragePath` in function `documents.bulk_edit.set_storage_path`", + "severity": "error" + }, + { + "line": 145, + "column": 13, + "stop_line": 145, + "stop_column": 24, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `storage_path` with type `StoragePath` in function `documents.bulk_edit.set_storage_path`", + "concise_description": "Argument `int` is not assignable to parameter `storage_path` with type `StoragePath` in function `documents.bulk_edit.set_storage_path`", + "severity": "error" + }, + { + "line": 152, + "column": 13, + "stop_line": 152, + "stop_column": 17, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `storage_path` with type `StoragePath` in function `documents.bulk_edit.set_storage_path`", + "concise_description": "Argument `None` is not assignable to parameter `storage_path` with type `StoragePath` in function `documents.bulk_edit.set_storage_path`", + "severity": "error" + }, + { + "line": 243, + "column": 13, + "stop_line": 243, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 247, + "column": 13, + "stop_line": 247, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 303, + "column": 13, + "stop_line": 303, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 307, + "column": 13, + "stop_line": 307, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 311, + "column": 13, + "stop_line": 311, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 315, + "column": 13, + "stop_line": 315, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 319, + "column": 13, + "stop_line": 319, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 324, + "column": 13, + "stop_line": 324, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 340, + "column": 13, + "stop_line": 340, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 344, + "column": 13, + "stop_line": 344, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 368, + "column": 13, + "stop_line": 368, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 372, + "column": 13, + "stop_line": 372, + "stop_column": 36, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 416, + "column": 48, + "stop_line": 416, + "stop_column": 50, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 422, + "column": 26, + "stop_line": 422, + "stop_column": 49, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 460, + "column": 48, + "stop_line": 460, + "stop_column": 50, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 466, + "column": 26, + "stop_line": 466, + "stop_column": 49, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 481, + "column": 19, + "stop_line": 481, + "stop_column": 40, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 490, + "column": 27, + "stop_line": 490, + "stop_column": 48, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `archive_dir`", + "concise_description": "Class `dirs` has no class attribute `archive_dir`", + "severity": "error" + }, + { + "line": 499, + "column": 19, + "stop_line": 499, + "stop_column": 40, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 508, + "column": 27, + "stop_line": 508, + "stop_column": 48, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `archive_dir`", + "concise_description": "Class `dirs` has no class attribute `archive_dir`", + "severity": "error" + }, + { + "line": 517, + "column": 19, + "stop_line": 517, + "stop_column": 40, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 550, + "column": 19, + "stop_line": 550, + "stop_column": 40, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 555, + "column": 27, + "stop_line": 555, + "stop_column": 48, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `archive_dir`", + "concise_description": "Class `dirs` has no class attribute `archive_dir`", + "severity": "error" + }, + { + "line": 895, + "column": 31, + "stop_line": 895, + "stop_column": 62, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "unsupported-operation", + "description": "`-` is not supported between `None` and `int`\n Argument `None` is not assignable to parameter `value` with type `int` in function `int.__rsub__`", + "concise_description": "`-` is not supported between `None` and `int`", + "severity": "error" + }, + { + "line": 1125, + "column": 20, + "stop_line": 1125, + "stop_column": 41, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 1183, + "column": 20, + "stop_line": 1183, + "stop_column": 41, + "path": "src/documents/tests/test_bulk_edit.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 38, + "column": 25, + "stop_line": 38, + "stop_column": 29, + "path": "src/documents/tests/test_checks.py", + "code": -2, + "name": "unexpected-keyword", + "description": "Unexpected keyword argument `hint` in function `BaseException.__init__`", + "concise_description": "Unexpected keyword argument `hint` in function `BaseException.__init__`", + "severity": "error" + }, + { + "line": 206, + "column": 18, + "stop_line": 206, + "stop_column": 67, + "path": "src/documents/tests/test_classifier.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `classes_`", + "concise_description": "Object of class `NoneType` has no attribute `classes_`", + "severity": "error" + }, + { + "line": 210, + "column": 18, + "stop_line": 210, + "stop_column": 57, + "path": "src/documents/tests/test_classifier.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `classes_`", + "concise_description": "Object of class `NoneType` has no attribute `classes_`", + "severity": "error" + }, + { + "line": 230, + "column": 23, + "stop_line": 230, + "stop_column": 64, + "path": "src/documents/tests/test_classifier.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `transform`", + "concise_description": "Object of class `NoneType` has no attribute `transform`", + "severity": "error" + }, + { + "line": 691, + "column": 13, + "stop_line": 691, + "stop_column": 34, + "path": "src/documents/tests/test_classifier.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 694, + "column": 24, + "stop_line": 694, + "stop_column": 45, + "path": "src/documents/tests/test_classifier.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 38, + "column": 9, + "stop_line": 38, + "stop_column": 21, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-override", + "description": "Class member `_BaseTestParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `_BaseTestParser.get_settings` has type `BoundMethod[_BaseTestParser, (self: _BaseTestParser) -> None]`, which is not assignable to `BoundMethod[_BaseTestParser, (self: _BaseTestParser) -> Never]`, the type of `DocumentParser.get_settings`", + "concise_description": "Class member `_BaseTestParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 51, + "column": 9, + "stop_line": 51, + "stop_column": 22, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DummyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner\n `DummyParser.get_thumbnail` has type `BoundMethod[DummyParser, (self: DummyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> str]`, which is not assignable to `BoundMethod[DummyParser, (self: DummyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.get_thumbnail`", + "concise_description": "Class member `DummyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 54, + "column": 9, + "stop_line": 54, + "stop_column": 14, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DummyParser.parse` overrides parent class `_BaseTestParser` in an inconsistent manner\n `DummyParser.parse` has type `BoundMethod[DummyParser, (self: DummyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[DummyParser, (self: DummyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.parse`", + "concise_description": "Class member `DummyParser.parse` overrides parent class `_BaseTestParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 59, + "column": 9, + "stop_line": 59, + "stop_column": 22, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-override", + "description": "Class member `CopyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner\n `CopyParser.get_thumbnail` has type `BoundMethod[CopyParser, (self: CopyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> str]`, which is not assignable to `BoundMethod[CopyParser, (self: CopyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.get_thumbnail`", + "concise_description": "Class member `CopyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 66, + "column": 9, + "stop_line": 66, + "stop_column": 14, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-override", + "description": "Class member `CopyParser.parse` overrides parent class `_BaseTestParser` in an inconsistent manner\n `CopyParser.parse` has type `BoundMethod[CopyParser, (self: CopyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[CopyParser, (self: CopyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.parse`", + "concise_description": "Class member `CopyParser.parse` overrides parent class `_BaseTestParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 77, + "column": 9, + "stop_line": 77, + "stop_column": 22, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-override", + "description": "Class member `FaultyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner\n `FaultyParser.get_thumbnail` has type `BoundMethod[FaultyParser, (self: FaultyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> str]`, which is not assignable to `BoundMethod[FaultyParser, (self: FaultyParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.get_thumbnail`", + "concise_description": "Class member `FaultyParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 89, + "column": 9, + "stop_line": 89, + "stop_column": 22, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-override", + "description": "Class member `FaultyGenericExceptionParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner\n `FaultyGenericExceptionParser.get_thumbnail` has type `BoundMethod[FaultyGenericExceptionParser, (self: FaultyGenericExceptionParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> str]`, which is not assignable to `BoundMethod[FaultyGenericExceptionParser, (self: FaultyGenericExceptionParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `_BaseTestParser.get_thumbnail`", + "concise_description": "Class member `FaultyGenericExceptionParser.get_thumbnail` overrides parent class `_BaseTestParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 147, + "column": 13, + "stop_line": 147, + "stop_column": 34, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 152, + "column": 44, + "stop_line": 152, + "stop_column": 65, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 159, + "column": 60, + "stop_line": 159, + "stop_column": 81, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 186, + "column": 15, + "stop_line": 186, + "stop_column": 36, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 198, + "column": 15, + "stop_line": 198, + "stop_column": 36, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 206, + "column": 15, + "stop_line": 206, + "stop_column": 36, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 239, + "column": 27, + "stop_line": 239, + "stop_column": 48, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 257, + "column": 28, + "stop_line": 257, + "stop_column": 49, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 320, + "column": 26, + "stop_line": 320, + "stop_column": 51, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `id`", + "concise_description": "Object of class `NoneType` has no attribute `id`", + "severity": "error" + }, + { + "line": 334, + "column": 26, + "stop_line": 334, + "stop_column": 48, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 348, + "column": 26, + "stop_line": 348, + "stop_column": 47, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 364, + "column": 27, + "stop_line": 364, + "stop_column": 40, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 365, + "column": 30, + "stop_line": 365, + "stop_column": 43, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 366, + "column": 27, + "stop_line": 366, + "stop_column": 40, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 391, + "column": 56, + "stop_line": 391, + "stop_column": 78, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 396, + "column": 26, + "stop_line": 396, + "stop_column": 48, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 398, + "column": 13, + "stop_line": 398, + "stop_column": 35, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 412, + "column": 26, + "stop_line": 412, + "stop_column": 56, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `archive_serial_number`", + "concise_description": "Object of class `NoneType` has no attribute `archive_serial_number`", + "severity": "error" + }, + { + "line": 440, + "column": 26, + "stop_line": 440, + "stop_column": 40, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 454, + "column": 26, + "stop_line": 454, + "stop_column": 40, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 473, + "column": 64, + "stop_line": 473, + "stop_column": 72, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.core.ObjectPermissionChecker.has_perm`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.core.ObjectPermissionChecker.has_perm`", + "severity": "error" + }, + { + "line": 475, + "column": 65, + "stop_line": 475, + "stop_column": 73, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.core.ObjectPermissionChecker.has_perm`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.core.ObjectPermissionChecker.has_perm`", + "severity": "error" + }, + { + "line": 543, + "column": 13, + "stop_line": 543, + "stop_column": 28, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `delete`", + "concise_description": "Object of class `NoneType` has no attribute `delete`", + "severity": "error" + }, + { + "line": 639, + "column": 26, + "stop_line": 639, + "stop_column": 40, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 640, + "column": 26, + "stop_line": 640, + "stop_column": 43, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filename`", + "concise_description": "Object of class `NoneType` has no attribute `filename`", + "severity": "error" + }, + { + "line": 641, + "column": 26, + "stop_line": 641, + "stop_column": 51, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `archive_filename`", + "concise_description": "Object of class `NoneType` has no attribute `archive_filename`", + "severity": "error" + }, + { + "line": 667, + "column": 26, + "stop_line": 667, + "stop_column": 40, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 669, + "column": 27, + "stop_line": 669, + "stop_column": 47, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `source_path`", + "concise_description": "Object of class `NoneType` has no attribute `source_path`", + "severity": "error" + }, + { + "line": 670, + "column": 27, + "stop_line": 670, + "stop_column": 48, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `archive_path`", + "concise_description": "Object of class `NoneType` has no attribute `archive_path`", + "severity": "error" + }, + { + "line": 697, + "column": 26, + "stop_line": 697, + "stop_column": 48, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 698, + "column": 26, + "stop_line": 698, + "stop_column": 48, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 699, + "column": 27, + "stop_line": 699, + "stop_column": 40, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 700, + "column": 30, + "stop_line": 700, + "stop_column": 43, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 743, + "column": 9, + "stop_line": 743, + "stop_column": 24, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `delete`", + "concise_description": "Object of class `NoneType` has no attribute `delete`", + "severity": "error" + }, + { + "line": 750, + "column": 37, + "stop_line": 750, + "stop_column": 51, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 750, + "column": 56, + "stop_line": 750, + "stop_column": 67, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `pk`", + "concise_description": "Object of class `NoneType` has no attribute `pk`", + "severity": "error" + }, + { + "line": 828, + "column": 26, + "stop_line": 828, + "stop_column": 39, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filename`", + "concise_description": "Object of class `NoneType` has no attribute `filename`", + "severity": "error" + }, + { + "line": 829, + "column": 26, + "stop_line": 829, + "stop_column": 47, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `archive_filename`", + "concise_description": "Object of class `NoneType` has no attribute `archive_filename`", + "severity": "error" + }, + { + "line": 831, + "column": 26, + "stop_line": 831, + "stop_column": 39, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filename`", + "concise_description": "Object of class `NoneType` has no attribute `filename`", + "severity": "error" + }, + { + "line": 832, + "column": 26, + "stop_line": 832, + "stop_column": 47, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `archive_filename`", + "concise_description": "Object of class `NoneType` has no attribute `archive_filename`", + "severity": "error" + }, + { + "line": 834, + "column": 26, + "stop_line": 834, + "stop_column": 39, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `filename`", + "concise_description": "Object of class `NoneType` has no attribute `filename`", + "severity": "error" + }, + { + "line": 835, + "column": 26, + "stop_line": 835, + "stop_column": 47, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `archive_filename`", + "concise_description": "Object of class `NoneType` has no attribute `archive_filename`", + "severity": "error" + }, + { + "line": 934, + "column": 15, + "stop_line": 934, + "stop_column": 36, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 943, + "column": 13, + "stop_line": 943, + "stop_column": 29, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `created`", + "concise_description": "Object of class `NoneType` has no attribute `created`", + "severity": "error" + }, + { + "line": 964, + "column": 15, + "stop_line": 964, + "stop_column": 36, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 973, + "column": 13, + "stop_line": 973, + "stop_column": 29, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `created`", + "concise_description": "Object of class `NoneType` has no attribute `created`", + "severity": "error" + }, + { + "line": 994, + "column": 15, + "stop_line": 994, + "stop_column": 36, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 1003, + "column": 13, + "stop_line": 1003, + "stop_column": 29, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `created`", + "concise_description": "Object of class `NoneType` has no attribute `created`", + "severity": "error" + }, + { + "line": 1026, + "column": 15, + "stop_line": 1026, + "stop_column": 36, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 1035, + "column": 13, + "stop_line": 1035, + "stop_column": 29, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `created`", + "concise_description": "Object of class `NoneType` has no attribute `created`", + "severity": "error" + }, + { + "line": 1050, + "column": 26, + "stop_line": 1050, + "stop_column": 47, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 1161, + "column": 26, + "stop_line": 1161, + "stop_column": 47, + "path": "src/documents/tests/test_consumer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 32, + "column": 38, + "stop_line": 32, + "stop_column": 63, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `consumption_dir`", + "concise_description": "Class `dirs` has no class attribute `consumption_dir`", + "severity": "error" + }, + { + "line": 33, + "column": 9, + "stop_line": 33, + "stop_column": 35, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `double_sided_dir`", + "concise_description": "Class `dirs` has no class attribute `double_sided_dir`", + "severity": "error" + }, + { + "line": 34, + "column": 29, + "stop_line": 34, + "stop_column": 50, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 42, + "column": 15, + "stop_line": 42, + "stop_column": 41, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `double_sided_dir`", + "concise_description": "Class `dirs` has no class attribute `double_sided_dir`", + "severity": "error" + }, + { + "line": 63, + "column": 42, + "stop_line": 63, + "stop_column": 69, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `tuple[float | Unknown, ...]` is not assignable to parameter `times` with type `tuple[float, float] | tuple[int, int] | None` in function `os.utime`", + "concise_description": "Argument `tuple[float | Unknown, ...]` is not assignable to parameter `times` with type `tuple[float, float] | tuple[int, int] | None` in function `os.utime`", + "severity": "error" + }, + { + "line": 106, + "column": 18, + "stop_line": 106, + "stop_column": 43, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `consumption_dir`", + "concise_description": "Class `dirs` has no class attribute `consumption_dir`", + "severity": "error" + }, + { + "line": 240, + "column": 21, + "stop_line": 240, + "stop_column": 46, + "path": "src/documents/tests/test_double_sided.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `consumption_dir`", + "concise_description": "Class `dirs` has no class attribute `consumption_dir`", + "severity": "error" + }, + { + "line": 505, + "column": 18, + "stop_line": 505, + "stop_column": 34, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 588, + "column": 27, + "stop_line": 588, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 608, + "column": 27, + "stop_line": 608, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 635, + "column": 30, + "stop_line": 635, + "stop_column": 46, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsNotFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsNotFile`", + "severity": "error" + }, + { + "line": 658, + "column": 27, + "stop_line": 658, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 682, + "column": 27, + "stop_line": 682, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 704, + "column": 27, + "stop_line": 704, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 735, + "column": 27, + "stop_line": 735, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 755, + "column": 27, + "stop_line": 755, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 786, + "column": 27, + "stop_line": 786, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 806, + "column": 27, + "stop_line": 806, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 814, + "column": 30, + "stop_line": 814, + "stop_column": 46, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsNotFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsNotFile`", + "severity": "error" + }, + { + "line": 841, + "column": 27, + "stop_line": 841, + "stop_column": 44, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 848, + "column": 27, + "stop_line": 848, + "stop_column": 44, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 874, + "column": 27, + "stop_line": 874, + "stop_column": 43, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 1657, + "column": 31, + "stop_line": 1657, + "stop_column": 48, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 1680, + "column": 31, + "stop_line": 1680, + "stop_column": 48, + "path": "src/documents/tests/test_file_handling.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Any | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 166, + "column": 27, + "stop_line": 166, + "stop_column": 40, + "path": "src/documents/tests/test_filters.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal[1698330605] | dict[Any, Any] | list[object] | None` is not assignable to parameter `value` with type `date | datetime | str` in function `documents.templating.filters.localize_date`", + "concise_description": "Argument `Literal[1698330605] | dict[Any, Any] | list[object] | None` is not assignable to parameter `value` with type `date | datetime | str` in function `documents.templating.filters.localize_date`", + "severity": "error" + }, + { + "line": 34, + "column": 39, + "stop_line": 34, + "stop_column": 62, + "path": "src/documents/tests/test_management.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 40, + "column": 39, + "stop_line": 40, + "stop_column": 62, + "path": "src/documents/tests/test_management.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 48, + "column": 27, + "stop_line": 48, + "stop_column": 43, + "path": "src/documents/tests/test_management.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 84, + "column": 39, + "stop_line": 84, + "stop_column": 62, + "path": "src/documents/tests/test_management.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 85, + "column": 39, + "stop_line": 85, + "stop_column": 62, + "path": "src/documents/tests/test_management.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 118, + "column": 14, + "stop_line": 118, + "stop_column": 30, + "path": "src/documents/tests/test_management.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 128, + "column": 30, + "stop_line": 128, + "stop_column": 46, + "path": "src/documents/tests/test_management.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsNotFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsNotFile`", + "severity": "error" + }, + { + "line": 130, + "column": 27, + "stop_line": 130, + "stop_column": 44, + "path": "src/documents/tests/test_management.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 56, + "column": 24, + "stop_line": 56, + "stop_column": 52, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-argument", + "description": "Missing argument `ignore_errors` in function `unittest.case.TestCase.addCleanup`", + "concise_description": "Missing argument `ignore_errors` in function `unittest.case.TestCase.addCleanup`", + "severity": "error" + }, + { + "line": 56, + "column": 24, + "stop_line": 56, + "stop_column": 52, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-argument", + "description": "Missing argument `onerror` in function `unittest.case.TestCase.addCleanup`", + "concise_description": "Missing argument `onerror` in function `unittest.case.TestCase.addCleanup`", + "severity": "error" + }, + { + "line": 182, + "column": 22, + "stop_line": 182, + "stop_column": 27, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "concise_description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "severity": "error" + }, + { + "line": 190, + "column": 28, + "stop_line": 190, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 193, + "column": 18, + "stop_line": 193, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 292, + "column": 28, + "stop_line": 292, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 295, + "column": 18, + "stop_line": 295, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 304, + "column": 28, + "stop_line": 304, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 307, + "column": 18, + "stop_line": 307, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 343, + "column": 28, + "stop_line": 343, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 346, + "column": 18, + "stop_line": 346, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 373, + "column": 28, + "stop_line": 373, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 376, + "column": 18, + "stop_line": 376, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 408, + "column": 28, + "stop_line": 408, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 411, + "column": 18, + "stop_line": 411, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 433, + "column": 24, + "stop_line": 433, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-argument", + "description": "Missing argument `ignore_errors` in function `unittest.case.TestCase.addCleanup`", + "concise_description": "Missing argument `ignore_errors` in function `unittest.case.TestCase.addCleanup`", + "severity": "error" + }, + { + "line": 433, + "column": 24, + "stop_line": 433, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-argument", + "description": "Missing argument `onerror` in function `unittest.case.TestCase.addCleanup`", + "concise_description": "Missing argument `onerror` in function `unittest.case.TestCase.addCleanup`", + "severity": "error" + }, + { + "line": 453, + "column": 28, + "stop_line": 453, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 456, + "column": 18, + "stop_line": 456, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 461, + "column": 22, + "stop_line": 461, + "stop_column": 27, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "concise_description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "severity": "error" + }, + { + "line": 486, + "column": 28, + "stop_line": 486, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 489, + "column": 18, + "stop_line": 489, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 497, + "column": 26, + "stop_line": 497, + "stop_column": 31, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "concise_description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "severity": "error" + }, + { + "line": 526, + "column": 28, + "stop_line": 526, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 529, + "column": 18, + "stop_line": 529, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 543, + "column": 22, + "stop_line": 543, + "stop_column": 27, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "concise_description": "Argument `Path | str` is not assignable to parameter `command_name` with type `BaseCommand | str` in function `django.core.management.call_command`", + "severity": "error" + }, + { + "line": 624, + "column": 28, + "stop_line": 624, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 627, + "column": 18, + "stop_line": 627, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 665, + "column": 28, + "stop_line": 665, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 668, + "column": 18, + "stop_line": 668, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 708, + "column": 28, + "stop_line": 708, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 711, + "column": 18, + "stop_line": 711, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 739, + "column": 28, + "stop_line": 739, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 742, + "column": 18, + "stop_line": 742, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 764, + "column": 28, + "stop_line": 764, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 767, + "column": 18, + "stop_line": 767, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 799, + "column": 28, + "stop_line": 799, + "stop_column": 47, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 802, + "column": 18, + "stop_line": 802, + "stop_column": 37, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 823, + "column": 23, + "stop_line": 823, + "stop_column": 42, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 826, + "column": 13, + "stop_line": 826, + "stop_column": 32, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 836, + "column": 23, + "stop_line": 836, + "stop_column": 42, + "path": "src/documents/tests/test_management_exporter.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 41, + "column": 21, + "stop_line": 41, + "stop_column": 42, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 59, + "column": 25, + "stop_line": 59, + "stop_column": 46, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 67, + "column": 21, + "stop_line": 67, + "stop_column": 42, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 85, + "column": 25, + "stop_line": 85, + "stop_column": 46, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 96, + "column": 21, + "stop_line": 96, + "stop_column": 42, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 200, + "column": 10, + "stop_line": 200, + "stop_column": 33, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 202, + "column": 10, + "stop_line": 202, + "stop_column": 33, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 210, + "column": 21, + "stop_line": 210, + "stop_column": 42, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 238, + "column": 21, + "stop_line": 238, + "stop_column": 42, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 274, + "column": 21, + "stop_line": 274, + "stop_column": 42, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 294, + "column": 10, + "stop_line": 294, + "stop_column": 31, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 301, + "column": 21, + "stop_line": 301, + "stop_column": 42, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 320, + "column": 10, + "stop_line": 320, + "stop_column": 31, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 321, + "column": 10, + "stop_line": 321, + "stop_column": 31, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 330, + "column": 21, + "stop_line": 330, + "stop_column": 42, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 350, + "column": 20, + "stop_line": 350, + "stop_column": 41, + "path": "src/documents/tests/test_management_importer.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 25, + "column": 30, + "stop_line": 25, + "stop_column": 74, + "path": "src/documents/tests/test_models.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 30, + "column": 27, + "stop_line": 30, + "stop_column": 71, + "path": "src/documents/tests/test_models.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 154, + "column": 17, + "stop_line": 154, + "stop_column": 58, + "path": "src/documents/tests/test_parsers.py", + "code": -2, + "name": "not-callable", + "description": "Expected a callable, got `None`", + "concise_description": "Expected a callable, got `None`", + "severity": "error" + }, + { + "line": 178, + "column": 17, + "stop_line": 178, + "stop_column": 58, + "path": "src/documents/tests/test_parsers.py", + "code": -2, + "name": "not-callable", + "description": "Expected a callable, got `None`", + "concise_description": "Expected a callable, got `None`", + "severity": "error" + }, + { + "line": 211, + "column": 17, + "stop_line": 211, + "stop_column": 58, + "path": "src/documents/tests/test_parsers.py", + "code": -2, + "name": "not-callable", + "description": "Expected a callable, got `None`", + "concise_description": "Expected a callable, got `None`", + "severity": "error" + }, + { + "line": 27, + "column": 22, + "stop_line": 27, + "stop_column": 45, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 37, + "column": 22, + "stop_line": 37, + "stop_column": 43, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `archive_dir`", + "concise_description": "Class `dirs` has no class attribute `archive_dir`", + "severity": "error" + }, + { + "line": 47, + "column": 22, + "stop_line": 47, + "stop_column": 45, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `thumbnail_dir`", + "concise_description": "Class `dirs` has no class attribute `thumbnail_dir`", + "severity": "error" + }, + { + "line": 123, + "column": 14, + "stop_line": 123, + "stop_column": 30, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 128, + "column": 14, + "stop_line": 128, + "stop_column": 30, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 130, + "column": 14, + "stop_line": 130, + "stop_column": 30, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `*args` with type `PathLike[str] | str` in function `pathlib.Path.__new__`", + "severity": "error" + }, + { + "line": 153, + "column": 14, + "stop_line": 153, + "stop_column": 37, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 157, + "column": 32, + "stop_line": 157, + "stop_column": 36, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `dict[int, list[dict[Unknown, Unknown]]]`\n Argument `None` is not assignable to parameter `key` with type `int` in function `dict.__getitem__`", + "concise_description": "Cannot index into `dict[int, list[dict[Unknown, Unknown]]]`", + "severity": "error" + }, + { + "line": 166, + "column": 25, + "stop_line": 166, + "stop_column": 44, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 168, + "column": 14, + "stop_line": 168, + "stop_column": 33, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 174, + "column": 14, + "stop_line": 174, + "stop_column": 33, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 175, + "column": 14, + "stop_line": 175, + "stop_column": 33, + "path": "src/documents/tests/test_sanity_check.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 125, + "column": 28, + "stop_line": 125, + "stop_column": 47, + "path": "src/documents/tests/test_share_link_bundles.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 139, + "column": 28, + "stop_line": 139, + "stop_column": 54, + "path": "src/documents/tests/test_share_link_bundles.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `_MonkeyPatchedResponse` has no attribute `streaming_content`", + "concise_description": "Object of class `_MonkeyPatchedResponse` has no attribute `streaming_content`", + "severity": "error" + }, + { + "line": 200, + "column": 29, + "stop_line": 200, + "stop_column": 48, + "path": "src/documents/tests/test_share_link_bundles.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 204, + "column": 28, + "stop_line": 204, + "stop_column": 47, + "path": "src/documents/tests/test_share_link_bundles.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 434, + "column": 30, + "stop_line": 434, + "stop_column": 49, + "path": "src/documents/tests/test_share_link_bundles.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 437, + "column": 26, + "stop_line": 437, + "stop_column": 59, + "path": "src/documents/tests/test_share_link_bundles.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `resolve`", + "concise_description": "Object of class `NoneType` has no attribute `resolve`", + "severity": "error" + }, + { + "line": 94, + "column": 23, + "stop_line": 94, + "stop_column": 35, + "path": "src/documents/tests/test_tag_hierarchy.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "concise_description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "severity": "error" + }, + { + "line": 107, + "column": 23, + "stop_line": 107, + "stop_column": 35, + "path": "src/documents/tests/test_tag_hierarchy.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "concise_description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "severity": "error" + }, + { + "line": 54, + "column": 35, + "stop_line": 54, + "stop_column": 59, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['/consume/hello-999.pdf']` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "concise_description": "Argument `Literal['/consume/hello-999.pdf']` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "severity": "error" + }, + { + "line": 77, + "column": 26, + "stop_line": 77, + "stop_column": 39, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 98, + "column": 35, + "stop_line": 98, + "stop_column": 58, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['/consume/hello-99.pdf']` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "concise_description": "Argument `Literal['/consume/hello-99.pdf']` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "severity": "error" + }, + { + "line": 117, + "column": 26, + "stop_line": 117, + "stop_column": 39, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 137, + "column": 35, + "stop_line": 137, + "stop_column": 57, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['/consume/hello-9.pdf']` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "concise_description": "Argument `Literal['/consume/hello-9.pdf']` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "severity": "error" + }, + { + "line": 154, + "column": 19, + "stop_line": 154, + "stop_column": 32, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 159, + "column": 26, + "stop_line": 159, + "stop_column": 39, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 179, + "column": 35, + "stop_line": 179, + "stop_column": 57, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['/consume/hello-9.pdf']` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "concise_description": "Argument `Literal['/consume/hello-9.pdf']` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "severity": "error" + }, + { + "line": 200, + "column": 26, + "stop_line": 200, + "stop_column": 39, + "path": "src/documents/tests/test_task_signals.py", + "code": -2, + "name": "implicit-import", + "description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "concise_description": "Module `celery.states` exists, but was not imported explicitly. You are relying on other modules to load it.", + "severity": "error" + }, + { + "line": 216, + "column": 19, + "stop_line": 216, + "stop_column": 40, + "path": "src/documents/tests/test_tasks.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 225, + "column": 27, + "stop_line": 225, + "stop_column": 48, + "path": "src/documents/tests/test_tasks.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `archive_dir`", + "concise_description": "Class `dirs` has no class attribute `archive_dir`", + "severity": "error" + }, + { + "line": 257, + "column": 19, + "stop_line": 257, + "stop_column": 40, + "path": "src/documents/tests/test_tasks.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 335, + "column": 55, + "stop_line": 335, + "stop_column": 66, + "path": "src/documents/tests/test_tasks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "severity": "error" + }, + { + "line": 41, + "column": 26, + "stop_line": 41, + "stop_column": 38, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "concise_description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "severity": "error" + }, + { + "line": 66, + "column": 17, + "stop_line": 66, + "stop_column": 53, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 70, + "column": 17, + "stop_line": 70, + "stop_column": 52, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 74, + "column": 17, + "stop_line": 74, + "stop_column": 52, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 78, + "column": 17, + "stop_line": 78, + "stop_column": 54, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 82, + "column": 17, + "stop_line": 82, + "stop_column": 49, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 97, + "column": 9, + "stop_line": 97, + "stop_column": 24, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_logo`", + "concise_description": "Object of class `NoneType` has no attribute `app_logo`", + "severity": "error" + }, + { + "line": 98, + "column": 9, + "stop_line": 98, + "stop_column": 20, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 103, + "column": 26, + "stop_line": 103, + "stop_column": 41, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_logo`", + "concise_description": "Object of class `NoneType` has no attribute `app_logo`", + "severity": "error" + }, + { + "line": 120, + "column": 44, + "stop_line": 120, + "stop_column": 67, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 159, + "column": 9, + "stop_line": 159, + "stop_column": 24, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `render`", + "concise_description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `render`", + "severity": "error" + }, + { + "line": 168, + "column": 9, + "stop_line": 168, + "stop_column": 24, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `render`", + "concise_description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `render`", + "severity": "error" + }, + { + "line": 369, + "column": 13, + "stop_line": 372, + "stop_column": 26, + "path": "src/documents/tests/test_views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `suggestions`", + "concise_description": "Object of class `NoneType` has no attribute `suggestions`", + "severity": "error" + }, + { + "line": 136, + "column": 30, + "stop_line": 136, + "stop_column": 51, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 172, + "column": 13, + "stop_line": 172, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 186, + "column": 34, + "stop_line": 186, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 187, + "column": 34, + "stop_line": 187, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 188, + "column": 39, + "stop_line": 188, + "stop_column": 52, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 189, + "column": 34, + "stop_line": 189, + "stop_column": 55, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 190, + "column": 34, + "stop_line": 190, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 194, + "column": 29, + "stop_line": 194, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 201, + "column": 25, + "stop_line": 205, + "stop_column": 22, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", + "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "severity": "error" + }, + { + "line": 203, + "column": 29, + "stop_line": 203, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 211, + "column": 29, + "stop_line": 211, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 218, + "column": 25, + "stop_line": 222, + "stop_column": 22, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", + "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "severity": "error" + }, + { + "line": 220, + "column": 29, + "stop_line": 220, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 226, + "column": 21, + "stop_line": 226, + "stop_column": 35, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 230, + "column": 26, + "stop_line": 230, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 234, + "column": 21, + "stop_line": 234, + "stop_column": 43, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 283, + "column": 13, + "stop_line": 283, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 297, + "column": 34, + "stop_line": 297, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 298, + "column": 34, + "stop_line": 298, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 299, + "column": 39, + "stop_line": 299, + "stop_column": 52, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 300, + "column": 34, + "stop_line": 300, + "stop_column": 55, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 301, + "column": 34, + "stop_line": 301, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 305, + "column": 29, + "stop_line": 305, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 312, + "column": 25, + "stop_line": 316, + "stop_column": 22, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", + "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "severity": "error" + }, + { + "line": 314, + "column": 29, + "stop_line": 314, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 322, + "column": 29, + "stop_line": 322, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 329, + "column": 25, + "stop_line": 333, + "stop_column": 22, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", + "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "severity": "error" + }, + { + "line": 331, + "column": 29, + "stop_line": 331, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 337, + "column": 21, + "stop_line": 337, + "stop_column": 35, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 357, + "column": 30, + "stop_line": 357, + "stop_column": 51, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 401, + "column": 13, + "stop_line": 401, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 415, + "column": 34, + "stop_line": 415, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 417, + "column": 34, + "stop_line": 417, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 418, + "column": 34, + "stop_line": 418, + "stop_column": 55, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 421, + "column": 26, + "stop_line": 421, + "stop_column": 39, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 427, + "column": 29, + "stop_line": 427, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 452, + "column": 29, + "stop_line": 452, + "stop_column": 50, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 469, + "column": 13, + "stop_line": 469, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 482, + "column": 34, + "stop_line": 482, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 521, + "column": 13, + "stop_line": 521, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 534, + "column": 35, + "stop_line": 534, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 535, + "column": 35, + "stop_line": 535, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 536, + "column": 34, + "stop_line": 536, + "stop_column": 47, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 537, + "column": 35, + "stop_line": 537, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 538, + "column": 35, + "stop_line": 538, + "stop_column": 49, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 541, + "column": 25, + "stop_line": 541, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 543, + "column": 28, + "stop_line": 543, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 546, + "column": 34, + "stop_line": 546, + "stop_column": 71, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 546, + "column": 56, + "stop_line": 546, + "stop_column": 64, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 549, + "column": 25, + "stop_line": 549, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 551, + "column": 28, + "stop_line": 551, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 554, + "column": 34, + "stop_line": 554, + "stop_column": 71, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 554, + "column": 56, + "stop_line": 554, + "stop_column": 64, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 555, + "column": 34, + "stop_line": 555, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 559, + "column": 45, + "stop_line": 559, + "stop_column": 59, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `str` has no attribute `name`", + "concise_description": "Object of class `str` has no attribute `name`", + "severity": "error" + }, + { + "line": 595, + "column": 13, + "stop_line": 595, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 608, + "column": 35, + "stop_line": 608, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 609, + "column": 35, + "stop_line": 609, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 610, + "column": 34, + "stop_line": 610, + "stop_column": 47, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 611, + "column": 35, + "stop_line": 611, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 612, + "column": 35, + "stop_line": 612, + "stop_column": 49, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 615, + "column": 25, + "stop_line": 615, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 617, + "column": 28, + "stop_line": 617, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 621, + "column": 21, + "stop_line": 623, + "stop_column": 28, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 622, + "column": 25, + "stop_line": 622, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 628, + "column": 25, + "stop_line": 628, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 630, + "column": 28, + "stop_line": 630, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 634, + "column": 21, + "stop_line": 636, + "stop_column": 28, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 635, + "column": 25, + "stop_line": 635, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 639, + "column": 34, + "stop_line": 639, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 679, + "column": 13, + "stop_line": 679, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 693, + "column": 35, + "stop_line": 693, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 694, + "column": 35, + "stop_line": 694, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 695, + "column": 34, + "stop_line": 695, + "stop_column": 47, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 696, + "column": 35, + "stop_line": 696, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 697, + "column": 35, + "stop_line": 697, + "stop_column": 49, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 700, + "column": 25, + "stop_line": 700, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 702, + "column": 28, + "stop_line": 702, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 706, + "column": 21, + "stop_line": 708, + "stop_column": 28, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 707, + "column": 25, + "stop_line": 707, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 713, + "column": 25, + "stop_line": 713, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 715, + "column": 28, + "stop_line": 715, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 719, + "column": 21, + "stop_line": 721, + "stop_column": 28, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 720, + "column": 25, + "stop_line": 720, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 724, + "column": 34, + "stop_line": 724, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 764, + "column": 13, + "stop_line": 764, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 777, + "column": 35, + "stop_line": 777, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 778, + "column": 35, + "stop_line": 778, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 779, + "column": 34, + "stop_line": 779, + "stop_column": 47, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 780, + "column": 35, + "stop_line": 780, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 781, + "column": 35, + "stop_line": 781, + "stop_column": 49, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 784, + "column": 25, + "stop_line": 784, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 786, + "column": 28, + "stop_line": 786, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 790, + "column": 21, + "stop_line": 792, + "stop_column": 28, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 791, + "column": 25, + "stop_line": 791, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 797, + "column": 25, + "stop_line": 797, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 799, + "column": 28, + "stop_line": 799, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 803, + "column": 21, + "stop_line": 805, + "stop_column": 28, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 804, + "column": 25, + "stop_line": 804, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 808, + "column": 34, + "stop_line": 808, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 882, + "column": 13, + "stop_line": 882, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 896, + "column": 26, + "stop_line": 896, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1314, + "column": 40, + "stop_line": 1314, + "stop_column": 46, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "severity": "error" + }, + { + "line": 1330, + "column": 35, + "stop_line": 1330, + "stop_column": 41, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "severity": "error" + }, + { + "line": 1349, + "column": 39, + "stop_line": 1349, + "stop_column": 45, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "severity": "error" + }, + { + "line": 1772, + "column": 26, + "stop_line": 1772, + "stop_column": 43, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1797, + "column": 13, + "stop_line": 1797, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 1809, + "column": 17, + "stop_line": 1809, + "stop_column": 31, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 1855, + "column": 26, + "stop_line": 1855, + "stop_column": 43, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1904, + "column": 38, + "stop_line": 1907, + "stop_column": 10, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-assignment", + "description": "`list[str] | Any` is not assignable to `QuerySet[Unknown, Unknown]`", + "concise_description": "`list[str] | Any` is not assignable to `QuerySet[Unknown, Unknown]`", + "severity": "error" + }, + { + "line": 1908, + "column": 40, + "stop_line": 1911, + "stop_column": 10, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-assignment", + "description": "`list[str] | Any` is not assignable to `QuerySet[Unknown, Unknown]`", + "concise_description": "`list[str] | Any` is not assignable to `QuerySet[Unknown, Unknown]`", + "severity": "error" + }, + { + "line": 1919, + "column": 33, + "stop_line": 1919, + "stop_column": 59, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-assignment", + "description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", + "concise_description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", + "severity": "error" + }, + { + "line": 2598, + "column": 26, + "stop_line": 2598, + "stop_column": 43, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 2601, + "column": 33, + "stop_line": 2601, + "stop_column": 59, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-assignment", + "description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", + "concise_description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", + "severity": "error" + }, + { + "line": 2669, + "column": 26, + "stop_line": 2669, + "stop_column": 43, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 2672, + "column": 33, + "stop_line": 2672, + "stop_column": 59, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-assignment", + "description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", + "concise_description": "`Group | dict[Unknown, Unknown]` is not assignable to `QuerySet[Unknown, Unknown]`", + "severity": "error" + }, + { + "line": 2736, + "column": 13, + "stop_line": 2736, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 2751, + "column": 35, + "stop_line": 2751, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 2752, + "column": 35, + "stop_line": 2752, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 2754, + "column": 26, + "stop_line": 2754, + "stop_column": 39, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 2757, + "column": 35, + "stop_line": 2757, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 2758, + "column": 35, + "stop_line": 2758, + "stop_column": 49, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 2762, + "column": 29, + "stop_line": 2762, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 2769, + "column": 25, + "stop_line": 2773, + "stop_column": 22, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", + "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "severity": "error" + }, + { + "line": 2771, + "column": 29, + "stop_line": 2771, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 2779, + "column": 29, + "stop_line": 2779, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 2786, + "column": 25, + "stop_line": 2790, + "stop_column": 22, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])\n Possible overloads:\n () -> None\n (iterable: Iterable[_T], /) -> None [closest match]", + "concise_description": "No matching overload found for function `list.__init__` called with arguments: (Group | dict[Unknown, Unknown])", + "severity": "error" + }, + { + "line": 2788, + "column": 29, + "stop_line": 2788, + "stop_column": 37, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 2794, + "column": 21, + "stop_line": 2794, + "stop_column": 35, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 2798, + "column": 26, + "stop_line": 2798, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 2859, + "column": 13, + "stop_line": 2859, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 2872, + "column": 35, + "stop_line": 2872, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `correspondent`", + "concise_description": "Object of class `NoneType` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 2873, + "column": 35, + "stop_line": 2873, + "stop_column": 57, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `document_type`", + "concise_description": "Object of class `NoneType` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 2874, + "column": 34, + "stop_line": 2874, + "stop_column": 47, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `tags`", + "concise_description": "Object of class `NoneType` has no attribute `tags`", + "severity": "error" + }, + { + "line": 2876, + "column": 35, + "stop_line": 2876, + "stop_column": 56, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `storage_path`", + "concise_description": "Object of class `NoneType` has no attribute `storage_path`", + "severity": "error" + }, + { + "line": 2877, + "column": 35, + "stop_line": 2877, + "stop_column": 49, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `owner`", + "concise_description": "Object of class `NoneType` has no attribute `owner`", + "severity": "error" + }, + { + "line": 2880, + "column": 25, + "stop_line": 2880, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 2882, + "column": 28, + "stop_line": 2882, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 2886, + "column": 21, + "stop_line": 2888, + "stop_column": 28, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 2887, + "column": 25, + "stop_line": 2887, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 2893, + "column": 25, + "stop_line": 2893, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_users_with_perms`", + "severity": "error" + }, + { + "line": 2895, + "column": 28, + "stop_line": 2895, + "stop_column": 30, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-count", + "description": "Missing positional argument `value` in function `list.count`", + "concise_description": "Missing positional argument `value` in function `list.count`", + "severity": "error" + }, + { + "line": 2899, + "column": 21, + "stop_line": 2901, + "stop_column": 28, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "concise_description": "Object of class `Group` has no attribute `count`\nObject of class `dict` has no attribute `count`", + "severity": "error" + }, + { + "line": 2900, + "column": 25, + "stop_line": 2900, + "stop_column": 33, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "concise_description": "Argument `Document | None` is not assignable to parameter `obj` with type `Model` in function `guardian.shortcuts.get_groups_with_perms`", + "severity": "error" + }, + { + "line": 2905, + "column": 21, + "stop_line": 2905, + "stop_column": 43, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`\nObject of class `NoneType` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 3014, + "column": 13, + "stop_line": 3014, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 3026, + "column": 27, + "stop_line": 3026, + "stop_column": 44, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "concise_description": "Argument `str` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "severity": "error" + }, + { + "line": 3114, + "column": 13, + "stop_line": 3114, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 3152, + "column": 13, + "stop_line": 3152, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 3372, + "column": 13, + "stop_line": 3372, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 3492, + "column": 13, + "stop_line": 3492, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 3621, + "column": 23, + "stop_line": 3621, + "stop_column": 27, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 3639, + "column": 23, + "stop_line": 3639, + "stop_column": 27, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 3664, + "column": 27, + "stop_line": 3664, + "stop_column": 31, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 3712, + "column": 13, + "stop_line": 3712, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 3761, + "column": 23, + "stop_line": 3761, + "stop_column": 35, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "concise_description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "severity": "error" + }, + { + "line": 3810, + "column": 23, + "stop_line": 3810, + "stop_column": 35, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "concise_description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "severity": "error" + }, + { + "line": 3842, + "column": 23, + "stop_line": 3842, + "stop_column": 35, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "concise_description": "Argument `int` is not assignable to parameter `trigger_type` with type `WorkflowTrigger.WorkflowTriggerType` in function `documents.signals.handlers.run_workflows`", + "severity": "error" + }, + { + "line": 3939, + "column": 19, + "stop_line": 3939, + "stop_column": 23, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 3942, + "column": 16, + "stop_line": 3942, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `headers`", + "concise_description": "Object of class `NoneType` has no attribute `headers`", + "severity": "error" + }, + { + "line": 3952, + "column": 19, + "stop_line": 3952, + "stop_column": 23, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 3955, + "column": 16, + "stop_line": 3955, + "stop_column": 48, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `headers`", + "concise_description": "Object of class `NoneType` has no attribute `headers`", + "severity": "error" + }, + { + "line": 3988, + "column": 23, + "stop_line": 3988, + "stop_column": 27, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 3997, + "column": 23, + "stop_line": 3997, + "stop_column": 27, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 4016, + "column": 23, + "stop_line": 4016, + "stop_column": 27, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 4043, + "column": 23, + "stop_line": 4043, + "stop_column": 27, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 4067, + "column": 19, + "stop_line": 4067, + "stop_column": 23, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 4072, + "column": 16, + "stop_line": 4072, + "stop_column": 23, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `url`", + "concise_description": "Object of class `NoneType` has no attribute `url`", + "severity": "error" + }, + { + "line": 4073, + "column": 16, + "stop_line": 4073, + "stop_column": 27, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `headers`", + "concise_description": "Object of class `NoneType` has no attribute `headers`", + "severity": "error" + }, + { + "line": 4097, + "column": 23, + "stop_line": 4097, + "stop_column": 27, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 4123, + "column": 19, + "stop_line": 4123, + "stop_column": 23, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "concise_description": "Argument `None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.__call__`", + "severity": "error" + }, + { + "line": 4128, + "column": 16, + "stop_line": 4128, + "stop_column": 27, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `headers`", + "concise_description": "Object of class `NoneType` has no attribute `headers`", + "severity": "error" + }, + { + "line": 4129, + "column": 35, + "stop_line": 4129, + "stop_column": 46, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `headers`", + "concise_description": "Object of class `NoneType` has no attribute `headers`", + "severity": "error" + }, + { + "line": 4364, + "column": 20, + "stop_line": 4364, + "stop_column": 34, + "path": "src/documents/tests/test_workflows.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `title`", + "concise_description": "Object of class `NoneType` has no attribute `title`", + "severity": "error" + }, + { + "line": 34, + "column": 23, + "stop_line": 34, + "stop_column": 29, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "invalid-argument", + "description": "Expected string literal \"dirs\"", + "concise_description": "Expected string literal \"dirs\"", + "severity": "error" + }, + { + "line": 41, + "column": 22, + "stop_line": 41, + "stop_column": 35, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `data_dir`", + "concise_description": "Class `dirs` has no class attribute `data_dir`", + "severity": "error" + }, + { + "line": 42, + "column": 26, + "stop_line": 42, + "stop_column": 40, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 43, + "column": 26, + "stop_line": 43, + "stop_column": 40, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 44, + "column": 24, + "stop_line": 44, + "stop_column": 38, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 45, + "column": 24, + "stop_line": 45, + "stop_column": 37, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `data_dir`", + "concise_description": "Class `dirs` has no class attribute `data_dir`", + "severity": "error" + }, + { + "line": 47, + "column": 5, + "stop_line": 47, + "stop_column": 19, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `index_dir`", + "concise_description": "Class `dirs` has no class attribute `index_dir`", + "severity": "error" + }, + { + "line": 48, + "column": 5, + "stop_line": 48, + "stop_column": 23, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 49, + "column": 5, + "stop_line": 49, + "stop_column": 23, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `thumbnail_dir`", + "concise_description": "Class `dirs` has no class attribute `thumbnail_dir`", + "severity": "error" + }, + { + "line": 50, + "column": 5, + "stop_line": 50, + "stop_column": 21, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `archive_dir`", + "concise_description": "Class `dirs` has no class attribute `archive_dir`", + "severity": "error" + }, + { + "line": 51, + "column": 5, + "stop_line": 51, + "stop_column": 21, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `logging_dir`", + "concise_description": "Class `dirs` has no class attribute `logging_dir`", + "severity": "error" + }, + { + "line": 54, + "column": 18, + "stop_line": 54, + "stop_column": 31, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `data_dir`", + "concise_description": "Class `dirs` has no class attribute `data_dir`", + "severity": "error" + }, + { + "line": 55, + "column": 21, + "stop_line": 55, + "stop_column": 37, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `scratch_dir`", + "concise_description": "Class `dirs` has no class attribute `scratch_dir`", + "severity": "error" + }, + { + "line": 56, + "column": 20, + "stop_line": 56, + "stop_column": 34, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 57, + "column": 23, + "stop_line": 57, + "stop_column": 41, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `originals_dir`", + "concise_description": "Class `dirs` has no class attribute `originals_dir`", + "severity": "error" + }, + { + "line": 58, + "column": 23, + "stop_line": 58, + "stop_column": 41, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `thumbnail_dir`", + "concise_description": "Class `dirs` has no class attribute `thumbnail_dir`", + "severity": "error" + }, + { + "line": 59, + "column": 21, + "stop_line": 59, + "stop_column": 37, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `archive_dir`", + "concise_description": "Class `dirs` has no class attribute `archive_dir`", + "severity": "error" + }, + { + "line": 60, + "column": 25, + "stop_line": 60, + "stop_column": 45, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `consumption_dir`", + "concise_description": "Class `dirs` has no class attribute `consumption_dir`", + "severity": "error" + }, + { + "line": 61, + "column": 21, + "stop_line": 61, + "stop_column": 37, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `logging_dir`", + "concise_description": "Class `dirs` has no class attribute `logging_dir`", + "severity": "error" + }, + { + "line": 62, + "column": 19, + "stop_line": 62, + "stop_column": 33, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `index_dir`", + "concise_description": "Class `dirs` has no class attribute `index_dir`", + "severity": "error" + }, + { + "line": 63, + "column": 21, + "stop_line": 63, + "stop_column": 36, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `static_dir`", + "concise_description": "Class `dirs` has no class attribute `static_dir`", + "severity": "error" + }, + { + "line": 64, + "column": 20, + "stop_line": 64, + "stop_column": 33, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `data_dir`", + "concise_description": "Class `dirs` has no class attribute `data_dir`", + "severity": "error" + }, + { + "line": 65, + "column": 20, + "stop_line": 65, + "stop_column": 34, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 67, + "column": 5, + "stop_line": 67, + "stop_column": 27, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `settings_override`", + "concise_description": "Class `dirs` has no class attribute `settings_override`", + "severity": "error" + }, + { + "line": 88, + "column": 12, + "stop_line": 88, + "stop_column": 16, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "redundant-condition", + "description": "Class name `dirs` used as condition. It's equivalent to `True`", + "concise_description": "Class name `dirs` used as condition. It's equivalent to `True`", + "severity": "error" + }, + { + "line": 161, + "column": 9, + "stop_line": 161, + "stop_column": 22, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `setUp`", + "concise_description": "Object of class `object` has no attribute `setUp`", + "severity": "error" + }, + { + "line": 164, + "column": 9, + "stop_line": 164, + "stop_column": 25, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `tearDown`", + "concise_description": "Object of class `object` has no attribute `tearDown`", + "severity": "error" + }, + { + "line": 174, + "column": 9, + "stop_line": 174, + "stop_column": 24, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", + "severity": "error" + }, + { + "line": 177, + "column": 9, + "stop_line": 177, + "stop_column": 25, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertFalse`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertFalse`", + "severity": "error" + }, + { + "line": 180, + "column": 9, + "stop_line": 180, + "stop_column": 24, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", + "severity": "error" + }, + { + "line": 183, + "column": 9, + "stop_line": 183, + "stop_column": 25, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertFalse`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertFalse`", + "severity": "error" + }, + { + "line": 197, + "column": 9, + "stop_line": 197, + "stop_column": 25, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertEqual`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertEqual`", + "severity": "error" + }, + { + "line": 201, + "column": 9, + "stop_line": 201, + "stop_column": 24, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertTrue`", + "severity": "error" + }, + { + "line": 203, + "column": 9, + "stop_line": 203, + "stop_column": 25, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `FileSystemAssertsMixin` has no attribute `assertEqual`", + "concise_description": "Object of class `FileSystemAssertsMixin` has no attribute `assertEqual`", + "severity": "error" + }, + { + "line": 221, + "column": 9, + "stop_line": 221, + "stop_column": 22, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `setUp`", + "concise_description": "Object of class `object` has no attribute `setUp`", + "severity": "error" + }, + { + "line": 224, + "column": 9, + "stop_line": 224, + "stop_column": 25, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `tearDown`", + "concise_description": "Object of class `object` has no attribute `tearDown`", + "severity": "error" + }, + { + "line": 237, + "column": 9, + "stop_line": 237, + "stop_column": 22, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `setUp`", + "concise_description": "Object of class `object` has no attribute `setUp`", + "severity": "error" + }, + { + "line": 240, + "column": 9, + "stop_line": 240, + "stop_column": 25, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `tearDown`", + "concise_description": "Object of class `object` has no attribute `tearDown`", + "severity": "error" + }, + { + "line": 290, + "column": 16, + "stop_line": 290, + "stop_column": 74, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `name`", + "concise_description": "Object of class `NoneType` has no attribute `name`", + "severity": "error" + }, + { + "line": 371, + "column": 13, + "stop_line": 371, + "stop_column": 22, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `GetConsumerMixin` has no attribute `dirs`", + "concise_description": "Object of class `GetConsumerMixin` has no attribute `dirs`", + "severity": "error" + }, + { + "line": 379, + "column": 13, + "stop_line": 379, + "stop_column": 22, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `GetConsumerMixin` has no attribute `dirs`", + "concise_description": "Object of class `GetConsumerMixin` has no attribute `dirs`", + "severity": "error" + }, + { + "line": 387, + "column": 13, + "stop_line": 387, + "stop_column": 22, + "path": "src/documents/tests/utils.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `GetConsumerMixin` has no attribute `dirs`", + "concise_description": "Object of class `GetConsumerMixin` has no attribute `dirs`", + "severity": "error" + }, + { + "line": 72, + "column": 34, + "stop_line": 72, + "stop_column": 45, + "path": "src/documents/utils.py", + "code": -2, + "name": "bad-assignment", + "description": "`float | int | None` is not assignable to attribute `MAX_IMAGE_PIXELS` with type `int | None`", + "concise_description": "`float | int | None` is not assignable to attribute `MAX_IMAGE_PIXELS` with type `int | None`", + "severity": "error" + }, + { + "line": 251, + "column": 31, + "stop_line": 251, + "stop_column": 57, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `username`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `username`", + "severity": "error" + }, + { + "line": 252, + "column": 32, + "stop_line": 252, + "stop_column": 63, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `get_full_name`\nObject of class `AnonymousUser` has no attribute `get_full_name`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `get_full_name`\nObject of class `AnonymousUser` has no attribute `get_full_name`", + "severity": "error" + }, + { + "line": 302, + "column": 17, + "stop_line": 302, + "stop_column": 30, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BulkPermissionMixin` has no attribute `queryset`", + "concise_description": "Object of class `BulkPermissionMixin` has no attribute `queryset`", + "severity": "error" + }, + { + "line": 334, + "column": 19, + "stop_line": 334, + "stop_column": 49, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `get_serializer_context`", + "concise_description": "Object of class `object` has no attribute `get_serializer_context`", + "severity": "error" + }, + { + "line": 337, + "column": 21, + "stop_line": 337, + "stop_column": 33, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BulkPermissionMixin` has no attribute `request`", + "concise_description": "Object of class `BulkPermissionMixin` has no attribute `request`", + "severity": "error" + }, + { + "line": 352, + "column": 24, + "stop_line": 352, + "stop_column": 44, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BulkPermissionMixin` has no attribute `filter_queryset`", + "concise_description": "Object of class `BulkPermissionMixin` has no attribute `filter_queryset`", + "severity": "error" + }, + { + "line": 352, + "column": 45, + "stop_line": 352, + "stop_column": 62, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BulkPermissionMixin` has no attribute `get_queryset`", + "concise_description": "Object of class `BulkPermissionMixin` has no attribute `get_queryset`", + "severity": "error" + }, + { + "line": 354, + "column": 22, + "stop_line": 354, + "stop_column": 35, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BulkPermissionMixin` has no attribute `queryset`", + "concise_description": "Object of class `BulkPermissionMixin` has no attribute `queryset`", + "severity": "error" + }, + { + "line": 429, + "column": 29, + "stop_line": 429, + "stop_column": 51, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `annotate`", + "concise_description": "Object of class `NoneType` has no attribute `annotate`", + "severity": "error" + }, + { + "line": 435, + "column": 25, + "stop_line": 435, + "stop_column": 47, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `annotate`", + "concise_description": "Object of class `NoneType` has no attribute `annotate`", + "severity": "error" + }, + { + "line": 450, + "column": 15, + "stop_line": 450, + "stop_column": 37, + "path": "src/documents/views.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", + "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", + "severity": "error" + }, + { + "line": 498, + "column": 13, + "stop_line": 498, + "stop_column": 65, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `append`", + "concise_description": "Object of class `NoneType` has no attribute `append`", + "severity": "error" + }, + { + "line": 819, + "column": 9, + "stop_line": 819, + "stop_column": 16, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DocumentViewSet.destroy` overrides parent class `DestroyModelMixin` in an inconsistent manner\n `DocumentViewSet.destroy` has type `BoundMethod[DocumentViewSet, (self: DocumentViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response]`, which is not assignable to `BoundMethod[DocumentViewSet, (self: DocumentViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `DestroyModelMixin.destroy`", + "concise_description": "Class member `DocumentViewSet.destroy` overrides parent class `DestroyModelMixin` in an inconsistent manner", + "severity": "error" + }, + { + "line": 916, + "column": 37, + "stop_line": 916, + "stop_column": 54, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[Unknown] | None` is not assignable to parameter `original_metadata` with type `list[Unknown]` in function `documents.caching.set_metadata_cache`", + "concise_description": "Argument `list[Unknown] | None` is not assignable to parameter `original_metadata` with type `list[Unknown]` in function `documents.caching.set_metadata_cache`", + "severity": "error" + }, + { + "line": 1027, + "column": 45, + "stop_line": 1027, + "stop_column": 57, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Any | None` is not assignable to parameter `filename` with type `str` in function `documents.plugins.date_parsing.base.DateParserPluginBase.parse`", + "concise_description": "Argument `Any | None` is not assignable to parameter `filename` with type `str` in function `documents.plugins.date_parsing.base.DateParserPluginBase.parse`", + "severity": "error" + }, + { + "line": 1040, + "column": 61, + "stop_line": 1040, + "stop_column": 71, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_correspondents`", + "concise_description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_correspondents`", + "severity": "error" + }, + { + "line": 1042, + "column": 56, + "stop_line": 1042, + "stop_column": 66, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_tags`", + "concise_description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_tags`", + "severity": "error" + }, + { + "line": 1044, + "column": 63, + "stop_line": 1044, + "stop_column": 73, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_document_types`", + "concise_description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_document_types`", + "severity": "error" + }, + { + "line": 1047, + "column": 62, + "stop_line": 1047, + "stop_column": 72, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_storage_paths`", + "concise_description": "Argument `DocumentClassifier | None` is not assignable to parameter `classifier` with type `DocumentClassifier` in function `documents.matching.match_storage_paths`", + "severity": "error" + }, + { + "line": 1151, + "column": 21, + "stop_line": 1151, + "stop_column": 48, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `log_create`", + "concise_description": "Object of class `Manager` has no attribute `log_create`", + "severity": "error" + }, + { + "line": 1186, + "column": 17, + "stop_line": 1186, + "stop_column": 44, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `log_create`", + "concise_description": "Object of class `Manager` has no attribute `log_create`", + "severity": "error" + }, + { + "line": 1213, + "column": 5, + "stop_line": 1213, + "stop_column": 62, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-specialization", + "description": "`(self: Self@DocumentViewSet, request: Unknown, pk: Unknown | None = None) -> HttpResponseForbidden | Response | None` is not assignable to upper bound `(...) -> HttpResponseBase` of type variable `_View`", + "concise_description": "`(self: Self@DocumentViewSet, request: Unknown, pk: Unknown | None = None) -> HttpResponseForbidden | Response | None` is not assignable to upper bound `(...) -> HttpResponseBase` of type variable `_View`", + "severity": "error" + }, + { + "line": 1270, + "column": 26, + "stop_line": 1270, + "stop_column": 57, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `get_for_object`", + "concise_description": "Object of class `Manager` has no attribute `get_for_object`", + "severity": "error" + }, + { + "line": 1276, + "column": 22, + "stop_line": 1276, + "stop_column": 54, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `get_for_objects`", + "concise_description": "Object of class `Manager` has no attribute `get_for_objects`", + "severity": "error" + }, + { + "line": 1277, + "column": 13, + "stop_line": 1277, + "stop_column": 30, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 1311, + "column": 36, + "stop_line": 1311, + "stop_column": 64, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-argument", + "description": "Missing argument `request` in function `DocumentViewSet.email_documents`", + "concise_description": "Missing argument `request` in function `DocumentViewSet.email_documents`", + "severity": "error" + }, + { + "line": 1351, + "column": 30, + "stop_line": 1351, + "stop_column": 45, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Path | None` is not assignable to parameter `path` with type `Path` in function `documents.mail.EmailAttachment.__init__`", + "concise_description": "Argument `Path | None` is not assignable to parameter `path` with type `Path` in function `documents.mail.EmailAttachment.__init__`", + "severity": "error" + }, + { + "line": 1424, + "column": 70, + "stop_line": 1424, + "stop_column": 79, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `QuerySet[Unknown, Unknown] | list[Document]` is not assignable to parameter `documents` with type `list[Document]` in function `paperless_ai.chat.stream_chat_with_documents`", + "concise_description": "Argument `QuerySet[Unknown, Unknown] | list[Document]` is not assignable to parameter `documents` with type `list[Document]` in function `paperless_ai.chat.stream_chat_with_documents`", + "severity": "error" + }, + { + "line": 1480, + "column": 9, + "stop_line": 1480, + "stop_column": 24, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-override", + "description": "Class member `UnifiedSearchViewSet.filter_queryset` overrides parent class `DocumentViewSet` in an inconsistent manner\n `UnifiedSearchViewSet.filter_queryset` has type `BoundMethod[UnifiedSearchViewSet, (self: UnifiedSearchViewSet, queryset: Unknown) -> DelayedFullTextQuery | DelayedMoreLikeThisQuery | QuerySet[Unknown, Unknown]]`, which is not assignable to `BoundMethod[UnifiedSearchViewSet, (self: UnifiedSearchViewSet, queryset: QuerySet[Unknown, Unknown]) -> QuerySet[Unknown, Unknown]]`, the type of `DocumentViewSet.filter_queryset`", + "concise_description": "Class member `UnifiedSearchViewSet.filter_queryset` overrides parent class `DocumentViewSet` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1494, + "column": 17, + "stop_line": 1494, + "stop_column": 30, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `searcher` with type `Searcher` in function `documents.index.DelayedQuery.__init__`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `searcher` with type `Searcher` in function `documents.index.DelayedQuery.__init__`", + "severity": "error" + }, + { + "line": 1496, + "column": 17, + "stop_line": 1496, + "stop_column": 45, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BasePagination` has no attribute `get_page_size`\nObject of class `NoneType` has no attribute `get_page_size`", + "concise_description": "Object of class `BasePagination` has no attribute `get_page_size`\nObject of class `NoneType` has no attribute `get_page_size`", + "severity": "error" + }, + { + "line": 1502, + "column": 9, + "stop_line": 1502, + "stop_column": 13, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-override", + "description": "Class member `UnifiedSearchViewSet.list` overrides parent class `DocumentViewSet` in an inconsistent manner\n `UnifiedSearchViewSet.list` has type `BoundMethod[UnifiedSearchViewSet, (self: UnifiedSearchViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response]`, which is not assignable to `BoundMethod[UnifiedSearchViewSet, (self: UnifiedSearchViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `DocumentViewSet.list`", + "concise_description": "Class member `UnifiedSearchViewSet.list` overrides parent class `DocumentViewSet` in an inconsistent manner", + "severity": "error" + }, + { + "line": 1510, + "column": 51, + "stop_line": 1510, + "stop_column": 59, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `DelayedFullTextQuery | DelayedMoreLikeThisQuery | QuerySet[Unknown, Unknown]` is not assignable to parameter `queryset` with type `QuerySet[Unknown, Unknown] | Sequence[Any]` in function `rest_framework.generics.GenericAPIView.paginate_queryset`", + "concise_description": "Argument `DelayedFullTextQuery | DelayedMoreLikeThisQuery | QuerySet[Unknown, Unknown]` is not assignable to parameter `queryset` with type `QuerySet[Unknown, Unknown] | Sequence[Any]` in function `rest_framework.generics.GenericAPIView.paginate_queryset`", + "severity": "error" + }, + { + "line": 1539, + "column": 25, + "stop_line": 1539, + "stop_column": 36, + "path": "src/documents/views.py", + "code": -2, + "name": "unsupported-operation", + "description": "`+` is not supported between `None` and `Literal[1]`\n Argument `None` is not assignable to parameter `value` with type `int` in function `int.__radd__`", + "concise_description": "`+` is not supported between `None` and `Literal[1]`", + "severity": "error" + }, + { + "line": 1704, + "column": 16, + "stop_line": 1704, + "stop_column": 33, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "severity": "error" + }, + { + "line": 1713, + "column": 25, + "stop_line": 1713, + "stop_column": 38, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "severity": "error" + }, + { + "line": 1750, + "column": 25, + "stop_line": 1750, + "stop_column": 38, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "severity": "error" + }, + { + "line": 1764, + "column": 25, + "stop_line": 1764, + "stop_column": 38, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "severity": "error" + }, + { + "line": 1793, + "column": 33, + "stop_line": 1793, + "stop_column": 46, + "path": "src/documents/views.py", + "code": -2, + "name": "unbound-name", + "description": "`old_documents` may be uninitialized", + "concise_description": "`old_documents` may be uninitialized", + "severity": "error" + }, + { + "line": 1803, + "column": 21, + "stop_line": 1803, + "stop_column": 48, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Manager` has no attribute `log_create`", + "concise_description": "Object of class `Manager` has no attribute `log_create`", + "severity": "error" + }, + { + "line": 2009, + "column": 52, + "stop_line": 2009, + "stop_column": 68, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Correspondent` has no attribute `document_count`", + "concise_description": "Object of class `Correspondent` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 2013, + "column": 52, + "stop_line": 2013, + "stop_column": 68, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Tag` has no attribute `document_count`", + "concise_description": "Object of class `Tag` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 2016, + "column": 52, + "stop_line": 2016, + "stop_column": 68, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `DocumentType` has no attribute `document_count`", + "concise_description": "Object of class `DocumentType` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 2019, + "column": 52, + "stop_line": 2019, + "stop_column": 68, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `StoragePath` has no attribute `document_count`", + "concise_description": "Object of class `StoragePath` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 2023, + "column": 52, + "stop_line": 2023, + "stop_column": 68, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `CustomField` has no attribute `document_count`", + "concise_description": "Object of class `CustomField` has no attribute `document_count`", + "severity": "error" + }, + { + "line": 2083, + "column": 17, + "stop_line": 2083, + "stop_column": 21, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `AbstractBaseUser | AnonymousUser | None` is not assignable to parameter `user` with type `User | None` in function `documents.index.autocomplete`", + "concise_description": "Argument `AbstractBaseUser | AnonymousUser | None` is not assignable to parameter `user` with type `User | None` in function `documents.index.autocomplete`", + "severity": "error" + }, + { + "line": 3051, + "column": 24, + "stop_line": 3051, + "stop_column": 51, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BaseSerializer` has no attribute `get_object_class`", + "concise_description": "Object of class `BaseSerializer` has no attribute `get_object_class`", + "severity": "error" + }, + { + "line": 3056, + "column": 16, + "stop_line": 3056, + "stop_column": 33, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "severity": "error" + }, + { + "line": 3063, + "column": 25, + "stop_line": 3063, + "stop_column": 38, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `has_perm`", + "severity": "error" + }, + { + "line": 3118, + "column": 9, + "stop_line": 3118, + "stop_column": 23, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-override", + "description": "Class member `WorkflowTriggerViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner\n `WorkflowTriggerViewSet.partial_update` has type `BoundMethod[WorkflowTriggerViewSet, (self: WorkflowTriggerViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response]`, which is not assignable to `BoundMethod[WorkflowTriggerViewSet, (self: WorkflowTriggerViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `ModelViewSet.partial_update`", + "concise_description": "Class member `WorkflowTriggerViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner", + "severity": "error" + }, + { + "line": 3143, + "column": 9, + "stop_line": 3143, + "stop_column": 23, + "path": "src/documents/views.py", + "code": -2, + "name": "bad-override", + "description": "Class member `WorkflowActionViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner\n `WorkflowActionViewSet.partial_update` has type `BoundMethod[WorkflowActionViewSet, (self: WorkflowActionViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseBadRequest | Response]`, which is not assignable to `BoundMethod[WorkflowActionViewSet, (self: WorkflowActionViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `ModelViewSet.partial_update`", + "concise_description": "Class member `WorkflowActionViewSet.partial_update` overrides parent class `ModelViewSet` in an inconsistent manner", + "severity": "error" + }, + { + "line": 3187, + "column": 45, + "stop_line": 3187, + "stop_column": 75, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `is_superuser`", + "severity": "error" + }, + { + "line": 3343, + "column": 36, + "stop_line": 3343, + "stop_column": 52, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `keys`", + "concise_description": "Object of class `NoneType` has no attribute `keys`", + "severity": "error" + }, + { + "line": 3344, + "column": 33, + "stop_line": 3344, + "stop_column": 56, + "path": "src/documents/views.py", + "code": -2, + "name": "unsupported-operation", + "description": "`None` is not subscriptable", + "concise_description": "`None` is not subscriptable", + "severity": "error" + }, + { + "line": 3459, + "column": 40, + "stop_line": 3459, + "stop_column": 54, + "path": "src/documents/views.py", + "code": -2, + "name": "unbound-name", + "description": "`all_migrations` may be uninitialized", + "concise_description": "`all_migrations` may be uninitialized", + "severity": "error" + }, + { + "line": 3467, + "column": 38, + "stop_line": 3467, + "stop_column": 51, + "path": "src/documents/views.py", + "code": -2, + "name": "unbound-name", + "description": "`celery_active` may be uninitialized", + "concise_description": "`celery_active` may be uninitialized", + "severity": "error" + }, + { + "line": 3531, + "column": 16, + "stop_line": 3531, + "stop_column": 31, + "path": "src/documents/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `app_logo`", + "concise_description": "Object of class `NoneType` has no attribute `app_logo`", + "severity": "error" + }, + { + "line": 36, + "column": 22, + "stop_line": 36, + "stop_column": 36, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `title`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `title`", + "severity": "error" + }, + { + "line": 37, + "column": 80, + "stop_line": 37, + "stop_column": 91, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `pk`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `pk`", + "severity": "error" + }, + { + "line": 38, + "column": 30, + "stop_line": 38, + "stop_column": 57, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `name`", + "concise_description": "Object of class `object` has no attribute `name`", + "severity": "error" + }, + { + "line": 39, + "column": 16, + "stop_line": 39, + "stop_column": 38, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `correspondent`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `correspondent`", + "severity": "error" + }, + { + "line": 41, + "column": 30, + "stop_line": 41, + "stop_column": 57, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `name`", + "concise_description": "Object of class `object` has no attribute `name`", + "severity": "error" + }, + { + "line": 42, + "column": 16, + "stop_line": 42, + "stop_column": 38, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `document_type`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `document_type`", + "severity": "error" + }, + { + "line": 44, + "column": 31, + "stop_line": 44, + "stop_column": 54, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `username`", + "concise_description": "Object of class `object` has no attribute `username`", + "severity": "error" + }, + { + "line": 44, + "column": 58, + "stop_line": 44, + "stop_column": 72, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `owner`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `owner`", + "severity": "error" + }, + { + "line": 45, + "column": 25, + "stop_line": 45, + "stop_column": 51, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `original_filename`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `original_filename`", + "severity": "error" + }, + { + "line": 46, + "column": 33, + "stop_line": 46, + "stop_column": 50, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `filename`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `filename`", + "severity": "error" + }, + { + "line": 47, + "column": 41, + "stop_line": 47, + "stop_column": 55, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `added`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `added`", + "severity": "error" + }, + { + "line": 48, + "column": 24, + "stop_line": 48, + "stop_column": 40, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `created`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `created`", + "severity": "error" + }, + { + "line": 49, + "column": 19, + "stop_line": 49, + "stop_column": 30, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `ConsumableDocument` has no attribute `pk`", + "concise_description": "Object of class `ConsumableDocument` has no attribute `pk`", + "severity": "error" + }, + { + "line": 68, + "column": 42, + "stop_line": 68, + "stop_column": 64, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `original_file`", + "concise_description": "Object of class `Document` has no attribute `original_file`", + "severity": "error" + }, + { + "line": 106, + "column": 13, + "stop_line": 106, + "stop_column": 33, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `object | str` is not assignable to parameter `text` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "concise_description": "Argument `object | str` is not assignable to parameter `text` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "severity": "error" + }, + { + "line": 118, + "column": 12, + "stop_line": 118, + "stop_column": 32, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `subject`", + "concise_description": "Object of class `NoneType` has no attribute `subject`", + "severity": "error" + }, + { + "line": 123, + "column": 13, + "stop_line": 123, + "stop_column": 30, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `object | str` is not assignable to parameter `text` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "concise_description": "Argument `object | str` is not assignable to parameter `text` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "severity": "error" + }, + { + "line": 135, + "column": 12, + "stop_line": 135, + "stop_column": 29, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `body`", + "concise_description": "Object of class `NoneType` has no attribute `body`", + "severity": "error" + }, + { + "line": 141, + "column": 12, + "stop_line": 141, + "stop_column": 41, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `include_document`", + "concise_description": "Object of class `NoneType` has no attribute `include_document`", + "severity": "error" + }, + { + "line": 174, + "column": 16, + "stop_line": 174, + "stop_column": 31, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `to`", + "concise_description": "Object of class `NoneType` has no attribute `to`", + "severity": "error" + }, + { + "line": 178, + "column": 59, + "stop_line": 178, + "stop_column": 74, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `to`", + "concise_description": "Object of class `NoneType` has no attribute `to`", + "severity": "error" + }, + { + "line": 197, + "column": 12, + "stop_line": 197, + "stop_column": 37, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `use_params`", + "concise_description": "Object of class `NoneType` has no attribute `use_params`", + "severity": "error" + }, + { + "line": 198, + "column": 16, + "stop_line": 198, + "stop_column": 37, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `params`", + "concise_description": "Object of class `NoneType` has no attribute `params`", + "severity": "error" + }, + { + "line": 200, + "column": 39, + "stop_line": 200, + "stop_column": 66, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `items`", + "concise_description": "Object of class `object` has no attribute `items`", + "severity": "error" + }, + { + "line": 219, + "column": 14, + "stop_line": 219, + "stop_column": 33, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `body`", + "concise_description": "Object of class `NoneType` has no attribute `body`", + "severity": "error" + }, + { + "line": 221, + "column": 17, + "stop_line": 221, + "stop_column": 36, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `object | str` is not assignable to parameter `text` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "concise_description": "Argument `object | str` is not assignable to parameter `text` with type `str` in function `documents.templating.workflows.parse_w_workflow_placeholders`", + "severity": "error" + }, + { + "line": 234, + "column": 12, + "stop_line": 234, + "stop_column": 34, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `headers`", + "concise_description": "Object of class `NoneType` has no attribute `headers`", + "severity": "error" + }, + { + "line": 236, + "column": 55, + "stop_line": 236, + "stop_column": 83, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `object` has no attribute `items`", + "concise_description": "Object of class `object` has no attribute `items`", + "severity": "error" + }, + { + "line": 243, + "column": 12, + "stop_line": 243, + "stop_column": 43, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `include_document`", + "concise_description": "Object of class `NoneType` has no attribute `include_document`", + "severity": "error" + }, + { + "line": 255, + "column": 17, + "stop_line": 255, + "stop_column": 35, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `url`", + "concise_description": "Object of class `NoneType` has no attribute `url`", + "severity": "error" + }, + { + "line": 258, + "column": 19, + "stop_line": 258, + "stop_column": 24, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `dict[str, tuple[str, bytes, str]] | None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.delay`", + "concise_description": "Argument `dict[str, tuple[str, bytes, str]] | None` is not assignable to parameter `files` with type `dict[Unknown, Unknown]` in function `celery.app.task.Task.delay`", + "severity": "error" + }, + { + "line": 259, + "column": 21, + "stop_line": 259, + "stop_column": 43, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `as_json`", + "concise_description": "Object of class `NoneType` has no attribute `as_json`", + "severity": "error" + }, + { + "line": 262, + "column": 27, + "stop_line": 262, + "stop_column": 45, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `url`", + "concise_description": "Object of class `NoneType` has no attribute `url`", + "severity": "error" + }, + { + "line": 298, + "column": 43, + "stop_line": 298, + "stop_column": 65, + "path": "src/documents/workflows/actions.py", + "code": -2, + "name": "bad-assignment", + "description": "`Unknown | None` is not assignable to `Document`", + "concise_description": "`Unknown | None` is not assignable to `Document`", + "severity": "error" + }, + { + "line": 27, + "column": 8, + "stop_line": 27, + "stop_column": 30, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_tags`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_tags`", + "severity": "error" + }, + { + "line": 70, + "column": 13, + "stop_line": 70, + "stop_column": 41, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_view_users`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_view_users`", + "severity": "error" + }, + { + "line": 71, + "column": 13, + "stop_line": 71, + "stop_column": 42, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_view_groups`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_view_groups`", + "severity": "error" + }, + { + "line": 72, + "column": 13, + "stop_line": 72, + "stop_column": 43, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_change_users`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_change_users`", + "severity": "error" + }, + { + "line": 73, + "column": 13, + "stop_line": 73, + "stop_column": 44, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_change_groups`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_change_groups`", + "severity": "error" + }, + { + "line": 92, + "column": 8, + "stop_line": 92, + "stop_column": 39, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_custom_fields`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_custom_fields`", + "severity": "error" + }, + { + "line": 95, + "column": 27, + "stop_line": 95, + "stop_column": 42, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `data_type` with type `CustomField.FieldDataType` in function `documents.models.CustomFieldInstance.get_value_field_name`", + "concise_description": "Argument `str` is not assignable to parameter `data_type` with type `CustomField.FieldDataType` in function `documents.models.CustomFieldInstance.get_value_field_name`", + "severity": "error" + }, + { + "line": 98, + "column": 35, + "stop_line": 98, + "stop_column": 73, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get`", + "concise_description": "Object of class `NoneType` has no attribute `get`", + "severity": "error" + }, + { + "line": 128, + "column": 8, + "stop_line": 128, + "stop_column": 30, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_tags`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_tags`", + "severity": "error" + }, + { + "line": 155, + "column": 13, + "stop_line": 155, + "stop_column": 41, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_view_users`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_view_users`", + "severity": "error" + }, + { + "line": 156, + "column": 13, + "stop_line": 156, + "stop_column": 42, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_view_groups`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_view_groups`", + "severity": "error" + }, + { + "line": 157, + "column": 13, + "stop_line": 157, + "stop_column": 43, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_change_users`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_change_users`", + "severity": "error" + }, + { + "line": 158, + "column": 13, + "stop_line": 158, + "stop_column": 44, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_change_groups`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_change_groups`", + "severity": "error" + }, + { + "line": 186, + "column": 8, + "stop_line": 186, + "stop_column": 39, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_assign_custom_fields`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_assign_custom_fields`", + "severity": "error" + }, + { + "line": 191, + "column": 27, + "stop_line": 191, + "stop_column": 65, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get`", + "concise_description": "Object of class `NoneType` has no attribute `get`", + "severity": "error" + }, + { + "line": 257, + "column": 13, + "stop_line": 257, + "stop_column": 41, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_view_users`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_view_users`", + "severity": "error" + }, + { + "line": 258, + "column": 13, + "stop_line": 258, + "stop_column": 42, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_view_groups`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_view_groups`", + "severity": "error" + }, + { + "line": 259, + "column": 13, + "stop_line": 259, + "stop_column": 43, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_change_users`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_change_users`", + "severity": "error" + }, + { + "line": 260, + "column": 13, + "stop_line": 260, + "stop_column": 44, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_change_groups`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_change_groups`", + "severity": "error" + }, + { + "line": 273, + "column": 9, + "stop_line": 273, + "stop_column": 74, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `QuerySet` has no attribute `hard_delete`", + "concise_description": "Object of class `QuerySet` has no attribute `hard_delete`", + "severity": "error" + }, + { + "line": 274, + "column": 10, + "stop_line": 274, + "stop_column": 41, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_custom_fields`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_custom_fields`", + "severity": "error" + }, + { + "line": 275, + "column": 9, + "stop_line": 278, + "stop_column": 22, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `QuerySet` has no attribute `hard_delete`", + "concise_description": "Object of class `QuerySet` has no attribute `hard_delete`", + "severity": "error" + }, + { + "line": 331, + "column": 13, + "stop_line": 331, + "stop_column": 41, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_view_users`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_view_users`", + "severity": "error" + }, + { + "line": 332, + "column": 13, + "stop_line": 332, + "stop_column": 42, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_view_groups`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_view_groups`", + "severity": "error" + }, + { + "line": 333, + "column": 13, + "stop_line": 333, + "stop_column": 43, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_change_users`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_change_users`", + "severity": "error" + }, + { + "line": 334, + "column": 13, + "stop_line": 334, + "stop_column": 44, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_change_groups`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_change_groups`", + "severity": "error" + }, + { + "line": 356, + "column": 10, + "stop_line": 356, + "stop_column": 41, + "path": "src/documents/workflows/mutations.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `WorkflowAction` has no attribute `has_remove_custom_fields`", + "concise_description": "Object of class `WorkflowAction` has no attribute `has_remove_custom_fields`", + "severity": "error" + }, + { + "line": 53, + "column": 48, + "stop_line": 53, + "stop_column": 54, + "path": "src/documents/workflows/webhooks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int | str` is not assignable to parameter `ip` with type `str` in function `WebhookTransport._format_ip_for_url`", + "concise_description": "Argument `int | str` is not assignable to parameter `ip` with type `str` in function `WebhookTransport._format_ip_for_url`", + "severity": "error" + }, + { + "line": 102, + "column": 20, + "stop_line": 102, + "stop_column": 51, + "path": "src/documents/workflows/webhooks.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `int | str | None` is not assignable to declared return type `str | None`", + "concise_description": "Returned type `int | str | None` is not assignable to declared return type `str | None`", + "severity": "error" + }, + { + "line": 23, + "column": 9, + "stop_line": 23, + "stop_column": 27, + "path": "src/paperless/adapter.py", + "code": -2, + "name": "bad-override", + "description": "Class member `CustomAccountAdapter.is_open_for_signup` overrides parent class `DefaultAccountAdapter` in an inconsistent manner\n `CustomAccountAdapter.is_open_for_signup` has type `BoundMethod[CustomAccountAdapter, (self: CustomAccountAdapter, request: Unknown) -> bool | Any]`, which is not assignable to `BoundMethod[CustomAccountAdapter, (self: CustomAccountAdapter, request: Unknown) -> Literal[True]]`, the type of `DefaultAccountAdapter.is_open_for_signup`", + "concise_description": "Class member `CustomAccountAdapter.is_open_for_signup` overrides parent class `DefaultAccountAdapter` in an inconsistent manner", + "severity": "error" + }, + { + "line": 58, + "column": 26, + "stop_line": 58, + "stop_column": 50, + "path": "src/paperless/adapter.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get_host`", + "concise_description": "Object of class `NoneType` has no attribute `get_host`", + "severity": "error" + }, + { + "line": 63, + "column": 31, + "stop_line": 63, + "stop_column": 55, + "path": "src/paperless/adapter.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get_host`", + "concise_description": "Object of class `NoneType` has no attribute `get_host`", + "severity": "error" + }, + { + "line": 109, + "column": 9, + "stop_line": 109, + "stop_column": 27, + "path": "src/paperless/adapter.py", + "code": -2, + "name": "bad-override", + "description": "Class member `CustomSocialAccountAdapter.is_open_for_signup` overrides parent class `DefaultSocialAccountAdapter` in an inconsistent manner\n `CustomSocialAccountAdapter.is_open_for_signup` has type `BoundMethod[CustomSocialAccountAdapter, (self: CustomSocialAccountAdapter, request: Unknown, sociallogin: Unknown) -> bool | Any]`, which is not assignable to `BoundMethod[CustomSocialAccountAdapter, (self: CustomSocialAccountAdapter, request: Unknown, sociallogin: Unknown) -> Literal[True]]`, the type of `DefaultSocialAccountAdapter.is_open_for_signup`", + "concise_description": "Class member `CustomSocialAccountAdapter.is_open_for_signup` overrides parent class `DefaultSocialAccountAdapter` in an inconsistent manner", + "severity": "error" + }, + { + "line": 30, + "column": 24, + "stop_line": 30, + "stop_column": 40, + "path": "src/paperless/admin.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get`", + "concise_description": "Object of class `NoneType` has no attribute `get`", + "severity": "error" + }, + { + "line": 33, + "column": 17, + "stop_line": 33, + "stop_column": 29, + "path": "src/paperless/admin.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `PaperlessUserForm` has no attribute `request`", + "concise_description": "Object of class `PaperlessUserForm` has no attribute `request`", + "severity": "error" + }, + { + "line": 46, + "column": 9, + "stop_line": 46, + "stop_column": 17, + "path": "src/paperless/admin.py", + "code": -2, + "name": "bad-override", + "description": "Class member `PaperlessUserAdmin.get_form` overrides parent class `UserAdmin` in an inconsistent manner\n `PaperlessUserAdmin.get_form` has type `BoundMethod[PaperlessUserAdmin, (self: PaperlessUserAdmin, request: Unknown, obj: Unknown | None = None, **kwargs: Unknown) -> type[ModelForm[Unknown]]]`, which is not assignable to `BoundMethod[PaperlessUserAdmin, (self: PaperlessUserAdmin, request: HttpRequest, obj: Unknown | None = ..., change: bool = ..., **kwargs: Any) -> type[ModelForm[Unknown]]]`, the type of `UserAdmin.get_form`", + "concise_description": "Class member `PaperlessUserAdmin.get_form` overrides parent class `UserAdmin` in an inconsistent manner", + "severity": "error" + }, + { + "line": 65, + "column": 20, + "stop_line": 65, + "stop_column": 46, + "path": "src/paperless/auth.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `Awaitable[HttpResponseBase] | HttpResponseBase` is not assignable to declared return type `None`", + "concise_description": "Returned type `Awaitable[HttpResponseBase] | HttpResponseBase` is not assignable to declared return type `None`", + "severity": "error" + }, + { + "line": 66, + "column": 16, + "stop_line": 66, + "stop_column": 41, + "path": "src/paperless/auth.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `Awaitable[HttpResponseBase] | HttpResponseBase` is not assignable to declared return type `None`", + "concise_description": "Returned type `Awaitable[HttpResponseBase] | HttpResponseBase` is not assignable to declared return type `None`", + "severity": "error" + }, + { + "line": 88, + "column": 35, + "stop_line": 88, + "stop_column": 70, + "path": "src/paperless/checks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", + "concise_description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", + "severity": "error" + }, + { + "line": 93, + "column": 1, + "stop_line": 93, + "stop_column": 12, + "path": "src/paperless/checks.py", + "code": -2, + "name": "bad-specialization", + "description": "`(app_configs: Unknown, **kwargs: Unknown) -> list[django.core.checks.messages.Warning | builtins.Warning] | list[Unknown]` is not assignable to upper bound `_CheckCallable` of type variable `_C`", + "concise_description": "`(app_configs: Unknown, **kwargs: Unknown) -> list[django.core.checks.messages.Warning | builtins.Warning] | list[Unknown]` is not assignable to upper bound `_CheckCallable` of type variable `_C`", + "severity": "error" + }, + { + "line": 138, + "column": 17, + "stop_line": 142, + "stop_column": 18, + "path": "src/paperless/checks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `Error` in function `list.append`", + "concise_description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `Error` in function `list.append`", + "severity": "error" + }, + { + "line": 211, + "column": 13, + "stop_line": 213, + "stop_column": 14, + "path": "src/paperless/checks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", + "concise_description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", + "severity": "error" + }, + { + "line": 22, + "column": 16, + "stop_line": 22, + "stop_column": 26, + "path": "src/paperless/config.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `ApplicationConfiguration | None` is not assignable to declared return type `ApplicationConfiguration`", + "concise_description": "Returned type `ApplicationConfiguration | None` is not assignable to declared return type `ApplicationConfiguration`", + "severity": "error" + }, + { + "line": 174, + "column": 26, + "stop_line": 174, + "stop_column": 54, + "path": "src/paperless/config.py", + "code": -2, + "name": "bad-assignment", + "description": "`str | None` is not assignable to attribute `app_title` with type `str`", + "concise_description": "`str | None` is not assignable to attribute `app_title` with type `str`", + "severity": "error" + }, + { + "line": 175, + "column": 25, + "stop_line": 175, + "stop_column": 81, + "path": "src/paperless/config.py", + "code": -2, + "name": "bad-assignment", + "description": "`Unknown | None` is not assignable to attribute `app_logo` with type `str`", + "concise_description": "`Unknown | None` is not assignable to attribute `app_logo` with type `str`", + "severity": "error" + }, + { + "line": 11, + "column": 41, + "stop_line": 11, + "stop_column": 76, + "path": "src/paperless/consumers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `is_authenticated`", + "concise_description": "Object of class `NoneType` has no attribute `is_authenticated`", + "severity": "error" + }, + { + "line": 19, + "column": 13, + "stop_line": 19, + "stop_column": 30, + "path": "src/paperless/consumers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `is_superuser`", + "concise_description": "Object of class `NoneType` has no attribute `is_superuser`", + "severity": "error" + }, + { + "line": 20, + "column": 16, + "stop_line": 20, + "stop_column": 23, + "path": "src/paperless/consumers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `id`", + "concise_description": "Object of class `NoneType` has no attribute `id`", + "severity": "error" + }, + { + "line": 23, + "column": 17, + "stop_line": 23, + "stop_column": 28, + "path": "src/paperless/consumers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `groups`", + "concise_description": "Object of class `NoneType` has no attribute `groups`", + "severity": "error" + }, + { + "line": 37, + "column": 9, + "stop_line": 37, + "stop_column": 19, + "path": "src/paperless/consumers.py", + "code": -2, + "name": "bad-param-name-override", + "description": "Class member `StatusConsumer.disconnect` overrides parent class `WebsocketConsumer` in an inconsistent manner\n Got parameter name `close_code`, expected `code`", + "concise_description": "Class member `StatusConsumer.disconnect` overrides parent class `WebsocketConsumer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 33, + "column": 16, + "stop_line": 33, + "stop_column": 29, + "path": "src/paperless/serialisers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `PasswordValidationMixin` has no attribute `instance`", + "concise_description": "Object of class `PasswordValidationMixin` has no attribute `instance`", + "severity": "error" + }, + { + "line": 86, + "column": 11, + "stop_line": 86, + "stop_column": 15, + "path": "src/paperless/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `UserSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `UserSerializer.Meta` has type `type[UserSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `UserSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 146, + "column": 11, + "stop_line": 146, + "stop_column": 15, + "path": "src/paperless/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `GroupSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `GroupSerializer.Meta` has type `type[GroupSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `GroupSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 158, + "column": 11, + "stop_line": 158, + "stop_column": 15, + "path": "src/paperless/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `SocialAccountSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `SocialAccountSerializer.Meta` has type `type[SocialAccountSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `SocialAccountSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 192, + "column": 11, + "stop_line": 192, + "stop_column": 15, + "path": "src/paperless/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ProfileSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `ProfileSerializer.Meta` has type `type[ProfileSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `ProfileSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 214, + "column": 9, + "stop_line": 214, + "stop_column": 23, + "path": "src/paperless/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ApplicationConfigurationSerializer.run_validation` overrides parent class `ModelSerializer` in an inconsistent manner\n `ApplicationConfigurationSerializer.run_validation` has type `BoundMethod[ApplicationConfigurationSerializer, (self: ApplicationConfigurationSerializer, data: Unknown) -> Any]`, which is not assignable to `BoundMethod[ApplicationConfigurationSerializer, (self: ApplicationConfigurationSerializer, data: Any = ...) -> Any]`, the type of `ModelSerializer.run_validation`", + "concise_description": "Class member `ApplicationConfigurationSerializer.run_validation` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 239, + "column": 11, + "stop_line": 239, + "stop_column": 15, + "path": "src/paperless/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ApplicationConfigurationSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner\n `ApplicationConfigurationSerializer.Meta` has type `type[ApplicationConfigurationSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `ModelSerializer.Meta`", + "concise_description": "Class member `ApplicationConfigurationSerializer.Meta` overrides parent class `ModelSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 301, + "column": 39, + "stop_line": 301, + "stop_column": 77, + "path": "src/paperless/settings.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `default` with type `PathLike[Unknown] | str` in function `__get_path`", + "concise_description": "Argument `str | None` is not assignable to parameter `default` with type `PathLike[Unknown] | str` in function `__get_path`", + "severity": "error" + }, + { + "line": 434, + "column": 12, + "stop_line": 434, + "stop_column": 85, + "path": "src/paperless/settings.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `tuple[str | None, str, str, str, str]` is not assignable to declared return type `tuple[str, str, str, str, str]`", + "concise_description": "Returned type `tuple[str | None, str, str, str, str]` is not assignable to declared return type `tuple[str, str, str, str, str]`", + "severity": "error" + }, + { + "line": 665, + "column": 30, + "stop_line": 665, + "stop_column": 52, + "path": "src/paperless/settings.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `object` with type `str` in function `list.append`", + "concise_description": "Argument `str | None` is not assignable to parameter `object` with type `str` in function `list.append`", + "severity": "error" + }, + { + "line": 739, + "column": 21, + "stop_line": 739, + "stop_column": 50, + "path": "src/paperless/settings.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "`str | None` is not assignable to TypedDict key with type `Path | dict[Unknown, Unknown] | str`", + "concise_description": "`str | None` is not assignable to TypedDict key with type `Path | dict[Unknown, Unknown] | str`", + "severity": "error" + }, + { + "line": 740, + "column": 21, + "stop_line": 740, + "stop_column": 63, + "path": "src/paperless/settings.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "`str` is not assignable to TypedDict key `NAME` with type `Path`", + "concise_description": "`str` is not assignable to TypedDict key `NAME` with type `Path`", + "severity": "error" + }, + { + "line": 746, + "column": 44, + "stop_line": 746, + "stop_column": 73, + "path": "src/paperless/settings.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "`str | None` is not assignable to TypedDict key `PORT` with type `Path | dict[Unknown, Unknown] | str`", + "concise_description": "`str | None` is not assignable to TypedDict key `PORT` with type `Path | dict[Unknown, Unknown] | str`", + "severity": "error" + }, + { + "line": 774, + "column": 31, + "stop_line": 781, + "stop_column": 18, + "path": "src/paperless/settings.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `typing.MutableMapping.update` called with arguments: (dict[str, dict[str, int]])\n Possible overloads:\n (m: SupportsKeysAndGetItem[str, str | None], /) -> None [closest match]\n (m: SupportsKeysAndGetItem[str, str | None], /, **kwargs: str | None) -> None\n (m: Iterable[tuple[str, str | None]], /) -> None\n (m: Iterable[tuple[str, str | None]], /, **kwargs: str | None) -> None\n (**kwargs: str | None) -> None", + "concise_description": "No matching overload found for function `typing.MutableMapping.update` called with arguments: (dict[str, dict[str, int]])", + "severity": "error" + }, + { + "line": 778, + "column": 44, + "stop_line": 778, + "stop_column": 80, + "path": "src/paperless/settings.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", + "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", + "severity": "error" + }, + { + "line": 789, + "column": 32, + "stop_line": 789, + "stop_column": 67, + "path": "src/paperless/settings.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", + "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", + "severity": "error" + }, + { + "line": 793, + "column": 40, + "stop_line": 793, + "stop_column": 75, + "path": "src/paperless/settings.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", + "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", + "severity": "error" + }, + { + "line": 796, + "column": 32, + "stop_line": 796, + "stop_column": 67, + "path": "src/paperless/settings.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)\n Possible overloads:\n (cls: type[int], x: ConvertibleToInt = 0, /) -> int [closest match]\n (cls: type[int], x: bytearray | bytes | str, /, base: SupportsIndex) -> int", + "concise_description": "No matching overload found for function `int.__new__` called with arguments: (type[int], str | None)", + "severity": "error" + }, + { + "line": 1328, + "column": 12, + "stop_line": 1328, + "stop_column": 25, + "path": "src/paperless/settings.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `set[date]` is not assignable to declared return type `set[datetime]`", + "concise_description": "Returned type `set[date]` is not assignable to declared return type `set[datetime]`", + "severity": "error" + }, + { + "line": 1335, + "column": 20, + "stop_line": 1335, + "stop_column": 76, + "path": "src/paperless/settings.py", + "code": -2, + "name": "bad-assignment", + "description": "`set[datetime]` is not assignable to variable `IGNORE_DATES` with type `set[date]`", + "concise_description": "`set[datetime]` is not assignable to variable `IGNORE_DATES` with type `set[date]`", + "severity": "error" + }, + { + "line": 1335, + "column": 40, + "stop_line": 1335, + "stop_column": 75, + "path": "src/paperless/settings.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `env_ignore` with type `str` in function `_parse_ignore_dates`", + "concise_description": "Argument `str | None` is not assignable to parameter `env_ignore` with type `str` in function `_parse_ignore_dates`", + "severity": "error" + }, + { + "line": 41, + "column": 14, + "stop_line": 41, + "stop_column": 32, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `data_dir`", + "concise_description": "Class `dirs` has no class attribute `data_dir`", + "severity": "error" + }, + { + "line": 42, + "column": 14, + "stop_line": 42, + "stop_column": 33, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 43, + "column": 14, + "stop_line": 43, + "stop_column": 39, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `consumption_dir`", + "concise_description": "Class `dirs` has no class attribute `consumption_dir`", + "severity": "error" + }, + { + "line": 45, + "column": 35, + "stop_line": 45, + "stop_column": 53, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `data_dir`", + "concise_description": "Class `dirs` has no class attribute `data_dir`", + "severity": "error" + }, + { + "line": 46, + "column": 35, + "stop_line": 46, + "stop_column": 54, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `media_dir`", + "concise_description": "Class `dirs` has no class attribute `media_dir`", + "severity": "error" + }, + { + "line": 47, + "column": 35, + "stop_line": 47, + "stop_column": 60, + "path": "src/paperless/tests/test_checks.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `dirs` has no class attribute `consumption_dir`", + "concise_description": "Class `dirs` has no class attribute `consumption_dir`", + "severity": "error" + }, + { + "line": 294, + "column": 23, + "stop_line": 294, + "stop_column": 47, + "path": "src/paperless/tests/test_signals.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get`", + "concise_description": "Object of class `NoneType` has no attribute `get`", + "severity": "error" + }, + { + "line": 301, + "column": 23, + "stop_line": 301, + "stop_column": 47, + "path": "src/paperless/tests/test_signals.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `get`", + "concise_description": "Object of class `NoneType` has no attribute `get`", + "severity": "error" + }, + { + "line": 42, + "column": 15, + "stop_line": 42, + "stop_column": 39, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `group_send`", + "concise_description": "Object of class `NoneType` has no attribute `group_send`", + "severity": "error" + }, + { + "line": 53, + "column": 15, + "stop_line": 53, + "stop_column": 39, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `group_send`", + "concise_description": "Object of class `NoneType` has no attribute `group_send`", + "severity": "error" + }, + { + "line": 82, + "column": 15, + "stop_line": 82, + "stop_column": 39, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `group_send`", + "concise_description": "Object of class `NoneType` has no attribute `group_send`", + "severity": "error" + }, + { + "line": 96, + "column": 28, + "stop_line": 96, + "stop_column": 34, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "severity": "error" + }, + { + "line": 97, + "column": 28, + "stop_line": 97, + "stop_column": 34, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "severity": "error" + }, + { + "line": 98, + "column": 28, + "stop_line": 98, + "stop_column": 34, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "severity": "error" + }, + { + "line": 99, + "column": 28, + "stop_line": 99, + "stop_column": 34, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "severity": "error" + }, + { + "line": 107, + "column": 15, + "stop_line": 107, + "stop_column": 39, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `group_send`", + "concise_description": "Object of class `NoneType` has no attribute `group_send`", + "severity": "error" + }, + { + "line": 115, + "column": 28, + "stop_line": 115, + "stop_column": 34, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "bad-typed-dict-key", + "description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "concise_description": "TypedDict `_WebsocketTestScope` does not have key `user`", + "severity": "error" + }, + { + "line": 121, + "column": 15, + "stop_line": 121, + "stop_column": 39, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `group_send`", + "concise_description": "Object of class `NoneType` has no attribute `group_send`", + "severity": "error" + }, + { + "line": 131, + "column": 15, + "stop_line": 131, + "stop_column": 39, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `group_send`", + "concise_description": "Object of class `NoneType` has no attribute `group_send`", + "severity": "error" + }, + { + "line": 150, + "column": 15, + "stop_line": 150, + "stop_column": 39, + "path": "src/paperless/tests/test_websockets.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `group_send`", + "concise_description": "Object of class `NoneType` has no attribute `group_send`", + "severity": "error" + }, + { + "line": 371, + "column": 9, + "stop_line": 371, + "stop_column": 49, + "path": "src/paperless/urls.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `django.urls.conf.path` called with arguments: (Literal['ws/status/'], _ASGIApplicationProtocol)\n Possible overloads:\n (route: _StrOrPromise, view: (...) -> HttpResponseBase, kwargs: dict[str, Any] = ..., name: str = ...) -> URLPattern [closest match]\n (route: _StrOrPromise, view: (...) -> Coroutine[Any, Any, HttpResponseBase], kwargs: dict[str, Any] = ..., name: str = ...) -> URLPattern\n (route: _StrOrPromise, view: tuple[Sequence[URLPattern | URLResolver], str | None, str | None], kwargs: dict[str, Any] = ..., name: str = ...) -> URLResolver\n (route: _StrOrPromise, view: Sequence[URLResolver | str], kwargs: dict[str, Any] = ..., name: str = ...) -> URLResolver", + "concise_description": "No matching overload found for function `django.urls.conf.path` called with arguments: (Literal['ws/status/'], _ASGIApplicationProtocol)", + "severity": "error" + }, + { + "line": 195, + "column": 20, + "stop_line": 195, + "stop_column": 60, + "path": "src/paperless/validators.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `EllipsisType` has no attribute `lower`", + "concise_description": "Object of class `EllipsisType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 195, + "column": 32, + "stop_line": 195, + "stop_column": 43, + "path": "src/paperless/validators.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Ellipsis | Unknown` is not assignable to parameter `text_or_uri_element` with type `_Element | bytes | str | None` in function `lxml.etree.QName.__init__`", + "concise_description": "Argument `Ellipsis | Unknown` is not assignable to parameter `text_or_uri_element` with type `_Element | bytes | str | None` in function `lxml.etree.QName.__init__`", + "severity": "error" + }, + { + "line": 201, + "column": 38, + "stop_line": 201, + "stop_column": 58, + "path": "src/paperless/validators.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `str.join` called with arguments: (Iterator[_AnyStr] | Unknown)\n Possible overloads:\n (iterable: Iterable[LiteralString], /) -> LiteralString [closest match]\n (iterable: Iterable[str], /) -> str", + "concise_description": "No matching overload found for function `str.join` called with arguments: (Iterator[_AnyStr] | Unknown)", + "severity": "error" + }, + { + "line": 210, + "column": 38, + "stop_line": 210, + "stop_column": 58, + "path": "src/paperless/validators.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `EllipsisType` has no attribute `items`", + "concise_description": "Object of class `EllipsisType` has no attribute `items`", + "severity": "error" + }, + { + "line": 63, + "column": 31, + "stop_line": 63, + "stop_column": 50, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `paginator`", + "concise_description": "Object of class `NoneType` has no attribute `paginator`", + "severity": "error" + }, + { + "line": 73, + "column": 17, + "stop_line": 73, + "stop_column": 36, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `paginator`", + "concise_description": "Object of class `NoneType` has no attribute `paginator`", + "severity": "error" + }, + { + "line": 80, + "column": 36, + "stop_line": 80, + "stop_column": 70, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `results`", + "concise_description": "Object of class `NoneType` has no attribute `results`", + "severity": "error" + }, + { + "line": 85, + "column": 19, + "stop_line": 85, + "stop_column": 38, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `paginator`", + "concise_description": "Object of class `NoneType` has no attribute `paginator`", + "severity": "error" + }, + { + "line": 86, + "column": 16, + "stop_line": 86, + "stop_column": 19, + "path": "src/paperless/views.py", + "code": -2, + "name": "unbound-name", + "description": "`ids` may be uninitialized", + "concise_description": "`ids` may be uninitialized", + "severity": "error" + }, + { + "line": 121, + "column": 9, + "stop_line": 121, + "stop_column": 15, + "path": "src/paperless/views.py", + "code": -2, + "name": "bad-override", + "description": "Class member `UserViewSet.create` overrides parent class `ModelViewSet` in an inconsistent manner\n `UserViewSet.create` has type `BoundMethod[UserViewSet, (self: UserViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseForbidden | Response]`, which is not assignable to `BoundMethod[UserViewSet, (self: UserViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `ModelViewSet.create`", + "concise_description": "Class member `UserViewSet.create` overrides parent class `ModelViewSet` in an inconsistent manner", + "severity": "error" + }, + { + "line": 128, + "column": 9, + "stop_line": 128, + "stop_column": 15, + "path": "src/paperless/views.py", + "code": -2, + "name": "bad-override", + "description": "Class member `UserViewSet.update` overrides parent class `ModelViewSet` in an inconsistent manner\n `UserViewSet.update` has type `BoundMethod[UserViewSet, (self: UserViewSet, request: Unknown, *args: Unknown, **kwargs: Unknown) -> HttpResponseForbidden | Response]`, which is not assignable to `BoundMethod[UserViewSet, (self: UserViewSet, request: Request, *args: Any, **kwargs: Any) -> Response]`, the type of `ModelViewSet.update`", + "concise_description": "Class member `UserViewSet.update` overrides parent class `ModelViewSet` in an inconsistent manner", + "severity": "error" + }, + { + "line": 204, + "column": 13, + "stop_line": 204, + "stop_column": 30, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `set_password`", + "concise_description": "Object of class `NoneType` has no attribute `set_password`", + "severity": "error" + }, + { + "line": 205, + "column": 13, + "stop_line": 205, + "stop_column": 22, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 209, + "column": 9, + "stop_line": 209, + "stop_column": 18, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 286, + "column": 38, + "stop_line": 286, + "stop_column": 75, + "path": "src/paperless/views.py", + "code": -2, + "name": "bad-assignment", + "description": "`Authenticator | None` is not assignable to `Authenticator`", + "concise_description": "`Authenticator | None` is not assignable to `Authenticator`", + "severity": "error" + }, + { + "line": 288, + "column": 34, + "stop_line": 288, + "stop_column": 65, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `TOTP` has no attribute `get_unused_codes`\nObject of class `WebAuthn` has no attribute `get_unused_codes`", + "concise_description": "Object of class `TOTP` has no attribute `get_unused_codes`\nObject of class `WebAuthn` has no attribute `get_unused_codes`", + "severity": "error" + }, + { + "line": 366, + "column": 13, + "stop_line": 366, + "stop_column": 36, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `ai_enabled`", + "concise_description": "Object of class `NoneType` has no attribute `ai_enabled`", + "severity": "error" + }, + { + "line": 366, + "column": 41, + "stop_line": 366, + "stop_column": 75, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `llm_embedding_backend`", + "concise_description": "Object of class `NoneType` has no attribute `llm_embedding_backend`", + "severity": "error" + }, + { + "line": 416, + "column": 23, + "stop_line": 416, + "stop_column": 45, + "path": "src/paperless/views.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `AbstractBaseUser` has no attribute `socialaccount_set`\nObject of class `AnonymousUser` has no attribute `socialaccount_set`", + "concise_description": "Object of class `AbstractBaseUser` has no attribute `socialaccount_set`\nObject of class `AnonymousUser` has no attribute `socialaccount_set`", + "severity": "error" + }, + { + "line": 102, + "column": 30, + "stop_line": 102, + "stop_column": 36, + "path": "src/paperless_ai/ai_classifier.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `raw` with type `dict[Unknown, Unknown]` in function `parse_ai_response`", + "concise_description": "Argument `str` is not assignable to parameter `raw` with type `dict[Unknown, Unknown]` in function `parse_ai_response`", + "severity": "error" + }, + { + "line": 103, + "column": 18, + "stop_line": 103, + "stop_column": 46, + "path": "src/paperless_ai/chat.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Response` has no attribute `response_gen`", + "concise_description": "Object of class `Response` has no attribute `response_gen`", + "severity": "error" + }, + { + "line": 59, + "column": 16, + "stop_line": 59, + "stop_column": 35, + "path": "src/paperless_ai/client.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `dict[str, Any]` is not assignable to declared return type `str`", + "concise_description": "Returned type `dict[str, Any]` is not assignable to declared return type `str`", + "severity": "error" + }, + { + "line": 86, + "column": 21, + "stop_line": 86, + "stop_column": 38, + "path": "src/paperless_ai/embedding.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Document` has no attribute `custom_fields`", + "concise_description": "Object of class `Document` has no attribute `custom_fields`", + "severity": "error" + }, + { + "line": 241, + "column": 46, + "stop_line": 241, + "stop_column": 51, + "path": "src/paperless_ai/indexing.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `BaseIndex[Unknown] | VectorStoreIndex` is not assignable to parameter `index` with type `VectorStoreIndex` in function `remove_document_docstore_nodes`", + "concise_description": "Argument `BaseIndex[Unknown] | VectorStoreIndex` is not assignable to parameter `index` with type `VectorStoreIndex` in function `remove_document_docstore_nodes`", + "severity": "error" + }, + { + "line": 254, + "column": 46, + "stop_line": 254, + "stop_column": 51, + "path": "src/paperless_ai/indexing.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `BaseIndex[Unknown] | VectorStoreIndex` is not assignable to parameter `index` with type `VectorStoreIndex` in function `remove_document_docstore_nodes`", + "concise_description": "Argument `BaseIndex[Unknown] | VectorStoreIndex` is not assignable to parameter `index` with type `VectorStoreIndex` in function `remove_document_docstore_nodes`", + "severity": "error" + }, + { + "line": 305, + "column": 15, + "stop_line": 305, + "stop_column": 20, + "path": "src/paperless_ai/indexing.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `BaseIndex[Unknown] | VectorStoreIndex` is not assignable to parameter `index` with type `VectorStoreIndex` in function `llama_index.core.indices.vector_store.retrievers.retriever.VectorIndexRetriever.__init__`", + "concise_description": "Argument `BaseIndex[Unknown] | VectorStoreIndex` is not assignable to parameter `index` with type `VectorStoreIndex` in function `llama_index.core.indices.vector_store.retrievers.retriever.VectorIndexRetriever.__init__`", + "severity": "error" + }, + { + "line": 49, + "column": 9, + "stop_line": 49, + "stop_column": 30, + "path": "src/paperless_ai/tests/test_ai_indexing.py", + "code": -2, + "name": "bad-override", + "description": "Class member `FakeEmbedding._aget_query_embedding` overrides parent class `BaseEmbedding` in an inconsistent manner\n `FakeEmbedding._aget_query_embedding` has type `BoundMethod[FakeEmbedding, (self: FakeEmbedding, query: str) -> list[float]]`, which is not assignable to `BoundMethod[FakeEmbedding, (self: FakeEmbedding, query: str) -> Coroutine[Unknown, Unknown, list[float]]]`, the type of `BaseEmbedding._aget_query_embedding`", + "concise_description": "Class member `FakeEmbedding._aget_query_embedding` overrides parent class `BaseEmbedding` in an inconsistent manner", + "severity": "error" + }, + { + "line": 95, + "column": 12, + "stop_line": 95, + "stop_column": 27, + "path": "src/paperless_ai/tests/test_client.py", + "code": -2, + "name": "bad-index", + "description": "Cannot index into `str`\n No matching overload found for function `str.__getitem__` called with arguments: (Literal['title'])\n Possible overloads:\n (key: SupportsIndex | slice[Any, Any, Any], /) -> LiteralString\n (key: SupportsIndex | slice[Any, Any, Any], /) -> str [closest match]", + "concise_description": "Cannot index into `str`", + "severity": "error" + }, + { + "line": 38, + "column": 49, + "stop_line": 38, + "stop_column": 53, + "path": "src/paperless_ai/tests/test_matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_tags_by_name`", + "concise_description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_tags_by_name`", + "severity": "error" + }, + { + "line": 46, + "column": 59, + "stop_line": 46, + "stop_column": 63, + "path": "src/paperless_ai/tests/test_matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_correspondents_by_name`", + "concise_description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_correspondents_by_name`", + "severity": "error" + }, + { + "line": 54, + "column": 59, + "stop_line": 54, + "stop_column": 63, + "path": "src/paperless_ai/tests/test_matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_document_types_by_name`", + "concise_description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_document_types_by_name`", + "severity": "error" + }, + { + "line": 62, + "column": 58, + "stop_line": 62, + "stop_column": 62, + "path": "src/paperless_ai/tests/test_matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_storage_paths_by_name`", + "concise_description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_storage_paths_by_name`", + "severity": "error" + }, + { + "line": 76, + "column": 37, + "stop_line": 76, + "stop_column": 42, + "path": "src/paperless_ai/tests/test_matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[str | None]` is not assignable to parameter `names` with type `list[str]` in function `paperless_ai.matching.match_tags_by_name`", + "concise_description": "Argument `list[str | None]` is not assignable to parameter `names` with type `list[str]` in function `paperless_ai.matching.match_tags_by_name`", + "severity": "error" + }, + { + "line": 76, + "column": 49, + "stop_line": 76, + "stop_column": 53, + "path": "src/paperless_ai/tests/test_matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_tags_by_name`", + "concise_description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_tags_by_name`", + "severity": "error" + }, + { + "line": 83, + "column": 49, + "stop_line": 83, + "stop_column": 53, + "path": "src/paperless_ai/tests/test_matching.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_tags_by_name`", + "concise_description": "Argument `None` is not assignable to parameter `user` with type `User` in function `paperless_ai.matching.match_tags_by_name`", + "severity": "error" + }, + { + "line": 110, + "column": 9, + "stop_line": 110, + "stop_column": 21, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-override", + "description": "Class member `DeleteMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `DeleteMailAction.post_consume` has type `BoundMethod[DeleteMailAction, (self: DeleteMailAction, M: MailBox, message_uid: str, parameter: str) -> None]`, which is not assignable to `BoundMethod[DeleteMailAction, (self: DeleteMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", + "concise_description": "Class member `DeleteMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", + "severity": "error" + }, + { + "line": 122, + "column": 9, + "stop_line": 122, + "stop_column": 21, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-override", + "description": "Class member `MarkReadMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `MarkReadMailAction.post_consume` has type `BoundMethod[MarkReadMailAction, (self: MarkReadMailAction, M: MailBox, message_uid: str, parameter: str) -> None]`, which is not assignable to `BoundMethod[MarkReadMailAction, (self: MarkReadMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", + "concise_description": "Class member `MarkReadMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", + "severity": "error" + }, + { + "line": 131, + "column": 9, + "stop_line": 131, + "stop_column": 21, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-override", + "description": "Class member `MoveMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `MoveMailAction.post_consume` has type `BoundMethod[MoveMailAction, (self: MoveMailAction, M: Unknown, message_uid: Unknown, parameter: Unknown) -> None]`, which is not assignable to `BoundMethod[MoveMailAction, (self: MoveMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", + "concise_description": "Class member `MoveMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", + "severity": "error" + }, + { + "line": 143, + "column": 9, + "stop_line": 143, + "stop_column": 21, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-override", + "description": "Class member `FlagMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `FlagMailAction.post_consume` has type `BoundMethod[FlagMailAction, (self: FlagMailAction, M: MailBox, message_uid: str, parameter: str) -> None]`, which is not assignable to `BoundMethod[FlagMailAction, (self: FlagMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", + "concise_description": "Class member `FlagMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", + "severity": "error" + }, + { + "line": 165, + "column": 26, + "stop_line": 165, + "stop_column": 30, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-assignment", + "description": "`None` is not assignable to attribute `color` with type `str`", + "concise_description": "`None` is not assignable to attribute `color` with type `str`", + "severity": "error" + }, + { + "line": 180, + "column": 9, + "stop_line": 180, + "stop_column": 21, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TagMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner\n `TagMailAction.post_consume` has type `BoundMethod[TagMailAction, (self: TagMailAction, M: MailBox, message_uid: str, parameter: str) -> None]`, which is not assignable to `BoundMethod[TagMailAction, (self: TagMailAction, M: MailBox, message_uid: str, parameter: str) -> Never]`, the type of `BaseMailAction.post_consume`", + "concise_description": "Class member `TagMailAction.post_consume` overrides parent class `BaseMailAction` in an inconsistent manner", + "severity": "error" + }, + { + "line": 182, + "column": 64, + "stop_line": 182, + "stop_column": 76, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `*args` with type `str` in function `imaplib.IMAP4.uid`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `*args` with type `str` in function `imaplib.IMAP4.uid`", + "severity": "error" + }, + { + "line": 194, + "column": 33, + "stop_line": 194, + "stop_column": 70, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[str] | list[Unknown] | None` is not assignable to parameter `flag_set` with type `Iterable[str] | str` in function `imap_tools.mailbox.BaseMailBox.flag`", + "concise_description": "Argument `list[str] | list[Unknown] | None` is not assignable to parameter `flag_set` with type `Iterable[str] | str` in function `imap_tools.mailbox.BaseMailBox.flag`", + "severity": "error" + }, + { + "line": 272, + "column": 53, + "stop_line": 272, + "stop_column": 74, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `parameter` with type `str` in function `BaseMailAction.post_consume`", + "concise_description": "Argument `str | None` is not assignable to parameter `parameter` with type `str` in function `BaseMailAction.post_consume`", + "severity": "error" + }, + { + "line": 373, + "column": 13, + "stop_line": 373, + "stop_column": 34, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `parameter` with type `str` in function `TagMailAction.__init__`", + "concise_description": "Argument `str | None` is not assignable to parameter `parameter` with type `str` in function `TagMailAction.__init__`", + "severity": "error" + }, + { + "line": 390, + "column": 30, + "stop_line": 390, + "stop_column": 46, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, date]`\n Argument `str` is not assignable to parameter `value` with type `date` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, date]`", + "severity": "error" + }, + { + "line": 392, + "column": 27, + "stop_line": 392, + "stop_column": 41, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, date]`\n Argument `str` is not assignable to parameter `value` with type `date` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, date]`", + "severity": "error" + }, + { + "line": 394, + "column": 32, + "stop_line": 394, + "stop_column": 51, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, date]`\n Argument `str` is not assignable to parameter `value` with type `date` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, date]`", + "severity": "error" + }, + { + "line": 396, + "column": 29, + "stop_line": 396, + "stop_column": 45, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "unsupported-operation", + "description": "Cannot set item in `dict[str, date]`\n Argument `str` is not assignable to parameter `value` with type `date` in function `dict.__setitem__`", + "concise_description": "Cannot set item in `dict[str, date]`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `answered` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `answered` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `seen` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `seen` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `flagged` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `flagged` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `draft` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `draft` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `deleted` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `deleted` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `keyword` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `keyword` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `no_keyword` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `no_keyword` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `from_` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `from_` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `to` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `to` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `subject` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `subject` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `body` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `body` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `text` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `text` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `bcc` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `bcc` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `cc` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `cc` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `size_gt` with type `int | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `size_gt` with type `int | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `size_lt` with type `int | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `size_lt` with type `int | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `new` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `new` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `old` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `old` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `recent` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `recent` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `all` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `all` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `uid` with type `Iterable[str] | UidRange | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `uid` with type `Iterable[str] | UidRange | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `header` with type `Header | list[Header] | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `header` with type `Header | list[Header] | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 404, + "column": 38, + "stop_line": 404, + "stop_column": 49, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `gmail_label` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `gmail_label` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `answered` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `answered` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `seen` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `seen` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `flagged` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `flagged` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `draft` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `draft` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `deleted` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `deleted` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `keyword` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `keyword` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `no_keyword` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `no_keyword` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `from_` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `from_` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `to` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `to` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `subject` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `subject` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `body` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `body` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `text` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `text` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `bcc` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `bcc` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `cc` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `cc` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `size_gt` with type `int | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `size_gt` with type `int | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `size_lt` with type `int | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `size_lt` with type `int | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `new` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `new` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `old` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `old` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `recent` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `recent` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `all` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `all` with type `bool | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `uid` with type `Iterable[str] | UidRange | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `uid` with type `Iterable[str] | UidRange | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `header` with type `Header | list[Header] | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `header` with type `Header | list[Header] | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 408, + "column": 32, + "stop_line": 408, + "stop_column": 43, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `date` is not assignable to parameter `gmail_label` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "concise_description": "Unpacked keyword argument `date` is not assignable to parameter `gmail_label` with type `list[str] | str | None` in function `imap_tools.query.LogicOperator.__init__`", + "severity": "error" + }, + { + "line": 427, + "column": 12, + "stop_line": 427, + "stop_column": 19, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-return", + "description": "Returned type `MailBox | MailBoxStartTls | MailBoxUnencrypted` is not assignable to declared return type `MailBox`", + "concise_description": "Returned type `MailBox | MailBoxStartTls | MailBoxUnencrypted` is not assignable to declared return type `MailBox`", + "severity": "error" + }, + { + "line": 565, + "column": 54, + "stop_line": 565, + "stop_column": 67, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `MailAccount` has no attribute `rules`", + "concise_description": "Object of class `MailAccount` has no attribute `rules`", + "severity": "error" + }, + { + "line": 568, + "column": 29, + "stop_line": 568, + "stop_column": 42, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `MailAccount` has no attribute `rules`", + "concise_description": "Object of class `MailAccount` has no attribute `rules`", + "severity": "error" + }, + { + "line": 607, + "column": 31, + "stop_line": 607, + "stop_column": 52, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `object` with type `str` in function `list.insert`", + "concise_description": "Argument `str | None` is not assignable to parameter `object` with type `str` in function `list.insert`", + "severity": "error" + }, + { + "line": 614, + "column": 44, + "stop_line": 614, + "stop_column": 50, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "unbound-name", + "description": "`folder` is uninitialized", + "concise_description": "`folder` is uninitialized", + "severity": "error" + }, + { + "line": 626, + "column": 40, + "stop_line": 626, + "stop_column": 46, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "unbound-name", + "description": "`folder` is uninitialized", + "concise_description": "`folder` is uninitialized", + "severity": "error" + }, + { + "line": 926, + "column": 40, + "stop_line": 926, + "stop_column": 60, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Message` has no attribute `_headers`", + "concise_description": "Object of class `Message` has no attribute `_headers`", + "severity": "error" + }, + { + "line": 930, + "column": 32, + "stop_line": 930, + "stop_column": 52, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Message` has no attribute `_headers`", + "concise_description": "Object of class `Message` has no attribute `_headers`", + "severity": "error" + }, + { + "line": 931, + "column": 32, + "stop_line": 931, + "stop_column": 52, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Message` has no attribute `_headers`", + "concise_description": "Object of class `Message` has no attribute `_headers`", + "severity": "error" + }, + { + "line": 932, + "column": 17, + "stop_line": 932, + "stop_column": 37, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Message` has no attribute `_headers`", + "concise_description": "Object of class `Message` has no attribute `_headers`", + "severity": "error" + }, + { + "line": 946, + "column": 27, + "stop_line": 946, + "stop_column": 40, + "path": "src/paperless_mail/mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "concise_description": "Argument `str` is not assignable to parameter `original_file` with type `Path` in function `documents.data_models.ConsumableDocument.__init__`", + "severity": "error" + }, + { + "line": 97, + "column": 39, + "stop_line": 97, + "stop_column": 60, + "path": "src/paperless_mail/oauth.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `refresh_token` with type `str` in function `httpx_oauth.oauth2.BaseOAuth2.refresh_token`", + "concise_description": "Argument `str | None` is not assignable to parameter `refresh_token` with type `str` in function `httpx_oauth.oauth2.BaseOAuth2.refresh_token`", + "severity": "error" + }, + { + "line": 103, + "column": 39, + "stop_line": 103, + "stop_column": 60, + "path": "src/paperless_mail/oauth.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `refresh_token` with type `str` in function `httpx_oauth.oauth2.BaseOAuth2.refresh_token`", + "concise_description": "Argument `str | None` is not assignable to parameter `refresh_token` with type `str` in function `httpx_oauth.oauth2.BaseOAuth2.refresh_token`", + "severity": "error" + }, + { + "line": 106, + "column": 35, + "stop_line": 106, + "stop_column": 41, + "path": "src/paperless_mail/oauth.py", + "code": -2, + "name": "unbound-name", + "description": "`result` may be uninitialized", + "concise_description": "`result` may be uninitialized", + "severity": "error" + }, + { + "line": 108, + "column": 41, + "stop_line": 108, + "stop_column": 47, + "path": "src/paperless_mail/oauth.py", + "code": -2, + "name": "unbound-name", + "description": "`result` may be uninitialized", + "concise_description": "`result` may be uninitialized", + "severity": "error" + }, + { + "line": 109, + "column": 32, + "stop_line": 109, + "stop_column": 38, + "path": "src/paperless_mail/oauth.py", + "code": -2, + "name": "unbound-name", + "description": "`result` may be uninitialized", + "concise_description": "`result` may be uninitialized", + "severity": "error" + }, + { + "line": 111, + "column": 25, + "stop_line": 111, + "stop_column": 31, + "path": "src/paperless_mail/oauth.py", + "code": -2, + "name": "unbound-name", + "description": "`result` may be uninitialized", + "concise_description": "`result` may be uninitialized", + "severity": "error" + }, + { + "line": 55, + "column": 9, + "stop_line": 55, + "stop_column": 22, + "path": "src/paperless_mail/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `MailDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner\n `MailDocumentParser.get_thumbnail` has type `BoundMethod[MailDocumentParser, (self: MailDocumentParser, document_path: Path, mime_type: str, file_name: Unknown | None = None) -> Path]`, which is not assignable to `BoundMethod[MailDocumentParser, (self: MailDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.get_thumbnail`", + "concise_description": "Class member `MailDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 125, + "column": 9, + "stop_line": 125, + "stop_column": 14, + "path": "src/paperless_mail/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `MailDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner\n `MailDocumentParser.parse` has type `BoundMethod[MailDocumentParser, (self: MailDocumentParser, document_path: Path, mime_type: str, file_name: Unknown | None = None, mailrule_id: int | None = None) -> None]`, which is not assignable to `BoundMethod[MailDocumentParser, (self: MailDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.parse`", + "concise_description": "Class member `MailDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 151, + "column": 34, + "stop_line": 151, + "stop_column": 63, + "path": "src/paperless_mail/parsers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `full`", + "concise_description": "Object of class `NoneType` has no attribute `full`", + "severity": "error" + }, + { + "line": 192, + "column": 57, + "stop_line": 192, + "stop_column": 72, + "path": "src/paperless_mail/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `int` is not assignable to parameter `pdf_layout` with type `MailRule.PdfLayout | None` in function `MailDocumentParser.generate_pdf`", + "concise_description": "Argument `int` is not assignable to parameter `pdf_layout` with type `MailRule.PdfLayout | None` in function `MailDocumentParser.generate_pdf`", + "severity": "error" + }, + { + "line": 313, + "column": 35, + "stop_line": 313, + "stop_column": 56, + "path": "src/paperless_mail/parsers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `full`", + "concise_description": "Object of class `NoneType` has no attribute `full`", + "severity": "error" + }, + { + "line": 474, + "column": 9, + "stop_line": 474, + "stop_column": 21, + "path": "src/paperless_mail/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `MailDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `MailDocumentParser.get_settings` has type `BoundMethod[MailDocumentParser, (self: MailDocumentParser) -> None]`, which is not assignable to `BoundMethod[MailDocumentParser, (self: MailDocumentParser) -> Never]`, the type of `DocumentParser.get_settings`", + "concise_description": "Class member `MailDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 73, + "column": 71, + "stop_line": 73, + "stop_column": 99, + "path": "src/paperless_mail/preprocessor.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Crypt` has no attribute `stderr`", + "concise_description": "Object of class `Crypt` has no attribute `stderr`", + "severity": "error" + }, + { + "line": 27, + "column": 11, + "stop_line": 27, + "stop_column": 15, + "path": "src/paperless_mail/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `MailAccountSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `MailAccountSerializer.Meta` has type `type[MailAccountSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `MailAccountSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 74, + "column": 11, + "stop_line": 74, + "stop_column": 15, + "path": "src/paperless_mail/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `MailRuleSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `MailRuleSerializer.Meta` has type `type[MailRuleSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `MailRuleSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 137, + "column": 11, + "stop_line": 137, + "stop_column": 15, + "path": "src/paperless_mail/serialisers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `ProcessedMailSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner\n `ProcessedMailSerializer.Meta` has type `type[ProcessedMailSerializer.Meta]`, which is not assignable to `type[ModelSerializer.Meta]`, the type of `OwnedObjectSerializer.Meta`", + "concise_description": "Class member `ProcessedMailSerializer.Meta` overrides parent class `OwnedObjectSerializer` in an inconsistent manner", + "severity": "error" + }, + { + "line": 55, + "column": 44, + "stop_line": 55, + "stop_column": 48, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `None` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "concise_description": "Argument `None` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "severity": "error" + }, + { + "line": 74, + "column": 37, + "stop_line": 74, + "stop_column": 42, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['BAD']` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "concise_description": "Argument `Literal['BAD']` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "severity": "error" + }, + { + "line": 117, + "column": 37, + "stop_line": 117, + "stop_column": 42, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['BAD']` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "concise_description": "Argument `Literal['BAD']` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "severity": "error" + }, + { + "line": 122, + "column": 37, + "stop_line": 122, + "stop_column": 42, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['BAD']` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "concise_description": "Argument `Literal['BAD']` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "severity": "error" + }, + { + "line": 126, + "column": 37, + "stop_line": 126, + "stop_column": 42, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['BAD']` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "concise_description": "Argument `Literal['BAD']` is not assignable to parameter `command_result` with type `tuple[Unknown, ...]` in function `imap_tools.errors.UnexpectedCommandStatusError.__init__`", + "severity": "error" + }, + { + "line": 172, + "column": 25, + "stop_line": 172, + "stop_column": 40, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `MailMessage` has no attribute `flagged`", + "concise_description": "Object of class `MailMessage` has no attribute `flagged`", + "severity": "error" + }, + { + "line": 174, + "column": 25, + "stop_line": 174, + "stop_column": 37, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `MailMessage` has no attribute `seen`", + "concise_description": "Object of class `MailMessage` has no attribute `seen`", + "severity": "error" + }, + { + "line": 260, + "column": 9, + "stop_line": 260, + "stop_column": 22, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `MailMessage` has no attribute `seen`", + "concise_description": "Object of class `MailMessage` has no attribute `seen`", + "severity": "error" + }, + { + "line": 261, + "column": 9, + "stop_line": 261, + "stop_column": 25, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `MailMessage` has no attribute `flagged`", + "concise_description": "Object of class `MailMessage` has no attribute `flagged`", + "severity": "error" + }, + { + "line": 419, + "column": 30, + "stop_line": 419, + "stop_column": 43, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "invalid-argument", + "description": "Expected string literal \"message\"", + "concise_description": "Expected string literal \"message\"", + "severity": "error" + }, + { + "line": 426, + "column": 31, + "stop_line": 426, + "stop_column": 44, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "invalid-argument", + "description": "Expected string literal \"message2\"", + "concise_description": "Expected string literal \"message2\"", + "severity": "error" + }, + { + "line": 433, + "column": 58, + "stop_line": 433, + "stop_column": 72, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Class `message2` has no class attribute `from_`", + "concise_description": "Class `message2` has no class attribute `from_`", + "severity": "error" + }, + { + "line": 442, + "column": 54, + "stop_line": 442, + "stop_column": 61, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_correspondent.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "concise_description": "Argument `type[TestMail.test_get_correspondent.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "severity": "error" + }, + { + "line": 448, + "column": 40, + "stop_line": 448, + "stop_column": 47, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_correspondent.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "concise_description": "Argument `type[TestMail.test_get_correspondent.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "severity": "error" + }, + { + "line": 453, + "column": 40, + "stop_line": 453, + "stop_column": 48, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_correspondent.message2]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "concise_description": "Argument `type[TestMail.test_get_correspondent.message2]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "severity": "error" + }, + { + "line": 462, + "column": 40, + "stop_line": 462, + "stop_column": 47, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_correspondent.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "concise_description": "Argument `type[TestMail.test_get_correspondent.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "severity": "error" + }, + { + "line": 465, + "column": 40, + "stop_line": 465, + "stop_column": 48, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_correspondent.message2]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "concise_description": "Argument `type[TestMail.test_get_correspondent.message2]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "severity": "error" + }, + { + "line": 474, + "column": 40, + "stop_line": 474, + "stop_column": 47, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_correspondent.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "concise_description": "Argument `type[TestMail.test_get_correspondent.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_correspondent`", + "severity": "error" + }, + { + "line": 478, + "column": 30, + "stop_line": 478, + "stop_column": 43, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "invalid-argument", + "description": "Expected string literal \"message\"", + "concise_description": "Expected string literal \"message\"", + "severity": "error" + }, + { + "line": 480, + "column": 26, + "stop_line": 480, + "stop_column": 38, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "invalid-argument", + "description": "Expected string literal \"att\"", + "concise_description": "Expected string literal \"att\"", + "severity": "error" + }, + { + "line": 489, + "column": 45, + "stop_line": 489, + "stop_column": 52, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_title.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "concise_description": "Argument `type[TestMail.test_get_title.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "severity": "error" + }, + { + "line": 489, + "column": 54, + "stop_line": 489, + "stop_column": 57, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_title.att]` is not assignable to parameter `att` with type `MailAttachment` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "concise_description": "Argument `type[TestMail.test_get_title.att]` is not assignable to parameter `att` with type `MailAttachment` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "severity": "error" + }, + { + "line": 494, + "column": 45, + "stop_line": 494, + "stop_column": 52, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_title.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "concise_description": "Argument `type[TestMail.test_get_title.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "severity": "error" + }, + { + "line": 494, + "column": 54, + "stop_line": 494, + "stop_column": 57, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_title.att]` is not assignable to parameter `att` with type `MailAttachment` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "concise_description": "Argument `type[TestMail.test_get_title.att]` is not assignable to parameter `att` with type `MailAttachment` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "severity": "error" + }, + { + "line": 499, + "column": 45, + "stop_line": 499, + "stop_column": 52, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_title.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "concise_description": "Argument `type[TestMail.test_get_title.message]` is not assignable to parameter `message` with type `MailMessage` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "severity": "error" + }, + { + "line": 499, + "column": 54, + "stop_line": 499, + "stop_column": 57, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `type[TestMail.test_get_title.att]` is not assignable to parameter `att` with type `MailAttachment` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "concise_description": "Argument `type[TestMail.test_get_title.att]` is not assignable to parameter `att` with type `MailAttachment` in function `paperless_mail.mail.MailAccountHandler._get_title`", + "severity": "error" + }, + { + "line": 531, + "column": 30, + "stop_line": 531, + "stop_column": 43, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "invalid-argument", + "description": "Expected string literal \"message\"", + "concise_description": "Expected string literal \"message\"", + "severity": "error" + }, + { + "line": 1168, + "column": 9, + "stop_line": 1168, + "stop_column": 50, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BogusFolderManager` has no attribute `list`", + "concise_description": "Object of class `BogusFolderManager` has no attribute `list`", + "severity": "error" + }, + { + "line": 1174, + "column": 9, + "stop_line": 1174, + "stop_column": 50, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BogusFolderManager` has no attribute `list`", + "concise_description": "Object of class `BogusFolderManager` has no attribute `list`", + "severity": "error" + }, + { + "line": 1201, + "column": 9, + "stop_line": 1201, + "stop_column": 50, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BogusFolderManager` has no attribute `list`", + "concise_description": "Object of class `BogusFolderManager` has no attribute `list`", + "severity": "error" + }, + { + "line": 1207, + "column": 9, + "stop_line": 1207, + "stop_column": 50, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `BogusFolderManager` has no attribute `list`", + "concise_description": "Object of class `BogusFolderManager` has no attribute `list`", + "severity": "error" + }, + { + "line": 1269, + "column": 13, + "stop_line": 1273, + "stop_column": 14, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[list[dict[str, int]]]` is not assignable to parameter `expected_call_args` with type `list[list[dict[str, str]]]` in function `MailMocker.assert_queue_consumption_tasks_call_args`", + "concise_description": "Argument `list[list[dict[str, int]]]` is not assignable to parameter `expected_call_args` with type `list[list[dict[str, str]]]` in function `MailMocker.assert_queue_consumption_tasks_call_args`", + "severity": "error" + }, + { + "line": 1288, + "column": 13, + "stop_line": 1292, + "stop_column": 14, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[list[dict[str, None]]]` is not assignable to parameter `expected_call_args` with type `list[list[dict[str, str]]]` in function `MailMocker.assert_queue_consumption_tasks_call_args`", + "concise_description": "Argument `list[list[dict[str, None]]]` is not assignable to parameter `expected_call_args` with type `list[list[dict[str, str]]]` in function `MailMocker.assert_queue_consumption_tasks_call_args`", + "severity": "error" + }, + { + "line": 1583, + "column": 41, + "stop_line": 1583, + "stop_column": 61, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `str | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "severity": "error" + }, + { + "line": 1886, + "column": 26, + "stop_line": 1886, + "stop_column": 35, + "path": "src/paperless_mail/tests/test_mail.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `name`", + "concise_description": "Object of class `NoneType` has no attribute `name`", + "severity": "error" + }, + { + "line": 134, + "column": 42, + "stop_line": 134, + "stop_column": 54, + "path": "src/paperless_mail/tests/test_mail_oauth.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "concise_description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "severity": "error" + }, + { + "line": 145, + "column": 42, + "stop_line": 145, + "stop_column": 54, + "path": "src/paperless_mail/tests/test_mail_oauth.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "concise_description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "severity": "error" + }, + { + "line": 177, + "column": 46, + "stop_line": 177, + "stop_column": 58, + "path": "src/paperless_mail/tests/test_mail_oauth.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "concise_description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "severity": "error" + }, + { + "line": 187, + "column": 46, + "stop_line": 187, + "stop_column": 58, + "path": "src/paperless_mail/tests/test_mail_oauth.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "concise_description": "Object of class `_MonkeyPatchedWSGIResponse` has no attribute `url`", + "severity": "error" + }, + { + "line": 110, + "column": 45, + "stop_line": 110, + "stop_column": 49, + "path": "src/paperless_mail/tests/test_parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Literal['na']` is not assignable to parameter `document_path` with type `Path` in function `paperless_mail.parsers.MailDocumentParser.extract_metadata`", + "concise_description": "Argument `Literal['na']` is not assignable to parameter `document_path` with type `Path` in function `paperless_mail.parsers.MailDocumentParser.extract_metadata`", + "severity": "error" + }, + { + "line": 315, + "column": 47, + "stop_line": 315, + "stop_column": 75, + "path": "src/paperless_mail/tests/test_parsers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `url`", + "concise_description": "Object of class `NoneType` has no attribute `url`", + "severity": "error" + }, + { + "line": 669, + "column": 20, + "stop_line": 669, + "stop_column": 31, + "path": "src/paperless_mail/tests/test_parsers.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `url`", + "concise_description": "Object of class `NoneType` has no attribute `url`", + "severity": "error" + }, + { + "line": 25, + "column": 23, + "stop_line": 36, + "stop_column": 10, + "path": "src/paperless_mail/tests/test_parsers_live.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], check=Literal[True])\n Possible overloads:\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: Literal[True], timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, *, universal_newlines: Literal[True], startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: Literal[False] | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: None = None, errors: None = None, input: Buffer | None = None, text: Literal[False] | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[bytes] [closest match]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: Buffer | str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[Any]", + "concise_description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], check=Literal[True])", + "severity": "error" + }, + { + "line": 264, + "column": 37, + "stop_line": 264, + "stop_column": 49, + "path": "src/paperless_mail/tests/test_parsers_live.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `pdf_path` with type `Path` in function `extract_text`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `pdf_path` with type `Path` in function `extract_text`", + "severity": "error" + }, + { + "line": 70, + "column": 9, + "stop_line": 70, + "stop_column": 30, + "path": "src/paperless_mail/tests/test_preprocessor.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Message` has no attribute `_headers`", + "concise_description": "Object of class `Message` has no attribute `_headers`", + "severity": "error" + }, + { + "line": 72, + "column": 27, + "stop_line": 72, + "stop_column": 48, + "path": "src/paperless_mail/tests/test_preprocessor.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Message` has no attribute `_headers`", + "concise_description": "Object of class `Message` has no attribute `_headers`", + "severity": "error" + }, + { + "line": 85, + "column": 51, + "stop_line": 85, + "stop_column": 72, + "path": "src/paperless_mail/tests/test_preprocessor.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `Crypt` has no attribute `stderr`", + "concise_description": "Object of class `Crypt` has no attribute `stderr`", + "severity": "error" + }, + { + "line": 100, + "column": 36, + "stop_line": 100, + "stop_column": 66, + "path": "src/paperless_mail/tests/test_preprocessor.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `str` has no attribute `decode`\n Did you mean `encode`?", + "concise_description": "Object of class `str` has no attribute `decode`", + "severity": "error" + }, + { + "line": 114, + "column": 66, + "stop_line": 114, + "stop_column": 82, + "path": "src/paperless_mail/views.py", + "code": -2, + "name": "unbound-name", + "description": "`existing_account` may be uninitialized", + "concise_description": "`existing_account` may be uninitialized", + "severity": "error" + }, + { + "line": 116, + "column": 25, + "stop_line": 116, + "stop_column": 41, + "path": "src/paperless_mail/views.py", + "code": -2, + "name": "unbound-name", + "description": "`existing_account` may be uninitialized", + "concise_description": "`existing_account` may be uninitialized", + "severity": "error" + }, + { + "line": 117, + "column": 44, + "stop_line": 117, + "stop_column": 60, + "path": "src/paperless_mail/views.py", + "code": -2, + "name": "unbound-name", + "description": "`existing_account` may be uninitialized", + "concise_description": "`existing_account` may be uninitialized", + "severity": "error" + }, + { + "line": 242, + "column": 28, + "stop_line": 242, + "stop_column": 34, + "path": "src/paperless_mail/views.py", + "code": -2, + "name": "unbound-name", + "description": "`result` may be uninitialized", + "concise_description": "`result` may be uninitialized", + "severity": "error" + }, + { + "line": 243, + "column": 29, + "stop_line": 243, + "stop_column": 35, + "path": "src/paperless_mail/views.py", + "code": -2, + "name": "unbound-name", + "description": "`result` may be uninitialized", + "concise_description": "`result` may be uninitialized", + "severity": "error" + }, + { + "line": 244, + "column": 26, + "stop_line": 244, + "stop_column": 32, + "path": "src/paperless_mail/views.py", + "code": -2, + "name": "unbound-name", + "description": "`result` may be uninitialized", + "concise_description": "`result` may be uninitialized", + "severity": "error" + }, + { + "line": 248, + "column": 29, + "stop_line": 248, + "stop_column": 40, + "path": "src/paperless_mail/views.py", + "code": -2, + "name": "unbound-name", + "description": "`imap_server` may be uninitialized", + "concise_description": "`imap_server` may be uninitialized", + "severity": "error" + }, + { + "line": 251, + "column": 26, + "stop_line": 251, + "stop_column": 34, + "path": "src/paperless_mail/views.py", + "code": -2, + "name": "unbound-name", + "description": "`defaults` may be uninitialized", + "concise_description": "`defaults` may be uninitialized", + "severity": "error" + }, + { + "line": 34, + "column": 9, + "stop_line": 34, + "stop_column": 21, + "path": "src/paperless_remote/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `RemoteDocumentParser.get_settings` overrides parent class `RasterisedDocumentParser` in an inconsistent manner\n `RemoteDocumentParser.get_settings` has type `BoundMethod[RemoteDocumentParser, (self: RemoteDocumentParser) -> RemoteEngineConfig]`, which is not assignable to `BoundMethod[RemoteDocumentParser, (self: RemoteDocumentParser) -> OcrConfig]`, the type of `RasterisedDocumentParser.get_settings`", + "concise_description": "Class member `RemoteDocumentParser.get_settings` overrides parent class `RasterisedDocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 67, + "column": 17, + "stop_line": 67, + "stop_column": 34, + "path": "src/paperless_remote/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `strip`", + "concise_description": "Object of class `NoneType` has no attribute `strip`", + "severity": "error" + }, + { + "line": 11, + "column": 26, + "stop_line": 14, + "stop_column": 6, + "path": "src/paperless_tesseract/checks.py", + "code": -2, + "name": "no-matching-overload", + "description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], capture_output=Literal[True])\n Possible overloads:\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: Literal[True], timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, *, universal_newlines: Literal[True], startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[str]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: Literal[False] | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: None = None, errors: None = None, input: Buffer | None = None, text: Literal[False] | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[bytes] [closest match]\n (args: _CMD, bufsize: int = -1, executable: PathLike[bytes] | PathLike[str] | bytes | str | None = None, stdin: _FILE = None, stdout: _FILE = None, stderr: _FILE = None, preexec_fn: (() -> Any) | None = None, close_fds: bool = True, shell: bool = False, cwd: PathLike[bytes] | PathLike[str] | bytes | str | None = None, env: Mapping[bytes, StrOrBytesPath] | Mapping[str, StrOrBytesPath] | None = None, universal_newlines: bool | None = None, startupinfo: Any = None, creationflags: int = 0, restore_signals: bool = True, start_new_session: bool = False, pass_fds: Collection[int] = ..., *, capture_output: bool = False, check: bool = False, encoding: str | None = None, errors: str | None = None, input: Buffer | str | None = None, text: bool | None = None, timeout: float | None = None, user: int | str | None = None, group: int | str | None = None, extra_groups: Iterable[int | str] | None = None, umask: int = -1, pipesize: int = -1, process_group: int | None = None) -> CompletedProcess[Any]", + "concise_description": "No matching overload found for function `subprocess.run` called with arguments: (list[str | None], capture_output=Literal[True])", + "severity": "error" + }, + { + "line": 28, + "column": 13, + "stop_line": 31, + "stop_column": 14, + "path": "src/paperless_tesseract/checks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", + "concise_description": "Argument `django.core.checks.messages.Warning | builtins.Warning` is not assignable to parameter `object` with type `django.core.checks.messages.Warning` in function `list.append`", + "severity": "error" + }, + { + "line": 45, + "column": 21, + "stop_line": 49, + "stop_column": 22, + "path": "src/paperless_tesseract/checks.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Error` is not assignable to parameter `object` with type `Warning` in function `list.append`", + "concise_description": "Argument `Error` is not assignable to parameter `object` with type `Warning` in function `list.append`", + "severity": "error" + }, + { + "line": 37, + "column": 9, + "stop_line": 37, + "stop_column": 21, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `RasterisedDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `RasterisedDocumentParser.get_settings` has type `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser) -> OcrConfig]`, which is not assignable to `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser) -> Never]`, the type of `DocumentParser.get_settings`", + "concise_description": "Class member `RasterisedDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 43, + "column": 9, + "stop_line": 43, + "stop_column": 23, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `RasterisedDocumentParser.get_page_count` overrides parent class `DocumentParser` in an inconsistent manner\n `RasterisedDocumentParser.get_page_count` has type `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown) -> int | None]`, which is not assignable to `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown) -> None]`, the type of `DocumentParser.get_page_count`", + "concise_description": "Class member `RasterisedDocumentParser.get_page_count` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 96, + "column": 9, + "stop_line": 96, + "stop_column": 22, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `RasterisedDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner\n `RasterisedDocumentParser.get_thumbnail` has type `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Path]`, which is not assignable to `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.get_thumbnail`", + "concise_description": "Class member `RasterisedDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 121, + "column": 13, + "stop_line": 127, + "stop_column": 14, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 128, + "column": 20, + "stop_line": 128, + "stop_column": 28, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 188, + "column": 21, + "stop_line": 196, + "stop_column": 22, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `list[Path | str]` is not assignable to parameter `arguments` with type `list[str]` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 197, + "column": 28, + "stop_line": 197, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "concise_description": "Argument `LoggerAdapter` is not assignable to parameter `logger` with type `Logger | None` in function `documents.utils.run_subprocess`", + "severity": "error" + }, + { + "line": 333, + "column": 9, + "stop_line": 333, + "stop_column": 14, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `RasterisedDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner\n `RasterisedDocumentParser.parse` has type `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Path, mime_type: Unknown, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[RasterisedDocumentParser, (self: RasterisedDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.parse`", + "concise_description": "Class member `RasterisedDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `input_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `input_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `language` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `language` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_type` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_type` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `sidecar` with type `BinaryIO | Path | bytes | str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `sidecar` with type `BinaryIO | Path | bytes | str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `title` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `title` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `author` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `author` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `subject` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `subject` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `keywords` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `keywords` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `unpaper_args` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `unpaper_args` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pages` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pages` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `tesseract_config` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `tesseract_config` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdf_renderer` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdf_renderer` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdfa_image_compression` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdfa_image_compression` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `color_conversion_strategy` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `color_conversion_strategy` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_words` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_words` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_patterns` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_patterns` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 384, + "column": 26, + "stop_line": 384, + "stop_column": 32, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `plugins` with type `Iterable[Path | str] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `plugins` with type `Iterable[Path | str] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `input_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `input_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_file` with type `BinaryIO | Path | bytes | str` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `language` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `language` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_type` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `output_type` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `sidecar` with type `BinaryIO | Path | bytes | str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `sidecar` with type `BinaryIO | Path | bytes | str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `title` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `title` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `author` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `author` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `subject` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `subject` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `keywords` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `keywords` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `unpaper_args` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `unpaper_args` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pages` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pages` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `tesseract_config` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `tesseract_config` with type `Iterable[str] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdf_renderer` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdf_renderer` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdfa_image_compression` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `pdfa_image_compression` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `color_conversion_strategy` with type `str | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `color_conversion_strategy` with type `str | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_words` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_words` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_patterns` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `user_patterns` with type `PathLike[Unknown] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 431, + "column": 30, + "stop_line": 431, + "stop_column": 36, + "path": "src/paperless_tesseract/parsers.py", + "code": -2, + "name": "bad-argument-type", + "description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `plugins` with type `Iterable[Path | str] | None` in function `ocrmypdf.api.ocr`", + "concise_description": "Unpacked keyword argument `bool | Unknown` is not assignable to parameter `plugins` with type `Iterable[Path | str] | None` in function `ocrmypdf.api.ocr`", + "severity": "error" + }, + { + "line": 57, + "column": 36, + "stop_line": 57, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `strip`", + "concise_description": "Object of class `NoneType` has no attribute `strip`", + "severity": "error" + }, + { + "line": 147, + "column": 13, + "stop_line": 147, + "stop_column": 58, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 151, + "column": 27, + "stop_line": 151, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 159, + "column": 13, + "stop_line": 159, + "stop_column": 53, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 163, + "column": 27, + "stop_line": 163, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 175, + "column": 13, + "stop_line": 175, + "stop_column": 53, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 189, + "column": 22, + "stop_line": 189, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 205, + "column": 13, + "stop_line": 205, + "stop_column": 53, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 216, + "column": 13, + "stop_line": 216, + "stop_column": 53, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 230, + "column": 13, + "stop_line": 230, + "stop_column": 53, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 242, + "column": 22, + "stop_line": 242, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 244, + "column": 27, + "stop_line": 244, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 258, + "column": 26, + "stop_line": 258, + "stop_column": 40, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 260, + "column": 31, + "stop_line": 260, + "stop_column": 50, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 280, + "column": 17, + "stop_line": 280, + "stop_column": 61, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 290, + "column": 22, + "stop_line": 290, + "stop_column": 66, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 292, + "column": 27, + "stop_line": 292, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 295, + "column": 13, + "stop_line": 295, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 302, + "column": 13, + "stop_line": 302, + "stop_column": 62, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 305, + "column": 27, + "stop_line": 305, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 307, + "column": 13, + "stop_line": 307, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 315, + "column": 13, + "stop_line": 315, + "stop_column": 62, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 318, + "column": 27, + "stop_line": 318, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 320, + "column": 13, + "stop_line": 320, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 328, + "column": 13, + "stop_line": 328, + "stop_column": 62, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 331, + "column": 27, + "stop_line": 331, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 333, + "column": 13, + "stop_line": 333, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 341, + "column": 13, + "stop_line": 341, + "stop_column": 62, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 344, + "column": 27, + "stop_line": 344, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 346, + "column": 13, + "stop_line": 346, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 354, + "column": 13, + "stop_line": 354, + "stop_column": 61, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 357, + "column": 27, + "stop_line": 357, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 359, + "column": 13, + "stop_line": 359, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 378, + "column": 13, + "stop_line": 378, + "stop_column": 61, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 381, + "column": 27, + "stop_line": 381, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 382, + "column": 36, + "stop_line": 382, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 383, + "column": 36, + "stop_line": 383, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 400, + "column": 13, + "stop_line": 400, + "stop_column": 61, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 403, + "column": 27, + "stop_line": 403, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 404, + "column": 36, + "stop_line": 404, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 405, + "column": 36, + "stop_line": 405, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 406, + "column": 36, + "stop_line": 406, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 422, + "column": 13, + "stop_line": 422, + "stop_column": 62, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 427, + "column": 13, + "stop_line": 427, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 445, + "column": 13, + "stop_line": 445, + "stop_column": 61, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 450, + "column": 13, + "stop_line": 450, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 470, + "column": 13, + "stop_line": 470, + "stop_column": 62, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 475, + "column": 13, + "stop_line": 475, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 493, + "column": 13, + "stop_line": 493, + "stop_column": 61, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 498, + "column": 13, + "stop_line": 498, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 516, + "column": 13, + "stop_line": 516, + "stop_column": 62, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 521, + "column": 13, + "stop_line": 521, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 539, + "column": 13, + "stop_line": 539, + "stop_column": 61, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 544, + "column": 13, + "stop_line": 544, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 562, + "column": 13, + "stop_line": 562, + "stop_column": 62, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 567, + "column": 13, + "stop_line": 567, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 585, + "column": 13, + "stop_line": 585, + "stop_column": 61, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 590, + "column": 13, + "stop_line": 590, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 608, + "column": 13, + "stop_line": 608, + "stop_column": 60, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 614, + "column": 13, + "stop_line": 614, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 639, + "column": 13, + "stop_line": 639, + "stop_column": 61, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 645, + "column": 13, + "stop_line": 645, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 676, + "column": 13, + "stop_line": 676, + "stop_column": 60, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 681, + "column": 13, + "stop_line": 681, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 688, + "column": 22, + "stop_line": 688, + "stop_column": 60, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 710, + "column": 13, + "stop_line": 710, + "stop_column": 62, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 713, + "column": 27, + "stop_line": 713, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 715, + "column": 13, + "stop_line": 715, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 734, + "column": 17, + "stop_line": 734, + "stop_column": 30, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 737, + "column": 31, + "stop_line": 737, + "stop_column": 50, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 739, + "column": 17, + "stop_line": 739, + "stop_column": 40, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 761, + "column": 17, + "stop_line": 761, + "stop_column": 30, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 764, + "column": 31, + "stop_line": 764, + "stop_column": 50, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 766, + "column": 17, + "stop_line": 766, + "stop_column": 40, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 846, + "column": 13, + "stop_line": 846, + "stop_column": 52, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 851, + "column": 40, + "stop_line": 851, + "stop_column": 57, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `container` with type `Container[Any] | Iterable[Any]` in function `unittest.case.TestCase.assertIn`", + "severity": "error" + }, + { + "line": 871, + "column": 22, + "stop_line": 871, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 872, + "column": 27, + "stop_line": 872, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 873, + "column": 50, + "stop_line": 873, + "stop_column": 73, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 877, + "column": 22, + "stop_line": 877, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 878, + "column": 27, + "stop_line": 878, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 879, + "column": 50, + "stop_line": 879, + "stop_column": 73, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 883, + "column": 22, + "stop_line": 883, + "stop_column": 60, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 884, + "column": 27, + "stop_line": 884, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 885, + "column": 32, + "stop_line": 885, + "stop_column": 55, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 890, + "column": 22, + "stop_line": 890, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 891, + "column": 27, + "stop_line": 891, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 892, + "column": 50, + "stop_line": 892, + "stop_column": 73, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 896, + "column": 22, + "stop_line": 896, + "stop_column": 59, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 897, + "column": 27, + "stop_line": 897, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 898, + "column": 50, + "stop_line": 898, + "stop_column": 73, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 904, + "column": 13, + "stop_line": 904, + "stop_column": 53, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "concise_description": "Argument `str` is not assignable to parameter `document_path` with type `Path` in function `paperless_tesseract.parsers.RasterisedDocumentParser.parse`", + "severity": "error" + }, + { + "line": 907, + "column": 27, + "stop_line": 907, + "stop_column": 46, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "bad-argument-type", + "description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "concise_description": "Argument `Unknown | None` is not assignable to parameter `path` with type `PathLike[Unknown] | str` in function `documents.tests.utils.FileSystemAssertsMixin.assertIsFile`", + "severity": "error" + }, + { + "line": 911, + "column": 13, + "stop_line": 911, + "stop_column": 36, + "path": "src/paperless_tesseract/tests/test_parser.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `lower`", + "concise_description": "Object of class `NoneType` has no attribute `lower`", + "severity": "error" + }, + { + "line": 42, + "column": 13, + "stop_line": 42, + "stop_column": 27, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `pages`", + "concise_description": "Object of class `NoneType` has no attribute `pages`", + "severity": "error" + }, + { + "line": 43, + "column": 13, + "stop_line": 43, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 60, + "column": 13, + "stop_line": 60, + "stop_column": 30, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `language`", + "concise_description": "Object of class `NoneType` has no attribute `language`", + "severity": "error" + }, + { + "line": 61, + "column": 13, + "stop_line": 61, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 78, + "column": 13, + "stop_line": 78, + "stop_column": 33, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `output_type`", + "concise_description": "Object of class `NoneType` has no attribute `output_type`", + "severity": "error" + }, + { + "line": 79, + "column": 13, + "stop_line": 79, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 96, + "column": 13, + "stop_line": 96, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `mode`", + "concise_description": "Object of class `NoneType` has no attribute `mode`", + "severity": "error" + }, + { + "line": 97, + "column": 13, + "stop_line": 97, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 116, + "column": 13, + "stop_line": 116, + "stop_column": 35, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `unpaper_clean`", + "concise_description": "Object of class `NoneType` has no attribute `unpaper_clean`", + "severity": "error" + }, + { + "line": 117, + "column": 13, + "stop_line": 117, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 125, + "column": 13, + "stop_line": 125, + "stop_column": 35, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `unpaper_clean`", + "concise_description": "Object of class `NoneType` has no attribute `unpaper_clean`", + "severity": "error" + }, + { + "line": 126, + "column": 13, + "stop_line": 126, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 144, + "column": 13, + "stop_line": 144, + "stop_column": 28, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `deskew`", + "concise_description": "Object of class `NoneType` has no attribute `deskew`", + "severity": "error" + }, + { + "line": 145, + "column": 13, + "stop_line": 145, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 162, + "column": 13, + "stop_line": 162, + "stop_column": 34, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `rotate_pages`", + "concise_description": "Object of class `NoneType` has no attribute `rotate_pages`", + "severity": "error" + }, + { + "line": 163, + "column": 13, + "stop_line": 163, + "stop_column": 44, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `rotate_pages_threshold`", + "concise_description": "Object of class `NoneType` has no attribute `rotate_pages_threshold`", + "severity": "error" + }, + { + "line": 164, + "column": 13, + "stop_line": 164, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 182, + "column": 13, + "stop_line": 182, + "stop_column": 38, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `max_image_pixels`", + "concise_description": "Object of class `NoneType` has no attribute `max_image_pixels`", + "severity": "error" + }, + { + "line": 183, + "column": 13, + "stop_line": 183, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 200, + "column": 13, + "stop_line": 200, + "stop_column": 47, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `color_conversion_strategy`", + "concise_description": "Object of class `NoneType` has no attribute `color_conversion_strategy`", + "severity": "error" + }, + { + "line": 201, + "column": 13, + "stop_line": 201, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 223, + "column": 13, + "stop_line": 223, + "stop_column": 31, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `user_args`", + "concise_description": "Object of class `NoneType` has no attribute `user_args`", + "severity": "error" + }, + { + "line": 224, + "column": 13, + "stop_line": 224, + "stop_column": 26, + "path": "src/paperless_tesseract/tests/test_parser_custom_settings.py", + "code": -2, + "name": "missing-attribute", + "description": "Object of class `NoneType` has no attribute `save`", + "concise_description": "Object of class `NoneType` has no attribute `save`", + "severity": "error" + }, + { + "line": 18, + "column": 9, + "stop_line": 18, + "stop_column": 22, + "path": "src/paperless_text/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TextDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner\n `TextDocumentParser.get_thumbnail` has type `BoundMethod[TextDocumentParser, (self: TextDocumentParser, document_path: Path, mime_type: Unknown, file_name: Unknown | None = None) -> Path]`, which is not assignable to `BoundMethod[TextDocumentParser, (self: TextDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.get_thumbnail`", + "concise_description": "Class member `TextDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 43, + "column": 9, + "stop_line": 43, + "stop_column": 14, + "path": "src/paperless_text/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TextDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner\n `TextDocumentParser.parse` has type `BoundMethod[TextDocumentParser, (self: TextDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[TextDocumentParser, (self: TextDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.parse`", + "concise_description": "Class member `TextDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 46, + "column": 9, + "stop_line": 46, + "stop_column": 21, + "path": "src/paperless_text/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TextDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `TextDocumentParser.get_settings` has type `BoundMethod[TextDocumentParser, (self: TextDocumentParser) -> None]`, which is not assignable to `BoundMethod[TextDocumentParser, (self: TextDocumentParser) -> Never]`, the type of `DocumentParser.get_settings`", + "concise_description": "Class member `TextDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 24, + "column": 9, + "stop_line": 24, + "stop_column": 22, + "path": "src/paperless_tika/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TikaDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner\n `TikaDocumentParser.get_thumbnail` has type `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Path]`, which is not assignable to `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.get_thumbnail`", + "concise_description": "Class member `TikaDocumentParser.get_thumbnail` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 56, + "column": 9, + "stop_line": 56, + "stop_column": 14, + "path": "src/paperless_tika/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TikaDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner\n `TikaDocumentParser.parse` has type `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser, document_path: Path, mime_type: str, file_name: Unknown | None = None) -> None]`, which is not assignable to `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser, document_path: Unknown, mime_type: Unknown, file_name: Unknown | None = None) -> Never]`, the type of `DocumentParser.parse`", + "concise_description": "Class member `TikaDocumentParser.parse` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + }, + { + "line": 132, + "column": 9, + "stop_line": 132, + "stop_column": 21, + "path": "src/paperless_tika/parsers.py", + "code": -2, + "name": "bad-override", + "description": "Class member `TikaDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner\n `TikaDocumentParser.get_settings` has type `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser) -> OutputTypeConfig]`, which is not assignable to `BoundMethod[TikaDocumentParser, (self: TikaDocumentParser) -> Never]`, the type of `DocumentParser.get_settings`", + "concise_description": "Class member `TikaDocumentParser.get_settings` overrides parent class `DocumentParser` in an inconsistent manner", + "severity": "error" + } + ] +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2f7952ad0..20d7bfd36 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,9 +2,11 @@ If you feel like contributing to the project, please do! Bug fixes and improvements are always welcome. +⚠️ Please note: Pull requests that implement a new feature or enhancement _should almost always target an existing feature request_ with evidence of community interest and discussion. This is in order to balance the work of implementing and maintaining new features / enhancements. Pull requests that are opened without meeting this requirement may not be merged. + If you want to implement something big: -- Please start a discussion about that in the issues! Maybe something similar is already in development and we can make it happen together. +- As above, please start with a discussion! Maybe something similar is already in development and we can make it happen together. - When making additions to the project, consider if the majority of users will benefit from your change. If not, you're probably better of forking the project. - Also consider if your change will get in the way of other users. A good change is a change that enhances the experience of some users who want that change and does not affect users who do not care about the change. - Please see the [paperless-ngx merge process](#merging-prs) below. @@ -133,7 +135,7 @@ community members. That said, in an effort to keep the repository organized and - Issues, pull requests and discussions that are closed will be locked after 30 days of inactivity. - Discussions with a marked answer will be automatically closed. - Discussions in the 'General' or 'Support' categories will be closed after 180 days of inactivity. -- Feature requests that do not meet the following thresholds will be closed: 180 days of inactivity, < 5 "up-votes" after 180 days, < 20 "up-votes" after 1 year or < 80 "up-votes" at 2 years. +- Feature requests that do not meet the following thresholds will be closed: 180 days of inactivity with less than 80 "up-votes", < 5 "up-votes" after 180 days, < 20 "up-votes" after 1 year or < 40 "up-votes" at 2 years. In all cases, threads can be re-opened by project maintainers and, of course, users can always create a new discussion for related concerns. Finally, remember that all information remains searchable and 'closed' feature requests can still serve as inspiration for new features. diff --git a/Dockerfile b/Dockerfile index 93fd32ee3..d8c87a812 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,14 +5,12 @@ # Purpose: Compiles the frontend # Notes: # - Does PNPM stuff with Typescript and such -FROM --platform=$BUILDPLATFORM docker.io/node:20-bookworm-slim AS compile-frontend +FROM --platform=$BUILDPLATFORM docker.io/node:24-trixie-slim AS compile-frontend COPY ./src-ui /src/src-ui WORKDIR /src/src-ui RUN set -eux \ - && npm update -g pnpm \ - && npm install -g corepack@latest \ && corepack enable \ && pnpm install @@ -32,7 +30,7 @@ RUN set -eux \ # Purpose: Installs s6-overlay and rootfs # Comments: # - Don't leave anything extra in here either -FROM ghcr.io/astral-sh/uv:0.8.17-python3.12-bookworm-slim AS s6-overlay-base +FROM ghcr.io/astral-sh/uv:0.10.0-python3.12-trixie-slim AS s6-overlay-base WORKDIR /usr/src/s6 @@ -102,8 +100,6 @@ ARG TARGETARCH # Can be workflow provided, defaults set for manual building ARG JBIG2ENC_VERSION=0.30 -ARG QPDF_VERSION=11.9.0 -ARG GS_VERSION=10.03.1 # Set Python environment variables ENV PYTHONDONTWRITEBYTECODE=1 \ @@ -112,8 +108,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONWARNINGS="ignore:::django.http.response:517" \ PNGX_CONTAINERIZED=1 \ # https://docs.astral.sh/uv/reference/settings/#link-mode - UV_LINK_MODE=copy \ - UV_CACHE_DIR=/cache/uv/ + UV_LINK_MODE=copy # # Begin installation and configuration @@ -170,20 +165,8 @@ RUN set -eux \ && apt-get update \ && apt-get install --yes --quiet --no-install-recommends ${RUNTIME_PACKAGES} \ && echo "Installing pre-built updates" \ - && curl --fail --silent --no-progress-meter --show-error --location --remote-name-all --parallel --parallel-max 4 \ - https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - https://github.com/paperless-ngx/builder/releases/download/qpdf-${QPDF_VERSION}/qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ - https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/ghostscript_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ - https://github.com/paperless-ngx/builder/releases/download/ghostscript-${GS_VERSION}/libgs10-common_${GS_VERSION}.dfsg-1_all.deb \ - https://github.com/paperless-ngx/builder/releases/download/jbig2enc-${JBIG2ENC_VERSION}/jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ - && echo "Installing qpdf ${QPDF_VERSION}" \ - && dpkg --install ./libqpdf29_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - && dpkg --install ./qpdf_${QPDF_VERSION}-1_${TARGETARCH}.deb \ - && echo "Installing Ghostscript ${GS_VERSION}" \ - && dpkg --install ./libgs10-common_${GS_VERSION}.dfsg-1_all.deb \ - && dpkg --install ./libgs10_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ - && dpkg --install ./ghostscript_${GS_VERSION}.dfsg-1_${TARGETARCH}.deb \ + && curl --fail --silent --no-progress-meter --show-error --location --remote-name-all \ + https://github.com/paperless-ngx/builder/releases/download/jbig2enc-trixie-v${JBIG2ENC_VERSION}/jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ && echo "Installing jbig2enc" \ && dpkg --install ./jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb \ && echo "Configuring imagemagick" \ @@ -207,14 +190,17 @@ ARG BUILD_PACKAGES="\ pkg-config" # hadolint ignore=DL3042 -RUN --mount=type=cache,target=${UV_CACHE_DIR},id=python-cache \ - set -eux \ +RUN set -eux \ && echo "Installing build system packages" \ && apt-get update \ && apt-get install --yes --quiet --no-install-recommends ${BUILD_PACKAGES} \ && echo "Installing Python requirements" \ && uv export --quiet --no-dev --all-extras --format requirements-txt --output-file requirements.txt \ - && uv pip install --system --no-python-downloads --python-preference system --requirements requirements.txt \ + && uv pip install --no-cache --system --no-python-downloads --python-preference system \ + --index https://pypi.org/simple \ + --index https://download.pytorch.org/whl/cpu \ + --index-strategy unsafe-best-match \ + --requirements requirements.txt \ && echo "Installing NLTK data" \ && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" snowball_data \ && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" stopwords \ @@ -254,7 +240,8 @@ RUN set -eux \ && chown --from root:root --changes --recursive paperless:paperless /usr/src/paperless \ && echo "Collecting static files" \ && s6-setuidgid paperless python3 manage.py collectstatic --clear --no-input --link \ - && s6-setuidgid paperless python3 manage.py compilemessages + && s6-setuidgid paperless python3 manage.py compilemessages \ + && /usr/local/bin/deduplicate.py --verbose /usr/src/paperless/static/ VOLUME ["/usr/src/paperless/data", \ "/usr/src/paperless/media", \ diff --git a/docker/compose/docker-compose.ci-test.yml b/docker/compose/docker-compose.ci-test.yml index d5eb093f3..c76fa495c 100644 --- a/docker/compose/docker-compose.ci-test.yml +++ b/docker/compose/docker-compose.ci-test.yml @@ -4,7 +4,7 @@ # correct networking for the tests services: gotenberg: - image: docker.io/gotenberg/gotenberg:8.23 + image: docker.io/gotenberg/gotenberg:8.26 hostname: gotenberg container_name: gotenberg network_mode: host @@ -23,3 +23,24 @@ services: container_name: tika network_mode: host restart: unless-stopped + greenmail: + image: greenmail/standalone:2.1.8 + hostname: greenmail + container_name: greenmail + environment: + # Enable only IMAP for now (SMTP available via 3025 if needed later) + GREENMAIL_OPTS: >- + -Dgreenmail.setup.test.imap -Dgreenmail.users=test@localhost:test -Dgreenmail.users.login=test@localhost -Dgreenmail.verbose + ports: + - "3143:3143" # IMAP + restart: unless-stopped + nginx: + image: docker.io/nginx:1.29.5-alpine + hostname: nginx + container_name: nginx + ports: + - "8080:8080" + restart: unless-stopped + volumes: + - ../../docs/assets:/usr/share/nginx/html/assets:ro + - ./test-nginx.conf:/etc/nginx/conf.d/default.conf:ro diff --git a/docker/compose/docker-compose.mariadb-tika.yml b/docker/compose/docker-compose.mariadb-tika.yml index fc1d4be8e..b6f84dd68 100644 --- a/docker/compose/docker-compose.mariadb-tika.yml +++ b/docker/compose/docker-compose.mariadb-tika.yml @@ -72,7 +72,7 @@ services: PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 PAPERLESS_TIKA_ENDPOINT: http://tika:9998 gotenberg: - image: docker.io/gotenberg/gotenberg:8.23 + image: docker.io/gotenberg/gotenberg:8.26 restart: unless-stopped # The gotenberg chromium route is used to convert .eml files. We do not # want to allow external content like tracking pixels or even javascript. diff --git a/docker/compose/docker-compose.portainer.yml b/docker/compose/docker-compose.portainer.yml index e0196e7d2..000b7e66a 100644 --- a/docker/compose/docker-compose.portainer.yml +++ b/docker/compose/docker-compose.portainer.yml @@ -32,10 +32,10 @@ services: volumes: - redisdata:/data db: - image: docker.io/library/postgres:17 + image: docker.io/library/postgres:18 restart: unless-stopped volumes: - - pgdata:/var/lib/postgresql/data + - pgdata:/var/lib/postgresql environment: POSTGRES_DB: paperless POSTGRES_USER: paperless diff --git a/docker/compose/docker-compose.postgres-tika.yml b/docker/compose/docker-compose.postgres-tika.yml index a62c79ae2..53e5aefc0 100644 --- a/docker/compose/docker-compose.postgres-tika.yml +++ b/docker/compose/docker-compose.postgres-tika.yml @@ -35,10 +35,10 @@ services: volumes: - redisdata:/data db: - image: docker.io/library/postgres:17 + image: docker.io/library/postgres:18 restart: unless-stopped volumes: - - pgdata:/var/lib/postgresql/data + - pgdata:/var/lib/postgresql environment: POSTGRES_DB: paperless POSTGRES_USER: paperless @@ -66,7 +66,7 @@ services: PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 PAPERLESS_TIKA_ENDPOINT: http://tika:9998 gotenberg: - image: docker.io/gotenberg/gotenberg:8.23 + image: docker.io/gotenberg/gotenberg:8.26 restart: unless-stopped # The gotenberg chromium route is used to convert .eml files. We do not # want to allow external content like tracking pixels or even javascript. diff --git a/docker/compose/docker-compose.postgres.yml b/docker/compose/docker-compose.postgres.yml index e04c92bf0..a4b334b71 100644 --- a/docker/compose/docker-compose.postgres.yml +++ b/docker/compose/docker-compose.postgres.yml @@ -31,10 +31,10 @@ services: volumes: - redisdata:/data db: - image: docker.io/library/postgres:17 + image: docker.io/library/postgres:18 restart: unless-stopped volumes: - - pgdata:/var/lib/postgresql/data + - pgdata:/var/lib/postgresql environment: POSTGRES_DB: paperless POSTGRES_USER: paperless diff --git a/docker/compose/docker-compose.sqlite-tika.yml b/docker/compose/docker-compose.sqlite-tika.yml index 130b26770..7e3d9b6b1 100644 --- a/docker/compose/docker-compose.sqlite-tika.yml +++ b/docker/compose/docker-compose.sqlite-tika.yml @@ -55,7 +55,7 @@ services: PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 PAPERLESS_TIKA_ENDPOINT: http://tika:9998 gotenberg: - image: docker.io/gotenberg/gotenberg:8.23 + image: docker.io/gotenberg/gotenberg:8.26 restart: unless-stopped # The gotenberg chromium route is used to convert .eml files. We do not # want to allow external content like tracking pixels or even javascript. diff --git a/docker/compose/test-nginx.conf b/docker/compose/test-nginx.conf new file mode 100644 index 000000000..e90f3fad3 --- /dev/null +++ b/docker/compose/test-nginx.conf @@ -0,0 +1,14 @@ +server { + listen 8080; + server_name localhost; + + root /usr/share/nginx/html; + + # Enable CORS for test requests + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, HEAD, OPTIONS' always; + + location / { + try_files $uri $uri/ =404; + } +} diff --git a/docker/install_management_commands.sh b/docker/install_management_commands.sh index 17dae68a2..f7a175e9e 100755 --- a/docker/install_management_commands.sh +++ b/docker/install_management_commands.sh @@ -4,13 +4,13 @@ set -eu -for command in decrypt_documents \ - document_archiver \ +for command in document_archiver \ document_exporter \ document_importer \ mail_fetcher \ document_create_classifier \ document_index \ + document_llmindex \ document_renamer \ document_retagger \ document_thumbnails \ diff --git a/docker/management_script.sh b/docker/management_script.sh index 1fa31c372..6d5e84549 100755 --- a/docker/management_script.sh +++ b/docker/management_script.sh @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py management_command "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py management_command "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py management_command "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-env-file/run b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-env-file/run index d2c118ddb..2fc64e24e 100755 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-env-file/run +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-env-file/run @@ -29,5 +29,5 @@ if find /run/s6/container_environment/*"_FILE" -maxdepth 1 > /dev/null 2>&1; the fi done else - echo "${log_prefix} No *_FILE environment found" + echo "${log_prefix} No *_FILE environment found" fi diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-wait-for-db/run b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-wait-for-db/run index ede8a654a..17df9bef9 100755 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-wait-for-db/run +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-wait-for-db/run @@ -1,70 +1,66 @@ #!/command/with-contenv /usr/bin/bash # shellcheck shell=bash +# vim: set ft=bash ts=4 sw=4 sts=4 et : -declare -r log_prefix="[init-db-wait]" +set -euo pipefail + +declare -r LOG_PREFIX="[init-db-wait]" + +declare -ri TIMEOUT=60 +declare -i ATTEMPT=0 +declare -i DELAY=0 +declare -i STARTED_AT=${EPOCHSECONDS:?EPOCHSECONDS var unset} + +delay_next_attempt() { + local -i elapsed=$(( EPOCHSECONDS - STARTED_AT )) + local -ri remaining=$(( TIMEOUT - elapsed )) + + if (( remaining <= 0 )); then + echo "${LOG_PREFIX} Unable to connect after $elapsed seconds." + exit 1 + fi + + DELAY+=1 + + # clamp to remaining time + if (( DELAY > remaining )); then + DELAY=$remaining + fi + + ATTEMPT+=1 + echo "${LOG_PREFIX} Attempt $ATTEMPT failed! Trying again in $DELAY seconds..." + sleep "$DELAY" +} wait_for_postgres() { - local attempt_num=1 - local -r max_attempts=5 - - echo "${log_prefix} Waiting for PostgreSQL to start..." + echo "${LOG_PREFIX} Waiting for PostgreSQL to start..." local -r host="${PAPERLESS_DBHOST:-localhost}" local -r port="${PAPERLESS_DBPORT:-5432}" local -r user="${PAPERLESS_DBUSER:-paperless}" - # Disable warning, host and port can't have spaces - # shellcheck disable=SC2086 - while [ ! "$(pg_isready -h ${host} -p ${port} --username ${user})" ]; do - - if [ $attempt_num -eq $max_attempts ]; then - echo "${log_prefix} Unable to connect to database." - exit 1 - else - echo "${log_prefix} Attempt $attempt_num failed! Trying again in 5 seconds..." - fi - - attempt_num=$(("$attempt_num" + 1)) - sleep 5 + while ! pg_isready -h "${host}" -p "${port}" --username "${user}"; do + delay_next_attempt done - # Extra in case this is a first start - sleep 5 - echo "Connected to PostgreSQL" + echo "${LOG_PREFIX} Connected to PostgreSQL" } wait_for_mariadb() { - echo "${log_prefix} Waiting for MariaDB to start..." + echo "${LOG_PREFIX} Waiting for MariaDB to start..." - local -r host="${PAPERLESS_DBHOST:=localhost}" - local -r port="${PAPERLESS_DBPORT:=3306}" + local -r host="${PAPERLESS_DBHOST:-localhost}" + local -r port="${PAPERLESS_DBPORT:-3306}" - local attempt_num=1 - local -r max_attempts=5 - - # Disable warning, host and port can't have spaces - # shellcheck disable=SC2086 - while ! true > /dev/tcp/$host/$port; do - - if [ $attempt_num -eq $max_attempts ]; then - echo "${log_prefix} Unable to connect to database." - exit 1 - else - echo "${log_prefix} Attempt $attempt_num failed! Trying again in 5 seconds..." - - fi - - attempt_num=$(("$attempt_num" + 1)) - sleep 5 + while ! mariadb-admin --host="${host}" --port="${port}" --skip-ssl ping --silent >/dev/null 2>&1; do + delay_next_attempt done - echo "Connected to MariaDB" + echo "${LOG_PREFIX} Connected to MariaDB" } -if [[ "${PAPERLESS_DBENGINE}" == "mariadb" ]]; then - echo "${log_prefix} Waiting for MariaDB to report ready" +if [[ "${PAPERLESS_DBENGINE:-}" == "mariadb" ]]; then wait_for_mariadb -elif [[ -n "${PAPERLESS_DBHOST}" ]]; then - echo "${log_prefix} Waiting for postgresql to report ready" +elif [[ -n "${PAPERLESS_DBHOST:-}" ]]; then wait_for_postgres fi - echo "${log_prefix} Database is ready" +echo "${LOG_PREFIX} Database is ready" diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/svc-webserver/run b/docker/rootfs/etc/s6-overlay/s6-rc.d/svc-webserver/run index 841dad204..64b458150 100755 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/svc-webserver/run +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/svc-webserver/run @@ -10,11 +10,11 @@ export GRANIAN_WORKERS=${GRANIAN_WORKERS:-${PAPERLESS_WEBSERVER_WORKERS:-1}} # Only set GRANIAN_URL_PATH_PREFIX if PAPERLESS_FORCE_SCRIPT_NAME is set if [[ -n "${PAPERLESS_FORCE_SCRIPT_NAME}" ]]; then - export GRANIAN_URL_PATH_PREFIX=${PAPERLESS_FORCE_SCRIPT_NAME} + export GRANIAN_URL_PATH_PREFIX=${PAPERLESS_FORCE_SCRIPT_NAME} fi if [[ -n "${USER_IS_NON_ROOT}" ]]; then - exec granian --interface asginl --ws --loop uvloop "paperless.asgi:application" + exec granian --interface asginl --ws --loop uvloop "paperless.asgi:application" else - exec s6-setuidgid paperless granian --interface asginl --ws --loop uvloop "paperless.asgi:application" + exec s6-setuidgid paperless granian --interface asginl --ws --loop uvloop "paperless.asgi:application" fi diff --git a/docker/rootfs/usr/local/bin/convert_mariadb_uuid b/docker/rootfs/usr/local/bin/convert_mariadb_uuid index 806a98f3b..7adb0a1af 100755 --- a/docker/rootfs/usr/local/bin/convert_mariadb_uuid +++ b/docker/rootfs/usr/local/bin/convert_mariadb_uuid @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py convert_mariadb_uuid "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py convert_mariadb_uuid "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py convert_mariadb_uuid "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/createsuperuser b/docker/rootfs/usr/local/bin/createsuperuser index f931952ba..b91cee3c5 100755 --- a/docker/rootfs/usr/local/bin/createsuperuser +++ b/docker/rootfs/usr/local/bin/createsuperuser @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py createsuperuser "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py createsuperuser "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py createsuperuser "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/deduplicate.py b/docker/rootfs/usr/local/bin/deduplicate.py new file mode 100755 index 000000000..c071cf043 --- /dev/null +++ b/docker/rootfs/usr/local/bin/deduplicate.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python3 +""" +File deduplication script that replaces identical files with symlinks. +Uses SHA256 hashing to identify duplicate files. +""" + +import hashlib +from collections import defaultdict +from pathlib import Path + +import click +import humanize + + +def calculate_sha256(filepath: Path) -> str | None: + sha256_hash = hashlib.sha256() + try: + with filepath.open("rb") as f: + # Read file in chunks to handle large files efficiently + while chunk := f.read(65536): # 64KB chunks + sha256_hash.update(chunk) + return sha256_hash.hexdigest() + except OSError as e: + click.echo(f"Error reading {filepath}: {e}", err=True) + return None + + +def find_duplicate_files(directory: Path) -> dict[str, list[Path]]: + """ + Recursively scan directory and group files by their SHA256 hash. + Returns a dictionary mapping hash -> list of file paths. + """ + hash_to_files: dict[str, list[Path]] = defaultdict(list) + + for filepath in directory.rglob("*"): + # Skip symlinks + if filepath.is_symlink(): + continue + + # Skip if not a regular file + if not filepath.is_file(): + continue + + file_hash = calculate_sha256(filepath) + if file_hash: + hash_to_files[file_hash].append(filepath) + + # Filter to only return hashes with duplicates + return {h: files for h, files in hash_to_files.items() if len(files) > 1} + + +def replace_with_symlinks( + duplicate_groups: dict[str, list[Path]], + *, + dry_run: bool = False, +) -> tuple[int, int]: + """ + Replace duplicate files with symlinks to the first occurrence. + Returns (number_of_files_replaced, space_saved_in_bytes). + """ + total_duplicates = 0 + space_saved = 0 + + for file_hash, file_list in duplicate_groups.items(): + # Keep the first file as the original, replace others with symlinks + original_file = file_list[0] + duplicates = file_list[1:] + + click.echo(f"Found {len(duplicates)} duplicate(s) of: {original_file}") + + for duplicate in duplicates: + try: + # Get file size before deletion + file_size = duplicate.stat().st_size + + if dry_run: + click.echo(f" [DRY RUN] Would replace: {duplicate}") + else: + # Remove the duplicate file + duplicate.unlink() + + # Create relative symlink if possible, otherwise absolute + try: + # Try to create a relative symlink + rel_path = original_file.relative_to(duplicate.parent) + duplicate.symlink_to(rel_path) + click.echo(f" Replaced: {duplicate} -> {rel_path}") + except ValueError: + # Fall back to absolute path + duplicate.symlink_to(original_file.resolve()) + click.echo(f" Replaced: {duplicate} -> {original_file}") + + space_saved += file_size + + total_duplicates += 1 + + except OSError as e: + click.echo(f" Error replacing {duplicate}: {e}", err=True) + + return total_duplicates, space_saved + + +@click.command() +@click.argument( + "directory", + type=click.Path( + exists=True, + file_okay=False, + dir_okay=True, + readable=True, + path_type=Path, + ), +) +@click.option( + "--dry-run", + is_flag=True, + help="Show what would be done without making changes", +) +@click.option("--verbose", "-v", is_flag=True, help="Show verbose output") +def deduplicate(directory: Path, *, dry_run: bool, verbose: bool) -> None: + """ + Recursively search DIRECTORY for identical files and replace them with symlinks. + + Uses SHA256 hashing to identify duplicate files. The first occurrence of each + unique file is kept, and all duplicates are replaced with symlinks pointing to it. + """ + directory = directory.resolve() + + click.echo(f"Scanning directory: {directory}") + if dry_run: + click.echo("Running in DRY RUN mode - no changes will be made") + + # Find all duplicate files + click.echo("Calculating file hashes...") + duplicate_groups = find_duplicate_files(directory) + + if not duplicate_groups: + click.echo("No duplicate files found!") + return + + total_files = sum(len(files) - 1 for files in duplicate_groups.values()) + click.echo( + f"Found {len(duplicate_groups)} group(s) of duplicates " + f"({total_files} files to deduplicate)", + ) + + if verbose: + for file_hash, files in duplicate_groups.items(): + click.echo(f"Hash: {file_hash}") + for f in files: + click.echo(f" - {f}") + + # Replace duplicates with symlinks + click.echo("Processing duplicates...") + num_replaced, space_saved = replace_with_symlinks(duplicate_groups, dry_run=dry_run) + + # Summary + click.echo( + f"{'Would replace' if dry_run else 'Replaced'} " + f"{num_replaced} duplicate file(s)", + ) + if not dry_run: + click.echo(f"Space saved: {humanize.naturalsize(space_saved, binary=True)}") + + +if __name__ == "__main__": + deduplicate() diff --git a/docker/rootfs/usr/local/bin/document_archiver b/docker/rootfs/usr/local/bin/document_archiver index 383acfcc6..4200aa7aa 100755 --- a/docker/rootfs/usr/local/bin/document_archiver +++ b/docker/rootfs/usr/local/bin/document_archiver @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_archiver "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_archiver "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_archiver "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/document_create_classifier b/docker/rootfs/usr/local/bin/document_create_classifier index 72dc33d6f..23e3d3d82 100755 --- a/docker/rootfs/usr/local/bin/document_create_classifier +++ b/docker/rootfs/usr/local/bin/document_create_classifier @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_create_classifier "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_create_classifier "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_create_classifier "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/document_exporter b/docker/rootfs/usr/local/bin/document_exporter index 7f48215d7..a82d70a16 100755 --- a/docker/rootfs/usr/local/bin/document_exporter +++ b/docker/rootfs/usr/local/bin/document_exporter @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_exporter "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_exporter "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_exporter "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/document_fuzzy_match b/docker/rootfs/usr/local/bin/document_fuzzy_match index 5b9548557..b97c2a9ba 100755 --- a/docker/rootfs/usr/local/bin/document_fuzzy_match +++ b/docker/rootfs/usr/local/bin/document_fuzzy_match @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_fuzzy_match "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_fuzzy_match "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_fuzzy_match "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/document_importer b/docker/rootfs/usr/local/bin/document_importer index 2286e89f7..dbfb40a57 100755 --- a/docker/rootfs/usr/local/bin/document_importer +++ b/docker/rootfs/usr/local/bin/document_importer @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_importer "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_importer "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_importer "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/document_index b/docker/rootfs/usr/local/bin/document_index index 2d518b5c5..b05f765da 100755 --- a/docker/rootfs/usr/local/bin/document_index +++ b/docker/rootfs/usr/local/bin/document_index @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_index "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_index "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_index "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/decrypt_documents b/docker/rootfs/usr/local/bin/document_llmindex similarity index 65% rename from docker/rootfs/usr/local/bin/decrypt_documents rename to docker/rootfs/usr/local/bin/document_llmindex index 4da1549ee..8e51245e1 100755 --- a/docker/rootfs/usr/local/bin/decrypt_documents +++ b/docker/rootfs/usr/local/bin/document_llmindex @@ -6,9 +6,9 @@ set -e cd "${PAPERLESS_SRC_DIR}" if [[ $(id -u) == 0 ]]; then - s6-setuidgid paperless python3 manage.py decrypt_documents "$@" + s6-setuidgid paperless python3 manage.py document_llmindex "$@" elif [[ $(id -un) == "paperless" ]]; then - python3 manage.py decrypt_documents "$@" + python3 manage.py document_llmindex "$@" else echo "Unknown user." fi diff --git a/docker/rootfs/usr/local/bin/document_renamer b/docker/rootfs/usr/local/bin/document_renamer index 326317a73..720edc0d8 100755 --- a/docker/rootfs/usr/local/bin/document_renamer +++ b/docker/rootfs/usr/local/bin/document_renamer @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_renamer "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_renamer "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_renamer "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/document_retagger b/docker/rootfs/usr/local/bin/document_retagger index 3bab3e790..6cbe03c19 100755 --- a/docker/rootfs/usr/local/bin/document_retagger +++ b/docker/rootfs/usr/local/bin/document_retagger @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_retagger "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_retagger "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_retagger "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/document_sanity_checker b/docker/rootfs/usr/local/bin/document_sanity_checker index 5c0c29ef2..8fff13a52 100755 --- a/docker/rootfs/usr/local/bin/document_sanity_checker +++ b/docker/rootfs/usr/local/bin/document_sanity_checker @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_sanity_checker "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_sanity_checker "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_sanity_checker "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/document_thumbnails b/docker/rootfs/usr/local/bin/document_thumbnails index c1000c31a..3c0f0de4c 100755 --- a/docker/rootfs/usr/local/bin/document_thumbnails +++ b/docker/rootfs/usr/local/bin/document_thumbnails @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py document_thumbnails "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py document_thumbnails "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py document_thumbnails "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/mail_fetcher b/docker/rootfs/usr/local/bin/mail_fetcher index 2ae1d1dfb..762b850b9 100755 --- a/docker/rootfs/usr/local/bin/mail_fetcher +++ b/docker/rootfs/usr/local/bin/mail_fetcher @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py mail_fetcher "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py mail_fetcher "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py mail_fetcher "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/manage_superuser b/docker/rootfs/usr/local/bin/manage_superuser index 9f7f37ecf..8f550cd1a 100755 --- a/docker/rootfs/usr/local/bin/manage_superuser +++ b/docker/rootfs/usr/local/bin/manage_superuser @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py manage_superuser "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py manage_superuser "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py manage_superuser "$@" else echo "Unknown user." + exit 1 fi diff --git a/docker/rootfs/usr/local/bin/prune_audit_logs b/docker/rootfs/usr/local/bin/prune_audit_logs index b9142e98e..8a3ab3299 100755 --- a/docker/rootfs/usr/local/bin/prune_audit_logs +++ b/docker/rootfs/usr/local/bin/prune_audit_logs @@ -5,10 +5,13 @@ set -e cd "${PAPERLESS_SRC_DIR}" -if [[ $(id -u) == 0 ]]; then +if [[ -n "${USER_IS_NON_ROOT}" ]]; then + python3 manage.py prune_audit_logs "$@" +elif [[ $(id -u) == 0 ]]; then s6-setuidgid paperless python3 manage.py prune_audit_logs "$@" elif [[ $(id -un) == "paperless" ]]; then python3 manage.py prune_audit_logs "$@" else echo "Unknown user." + exit 1 fi diff --git a/docs/administration.md b/docs/administration.md index ddf51bf9a..7e5ca2d41 100644 --- a/docs/administration.md +++ b/docs/administration.md @@ -580,39 +580,9 @@ document. documents, such as encrypted PDF documents. The archiver will skip over these documents each time it sees them. -### Managing encryption {#encryption} - -!!! warning - - Encryption was removed in [paperless-ng 0.9](changelog.md#paperless-ng-090) - because it did not really provide any additional security, the passphrase - was stored in a configuration file on the same system as the documents. - Furthermore, the entire text content of the documents is stored plain in - the database, even if your documents are encrypted. Filenames are not - encrypted as well. Finally, the web server provides transparent access to - your encrypted documents. - - Consider running paperless on an encrypted filesystem instead, which - will then at least provide security against physical hardware theft. - -#### Enabling encryption - -Enabling encryption is no longer supported. - -#### Disabling encryption - -Basic usage to disable encryption of your document store: - -(Note: If `PAPERLESS_PASSPHRASE` isn't set already, you need to specify -it here) - -``` -decrypt_documents [--passphrase SECR3TP4SSPHRA$E] -``` - ### Detecting duplicates {#fuzzy_duplicate} -Paperless already catches and prevents upload of exactly matching documents, +Paperless-ngx already catches and warns of exactly matching documents, however a new scan of an existing document may not produce an exact bit for bit duplicate. But the content should be exact or close, allowing detection. diff --git a/docs/advanced_usage.md b/docs/advanced_usage.md index de1068864..638544005 100644 --- a/docs/advanced_usage.md +++ b/docs/advanced_usage.md @@ -501,7 +501,7 @@ The `datetime` filter formats a datetime string or datetime object using Python' See the [strftime format code documentation](https://docs.python.org/3.13/library/datetime.html#strftime-and-strptime-format-codes) for the possible codes and their meanings. -##### Date Localization +##### Date Localization {#date-localization} The `localize_date` filter formats a date or datetime object into a localized string using Babel internationalization. This takes into account the provided locale for translation. Since this must be used on a date or datetime object, @@ -805,6 +805,27 @@ See the relevant settings [`PAPERLESS_CONSUMER_ENABLE_TAG_BARCODE`](configuratio and [`PAPERLESS_CONSUMER_TAG_BARCODE_MAPPING`](configuration.md#PAPERLESS_CONSUMER_TAG_BARCODE_MAPPING) for more information. +#### Splitting on Tag Barcodes + +By default, tag barcodes only assign tags to documents without splitting them. However, +you can enable document splitting on tag barcodes by setting +[`PAPERLESS_CONSUMER_TAG_BARCODE_SPLIT`](configuration.md#PAPERLESS_CONSUMER_TAG_BARCODE_SPLIT) +to `true`. + +When enabled, documents will be split at pages containing tag barcodes, similar to how +ASN barcodes work. Key features: + +- The page with the tag barcode is **retained** in the resulting document +- **Each split document extracts its own tags** - only tags on pages within that document are assigned +- Multiple tag barcodes can trigger multiple splits in the same document +- Works seamlessly with ASN barcodes - each split document gets its own ASN and tags + +This is useful for batch scanning where you place tag barcode pages between different +documents to both separate and categorize them in a single operation. + +**Example:** A 6-page scan with TAG:invoice on page 3 and TAG:receipt on page 5 will create +three documents: pages 1-2 (no tags), pages 3-4 (tagged "invoice"), and pages 5-6 (tagged "receipt"). + ## Automatic collation of double-sided documents {#collate} !!! note @@ -851,8 +872,8 @@ followed by the even pages. It's important that the scan files get consumed in the correct order, and one at a time. You therefore need to make sure that Paperless is running while you upload the files into -the directory; and if you're using [polling](configuration.md#polling), make sure that -`CONSUMER_POLLING` is set to a value lower than it takes for the second scan to appear, +the directory; and if you're using polling, make sure that +`CONSUMER_POLLING_INTERVAL` is set to a value lower than it takes for the second scan to appear, like 5-10 or even lower. Another thing that might happen is that you start a double sided scan, but then forget diff --git a/docs/api.md b/docs/api.md index f7e12bf67..7db6bbc7e 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1,4 +1,4 @@ -# The REST API +# REST API Paperless-ngx now ships with a fully-documented REST API and a browsable web interface to explore it. The API browsable interface is available at @@ -8,7 +8,7 @@ Further documentation is provided here for some endpoints and features. ## Authorization -The REST api provides four different forms of authentication. +The REST api provides five different forms of authentication. 1. Basic authentication @@ -52,6 +52,14 @@ The REST api provides four different forms of authentication. [configuration](configuration.md#PAPERLESS_ENABLE_HTTP_REMOTE_USER_API)), you can authenticate against the API using Remote User auth. +5. Headless OIDC via [`django-allauth`](https://codeberg.org/allauth/django-allauth) + + `django-allauth` exposes API endpoints under `api/auth/` which enable tools + like third-party apps to authenticate with social accounts that are + configured. See + [here](advanced_usage.md#openid-connect-and-social-authentication) for more + information on social accounts. + ## Searching for documents Full text searching is available on the `/api/documents/` endpoint. Two @@ -294,6 +302,13 @@ The following methods are supported: - `"delete_original": true` to delete the original documents after editing. - `"update_document": true` to update the existing document with the edited PDF. - `"include_metadata": true` to copy metadata from the original document to the edited document. +- `remove_password` + - Requires `parameters`: + - `"password": "PASSWORD_STRING"` The password to remove from the PDF documents. + - Optional `parameters`: + - `"update_document": true` to replace the existing document with the password-less PDF. + - `"delete_original": true` to delete the original document after editing. + - `"include_metadata": true` to copy metadata from the original document to the new password-less document. - `merge` - No additional `parameters` required. - The ordering of the merged document is determined by the list of IDs. diff --git a/docs/assets/extra.css b/docs/assets/extra.css index 270c1a219..c93e467fd 100644 --- a/docs/assets/extra.css +++ b/docs/assets/extra.css @@ -1,13 +1,31 @@ -:root > * { - --md-primary-fg-color: #17541f; - --md-primary-fg-color--dark: #17541f; - --md-primary-fg-color--light: #17541f; - --md-accent-fg-color: #2b8a38; +:root>* { + --paperless-green: #17541f; + --paperless-green-accent: #2b8a38; + --md-primary-fg-color: var(--paperless-green); + --md-primary-fg-color--dark: var(--paperless-green); + --md-primary-fg-color--light: var(--paperless-green-accent); + --md-accent-fg-color: var(--paperless-green-accent); --md-typeset-a-color: #21652a; } +.md-header, +.md-tabs { + background-color: var(--paperless-green); + color: #fff; +} + +.md-tabs__link { + color: rgba(255, 255, 255, 0.82); +} + +.md-tabs__link:hover, +.md-tabs__link--active { + color: #fff; +} + [data-md-color-scheme="slate"] { --md-hue: 222; + --md-default-bg-color: hsla(var(--md-hue), 15%, 10%, 1); } @media (min-width: 768px) { @@ -69,8 +87,8 @@ h4 code { } /* Hide config vars from sidebar, toc and move the border on mobile case their hidden */ -.md-nav.md-nav--secondary .md-nav__item .md-nav__link[href*="PAPERLESS_"], -.md-nav.md-nav--secondary .md-nav__item .md-nav__link[href*="USERMAP_"] { +.md-nav.md-nav--secondary .md-nav__item:has(> .md-nav__link[href*="PAPERLESS_"]), +.md-nav.md-nav--secondary .md-nav__item:has(> .md-nav__link[href*="USERMAP_"]) { display: none; } @@ -83,18 +101,3 @@ h4 code { border-top: .05rem solid var(--md-default-fg-color--lightest); } } - -/* Show search shortcut key */ -[data-md-toggle="search"]:not(:checked) ~ .md-header .md-search__form::after { - position: absolute; - top: .3rem; - right: .3rem; - display: block; - padding: .1rem .4rem; - color: var(--md-default-fg-color--lighter); - font-weight: bold; - font-size: .8rem; - border: .05rem solid var(--md-default-fg-color--lighter); - border-radius: .1rem; - content: "/"; - } diff --git a/docs/changelog.md b/docs/changelog.md index 467e89a82..d6a87e299 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,532 @@ # Changelog +## paperless-ngx 2.20.6 + +### Bug Fixes + +- Fix: extract all ids for nested tags [@shamoon](https://github.com/shamoon) ([#11888](https://github.com/paperless-ngx/paperless-ngx/pull/11888)) +- Fixhancement: change date calculation for 'this year' to include future documents [@shamoon](https://github.com/shamoon) ([#11884](https://github.com/paperless-ngx/paperless-ngx/pull/11884)) +- Fix: Running management scripts under rootless could fail [@stumpylog](https://github.com/stumpylog) ([#11870](https://github.com/paperless-ngx/paperless-ngx/pull/11870)) +- Fix: use correct field id for overrides [@shamoon](https://github.com/shamoon) ([#11869](https://github.com/paperless-ngx/paperless-ngx/pull/11869)) + +### All App Changes + +
+3 changes + +- Fix: extract all ids for nested tags [@shamoon](https://github.com/shamoon) ([#11888](https://github.com/paperless-ngx/paperless-ngx/pull/11888)) +- Fixhancement: change date calculation for 'this year' to include future documents [@shamoon](https://github.com/shamoon) ([#11884](https://github.com/paperless-ngx/paperless-ngx/pull/11884)) +- Fix: use correct field id for overrides [@shamoon](https://github.com/shamoon) ([#11869](https://github.com/paperless-ngx/paperless-ngx/pull/11869)) +
+ +## paperless-ngx 2.20.5 + +### Bug Fixes + +- Fix: ensure horizontal scroll for long tag names in list, wrap tags without parent [@shamoon](https://github.com/shamoon) ([#11811](https://github.com/paperless-ngx/paperless-ngx/pull/11811)) +- Fix: use explicit order field for workflow actions [@shamoon](https://github.com/shamoon) [@stumpylog](https://github.com/stumpylog) ([#11781](https://github.com/paperless-ngx/paperless-ngx/pull/11781)) + +### All App Changes + +
+2 changes + +- Fix: ensure horizontal scroll for long tag names in list, wrap tags without parent [@shamoon](https://github.com/shamoon) ([#11811](https://github.com/paperless-ngx/paperless-ngx/pull/11811)) +- Fix: use explicit order field for workflow actions [@shamoon](https://github.com/shamoon) [@stumpylog](https://github.com/stumpylog) ([#11781](https://github.com/paperless-ngx/paperless-ngx/pull/11781)) +
+ +## paperless-ngx 2.20.4 + +### Security + +- Resolve [GHSA-28cf-xvcf-hw6m](https://github.com/paperless-ngx/paperless-ngx/security/advisories/GHSA-28cf-xvcf-hw6m) + +### Bug Fixes + +- Fix: propagate metadata override created value [@shamoon](https://github.com/shamoon) ([#11659](https://github.com/paperless-ngx/paperless-ngx/pull/11659)) +- Fix: support ordering by storage path name [@shamoon](https://github.com/shamoon) ([#11661](https://github.com/paperless-ngx/paperless-ngx/pull/11661)) +- Fix: validate cf integer values within PostgreSQL range [@shamoon](https://github.com/shamoon) ([#11666](https://github.com/paperless-ngx/paperless-ngx/pull/11666)) +- Fixhancement: add error handling and retry when opening index [@shamoon](https://github.com/shamoon) ([#11731](https://github.com/paperless-ngx/paperless-ngx/pull/11731)) +- Fix: fix recurring workflow to respect latest run time [@shamoon](https://github.com/shamoon) ([#11735](https://github.com/paperless-ngx/paperless-ngx/pull/11735)) + +### All App Changes + +
+5 changes + +- Fix: propagate metadata override created value [@shamoon](https://github.com/shamoon) ([#11659](https://github.com/paperless-ngx/paperless-ngx/pull/11659)) +- Fix: support ordering by storage path name [@shamoon](https://github.com/shamoon) ([#11661](https://github.com/paperless-ngx/paperless-ngx/pull/11661)) +- Fix: validate cf integer values within PostgreSQL range [@shamoon](https://github.com/shamoon) ([#11666](https://github.com/paperless-ngx/paperless-ngx/pull/11666)) +- Fixhancement: add error handling and retry when opening index [@shamoon](https://github.com/shamoon) ([#11731](https://github.com/paperless-ngx/paperless-ngx/pull/11731)) +- Fix: fix recurring workflow to respect latest run time [@shamoon](https://github.com/shamoon) ([#11735](https://github.com/paperless-ngx/paperless-ngx/pull/11735)) +
+ +## paperless-ngx 2.20.3 + +### Security + +- Resolve [GHSA-7cq3-mhxq-w946](https://github.com/paperless-ngx/paperless-ngx/security/advisories/GHSA-7cq3-mhxq-w946) + +## paperless-ngx 2.20.2 + +### Security + +- Resolve [GHSA-6653-vcx4-69mc](https://github.com/paperless-ngx/paperless-ngx/security/advisories/GHSA-6653-vcx4-69mc) +- Resolve [GHSA-24x5-wp64-9fcc](https://github.com/paperless-ngx/paperless-ngx/security/advisories/GHSA-24x5-wp64-9fcc) + +### Features / Enhancements + +- Tweakhancement: dim inactive users in users-groups list [@shamoon](https://github.com/shamoon) ([#11537](https://github.com/paperless-ngx/paperless-ngx/pull/11537)) + +### Bug Fixes + +- Fix: Expanded SVG validation whitelist and additional checks [@stumpylog](https://github.com/stumpylog) ([#11590](https://github.com/paperless-ngx/paperless-ngx/pull/11590)) +- Fix: normalize allowed SVG tag and attribute names, add version [@shamoon](https://github.com/shamoon) ([#11586](https://github.com/paperless-ngx/paperless-ngx/pull/11586)) +- Fix: pass additional arguments to TagSerializer for permissions [@shamoon](https://github.com/shamoon) ([#11576](https://github.com/paperless-ngx/paperless-ngx/pull/11576)) + +### Maintenance + +- Chore(deps): Bump actions/checkout from 5 to 6 in the actions group @[dependabot[bot]](https://github.com/apps/dependabot) ([#11515](https://github.com/paperless-ngx/paperless-ngx/pull/11515)) + +### Dependencies + +
+6 changes + +- Chore: update Angular dependencies to 20.3.15 [@shamoon](https://github.com/shamoon) ([#11568](https://github.com/paperless-ngx/paperless-ngx/pull/11568)) +- Chore(deps): Bump actions/checkout from 5 to 6 in the actions group @[dependabot[bot]](https://github.com/apps/dependabot) ([#11515](https://github.com/paperless-ngx/paperless-ngx/pull/11515)) +- Chore(deps-dev): Bump webpack from 5.102.1 to 5.103.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11513](https://github.com/paperless-ngx/paperless-ngx/pull/11513)) +- Chore(deps-dev): Bump @playwright/test from 1.56.1 to 1.57.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11514](https://github.com/paperless-ngx/paperless-ngx/pull/11514)) +- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 3 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11512](https://github.com/paperless-ngx/paperless-ngx/pull/11512)) +- docker(deps): bump astral-sh/uv from 0.9.14-python3.12-trixie-slim to 0.9.15-python3.12-trixie-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#11533](https://github.com/paperless-ngx/paperless-ngx/pull/11533)) +
+ +### All App Changes + +
+12 changes + +- Fix: Expanded SVG validation whitelist and additional checks [@stumpylog](https://github.com/stumpylog) ([#11590](https://github.com/paperless-ngx/paperless-ngx/pull/11590)) +- Fixhancement: pass ordering to tag children [@shamoon](https://github.com/shamoon) ([#11556](https://github.com/paperless-ngx/paperless-ngx/pull/11556)) +- Performance: avoid unnecessary filename operations on bulk custom field updates [@shamoon](https://github.com/shamoon) ([#11558](https://github.com/paperless-ngx/paperless-ngx/pull/11558)) +- Fix: normalize allowed SVG tag and attribute names, add version [@shamoon](https://github.com/shamoon) ([#11586](https://github.com/paperless-ngx/paperless-ngx/pull/11586)) +- Chore: refactor workflows code [@shamoon](https://github.com/shamoon) ([#11563](https://github.com/paperless-ngx/paperless-ngx/pull/11563)) +- Fix: pass additional arguments to TagSerializer for permissions [@shamoon](https://github.com/shamoon) ([#11576](https://github.com/paperless-ngx/paperless-ngx/pull/11576)) +- Chore: update Angular dependencies to 20.3.15 [@shamoon](https://github.com/shamoon) ([#11568](https://github.com/paperless-ngx/paperless-ngx/pull/11568)) +- Chore(deps-dev): Bump webpack from 5.102.1 to 5.103.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11513](https://github.com/paperless-ngx/paperless-ngx/pull/11513)) +- Chore(deps-dev): Bump @playwright/test from 1.56.1 to 1.57.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11514](https://github.com/paperless-ngx/paperless-ngx/pull/11514)) +- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 3 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11512](https://github.com/paperless-ngx/paperless-ngx/pull/11512)) +- Tweakhancement: dim inactive users in users-groups list [@shamoon](https://github.com/shamoon) ([#11537](https://github.com/paperless-ngx/paperless-ngx/pull/11537)) +- Chore: add some output of social login errors [@shamoon](https://github.com/shamoon) ([#11527](https://github.com/paperless-ngx/paperless-ngx/pull/11527)) +
+ +## paperless-ngx 2.20.1 + +### Bug Fixes + +- Fix: set search term when using advanced search from global search [@shamoon](https://github.com/shamoon) ([#11503](https://github.com/paperless-ngx/paperless-ngx/pull/11503)) +- Fix: change async handling of select custom field updates [@shamoon](https://github.com/shamoon) ([#11490](https://github.com/paperless-ngx/paperless-ngx/pull/11490)) +- Fix: skip SSL for MariaDB ping in init script [@danielrheinbay](https://github.com/danielrheinbay) ([#11491](https://github.com/paperless-ngx/paperless-ngx/pull/11491)) +- Fix: handle allauth groups location breaking change [@shamoon](https://github.com/shamoon) ([#11471](https://github.com/paperless-ngx/paperless-ngx/pull/11471)) + +### Dependencies + +- docker(deps): Bump astral-sh/uv from 0.9.10-python3.12-trixie-slim to 0.9.11-python3.12-trixie-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#11450](https://github.com/paperless-ngx/paperless-ngx/pull/11450)) +- Chore(deps): Bump @angular/common from 20.3.12 to 20.3.14 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11481](https://github.com/paperless-ngx/paperless-ngx/pull/11481)) + +### All App Changes + +
+4 changes + +- Fix: set search term when using advanced search from global search [@shamoon](https://github.com/shamoon) ([#11503](https://github.com/paperless-ngx/paperless-ngx/pull/11503)) +- Fix: change async handling of select custom field updates [@shamoon](https://github.com/shamoon) ([#11490](https://github.com/paperless-ngx/paperless-ngx/pull/11490)) +- Chore(deps): Bump @angular/common from 20.3.12 to 20.3.14 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11481](https://github.com/paperless-ngx/paperless-ngx/pull/11481)) +- Fix: handle allauth groups location breaking change [@shamoon](https://github.com/shamoon) ([#11471](https://github.com/paperless-ngx/paperless-ngx/pull/11471)) +
+ +## paperless-ngx 2.20.0 + +### Notable Changes + +- Feature: Upgrade underlying Docker image to Trixie [@stumpylog](https://github.com/stumpylog) ([#10562](https://github.com/paperless-ngx/paperless-ngx/pull/10562)) + +### Features / Enhancements + +- Feature: Upgrade underlying Docker image to Trixie [@stumpylog](https://github.com/stumpylog) ([#10562](https://github.com/paperless-ngx/paperless-ngx/pull/10562)) +- Fixhancement: more log viewer improvements [@shamoon](https://github.com/shamoon) ([#11426](https://github.com/paperless-ngx/paperless-ngx/pull/11426)) +- Performance: Replace duplicated static files with symlinks [@stumpylog](https://github.com/stumpylog) ([#11418](https://github.com/paperless-ngx/paperless-ngx/pull/11418)) +- Enhancement: add more relative dates, support modified [@shamoon](https://github.com/shamoon) ([#11411](https://github.com/paperless-ngx/paperless-ngx/pull/11411)) +- Performance: make move files after select custom field change async [@shamoon](https://github.com/shamoon) ([#11391](https://github.com/paperless-ngx/paperless-ngx/pull/11391)) +- Enhancement: Use a better check for the MariaDB server to be ready [@stumpylog](https://github.com/stumpylog) ([#11396](https://github.com/paperless-ngx/paperless-ngx/pull/11396)) +- Enhancement: speed-up docker container startup [@flrgh](https://github.com/flrgh) ([#11134](https://github.com/paperless-ngx/paperless-ngx/pull/11134)) + +### Bug Fixes + +- Fix: prevent focus loss from change detection in cf query dropdown [@shamoon](https://github.com/shamoon) ([#11409](https://github.com/paperless-ngx/paperless-ngx/pull/11409)) +- Fix: sort editing filterable dropdowns sooner [@shamoon](https://github.com/shamoon) ([#11404](https://github.com/paperless-ngx/paperless-ngx/pull/11404)) +- Fix: support for custom field ordering w advanced search [@shamoon](https://github.com/shamoon) ([#11383](https://github.com/paperless-ngx/paperless-ngx/pull/11383)) + +### Maintenance + +- Chore(deps): Bump the actions group with 7 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11259](https://github.com/paperless-ngx/paperless-ngx/pull/11259)) + +### Dependencies + +
+16 changes + +- Chore: Upgrades psycopg to 3.2.12 [@stumpylog](https://github.com/stumpylog) ([#11420](https://github.com/paperless-ngx/paperless-ngx/pull/11420)) +- Chore(deps-dev): Bump glob from 10.4.1 to 10.5.0 in /src/paperless_mail/templates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11413](https://github.com/paperless-ngx/paperless-ngx/pull/11413)) +- docker-compose(deps): bump gotenberg/gotenberg from 8.24 to 8.25 in /docker/compose @[dependabot[bot]](https://github.com/apps/dependabot) ([#11393](https://github.com/paperless-ngx/paperless-ngx/pull/11393)) +- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 21 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11260](https://github.com/paperless-ngx/paperless-ngx/pull/11260)) +- Chore(deps-dev): Bump @playwright/test from 1.55.1 to 1.56.1 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11263](https://github.com/paperless-ngx/paperless-ngx/pull/11263)) +- Chore(deps-dev): Bump webpack from 5.102.0 to 5.102.1 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11264](https://github.com/paperless-ngx/paperless-ngx/pull/11264)) +- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11262](https://github.com/paperless-ngx/paperless-ngx/pull/11262)) +- Chore(deps-dev): Bump jest-preset-angular from 15.0.2 to 15.0.3 in /src-ui in the frontend-jest-dependencies group @[dependabot[bot]](https://github.com/apps/dependabot) ([#11261](https://github.com/paperless-ngx/paperless-ngx/pull/11261)) +- Chore(deps-dev): Bump @types/node from 24.6.1 to 24.9.2 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11265](https://github.com/paperless-ngx/paperless-ngx/pull/11265)) +- Chore(deps): Bump the small-changes group across 1 directory with 11 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11337](https://github.com/paperless-ngx/paperless-ngx/pull/11337)) +- Chore(deps): Bump django-auditlog from 3.2.1 to 3.3.0 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11021](https://github.com/paperless-ngx/paperless-ngx/pull/11021)) +- Chore(deps): Bump the actions group with 7 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11259](https://github.com/paperless-ngx/paperless-ngx/pull/11259)) +- Chore(deps): Bump drf-spectacular-sidecar from 2025.9.1 to 2025.10.1 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11019](https://github.com/paperless-ngx/paperless-ngx/pull/11019)) +- Chore(deps): Bump django-filter from 25.1 to 25.2 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11020](https://github.com/paperless-ngx/paperless-ngx/pull/11020)) +- Chore(deps): Update django-allauth[mfa,socialaccount] requirement from ~=65.4.0 to ~=65.12.1 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11198](https://github.com/paperless-ngx/paperless-ngx/pull/11198)) +- docker(deps): bump astral-sh/uv from 0.9.9-python3.12-bookworm-slim to 0.9.10-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#11394](https://github.com/paperless-ngx/paperless-ngx/pull/11394)) +
+ +### All App Changes + +
+19 changes + +- Fixhancement: more log viewer improvements [@shamoon](https://github.com/shamoon) ([#11426](https://github.com/paperless-ngx/paperless-ngx/pull/11426)) +- Chore: Upgrades psycopg to 3.2.12 [@stumpylog](https://github.com/stumpylog) ([#11420](https://github.com/paperless-ngx/paperless-ngx/pull/11420)) +- Enhancement: add more relative dates, support modified [@shamoon](https://github.com/shamoon) ([#11411](https://github.com/paperless-ngx/paperless-ngx/pull/11411)) +- Chore(deps-dev): Bump glob from 10.4.1 to 10.5.0 in /src/paperless_mail/templates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11413](https://github.com/paperless-ngx/paperless-ngx/pull/11413)) +- Performance: make move files after select custom field change async [@shamoon](https://github.com/shamoon) ([#11391](https://github.com/paperless-ngx/paperless-ngx/pull/11391)) +- Fix: prevent focus loss from change detection in cf query dropdown [@shamoon](https://github.com/shamoon) ([#11409](https://github.com/paperless-ngx/paperless-ngx/pull/11409)) +- Fix: sort editing filterable dropdowns sooner [@shamoon](https://github.com/shamoon) ([#11404](https://github.com/paperless-ngx/paperless-ngx/pull/11404)) +- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 21 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11260](https://github.com/paperless-ngx/paperless-ngx/pull/11260)) +- Chore(deps-dev): Bump @playwright/test from 1.55.1 to 1.56.1 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11263](https://github.com/paperless-ngx/paperless-ngx/pull/11263)) +- Chore(deps-dev): Bump webpack from 5.102.0 to 5.102.1 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11264](https://github.com/paperless-ngx/paperless-ngx/pull/11264)) +- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11262](https://github.com/paperless-ngx/paperless-ngx/pull/11262)) +- Chore(deps-dev): Bump jest-preset-angular from 15.0.2 to 15.0.3 in /src-ui in the frontend-jest-dependencies group @[dependabot[bot]](https://github.com/apps/dependabot) ([#11261](https://github.com/paperless-ngx/paperless-ngx/pull/11261)) +- Chore(deps-dev): Bump @types/node from 24.6.1 to 24.9.2 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#11265](https://github.com/paperless-ngx/paperless-ngx/pull/11265)) +- Chore(deps): Bump the small-changes group across 1 directory with 11 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11337](https://github.com/paperless-ngx/paperless-ngx/pull/11337)) +- Chore(deps): Bump django-auditlog from 3.2.1 to 3.3.0 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11021](https://github.com/paperless-ngx/paperless-ngx/pull/11021)) +- Chore(deps): Bump drf-spectacular-sidecar from 2025.9.1 to 2025.10.1 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11019](https://github.com/paperless-ngx/paperless-ngx/pull/11019)) +- Chore(deps): Bump django-filter from 25.1 to 25.2 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11020](https://github.com/paperless-ngx/paperless-ngx/pull/11020)) +- Chore(deps): Update django-allauth[mfa,socialaccount] requirement from ~=65.4.0 to ~=65.12.1 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11198](https://github.com/paperless-ngx/paperless-ngx/pull/11198)) +- Fix: support for custom field ordering w advanced search [@shamoon](https://github.com/shamoon) ([#11383](https://github.com/paperless-ngx/paperless-ngx/pull/11383)) +
+ +## paperless-ngx 2.19.6 + +### Bug Fixes + +- Chore: include password validation on user edit [@shamoon](https://github.com/shamoon) ([#11308](https://github.com/paperless-ngx/paperless-ngx/pull/11308)) +- Fix: include BASE_URL when constructing for workflows [@ebardsley](https://github.com/ebardsley) ([#11360](https://github.com/paperless-ngx/paperless-ngx/pull/11360)) +- Fixhancement: refactor email attachment logic [@shamoon](https://github.com/shamoon) ([#11336](https://github.com/paperless-ngx/paperless-ngx/pull/11336)) +- Fixhancement: trim whitespace for some text searches [@shamoon](https://github.com/shamoon) ([#11357](https://github.com/paperless-ngx/paperless-ngx/pull/11357)) +- Fix: update Outlook refresh token when refreshed [@shamoon](https://github.com/shamoon) ([#11341](https://github.com/paperless-ngx/paperless-ngx/pull/11341)) +- Fix: only cache remote version data for version checking [@shamoon](https://github.com/shamoon) ([#11320](https://github.com/paperless-ngx/paperless-ngx/pull/11320)) +- Fix: include replace none logic in storage path preview, improve jinja conditionals for empty metadata [@shamoon](https://github.com/shamoon) ([#11315](https://github.com/paperless-ngx/paperless-ngx/pull/11315)) + +### Dependencies + +- docker(deps): bump astral-sh/uv from 0.9.7-python3.12-bookworm-slim to 0.9.9-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#11338](https://github.com/paperless-ngx/paperless-ngx/pull/11338)) + +### All App Changes + +
+7 changes + +- Fix: include BASE_URL when constructing for workflows [@ebardsley](https://github.com/ebardsley) ([#11360](https://github.com/paperless-ngx/paperless-ngx/pull/11360)) +- Fixhancement: refactor email attachment logic [@shamoon](https://github.com/shamoon) ([#11336](https://github.com/paperless-ngx/paperless-ngx/pull/11336)) +- Fixhancement: trim whitespace for some text searches [@shamoon](https://github.com/shamoon) ([#11357](https://github.com/paperless-ngx/paperless-ngx/pull/11357)) +- Fix: update Outlook refresh token when refreshed [@shamoon](https://github.com/shamoon) ([#11341](https://github.com/paperless-ngx/paperless-ngx/pull/11341)) +- Fix: only cache remote version data for version checking [@shamoon](https://github.com/shamoon) ([#11320](https://github.com/paperless-ngx/paperless-ngx/pull/11320)) +- Fix: include replace none logic in storage path preview, improve jinja conditionals for empty metadata [@shamoon](https://github.com/shamoon) ([#11315](https://github.com/paperless-ngx/paperless-ngx/pull/11315)) +- Chore: include password validation on user edit [@shamoon](https://github.com/shamoon) ([#11308](https://github.com/paperless-ngx/paperless-ngx/pull/11308)) +
+ +## paperless-ngx 2.19.5 + +### Bug Fixes + +- Fix: ensure custom field query propagation, change detection [@shamoon](https://github.com/shamoon) ([#11291](https://github.com/paperless-ngx/paperless-ngx/pull/11291)) + +### Dependencies + +- docker(deps): Bump astral-sh/uv from 0.9.4-python3.12-bookworm-slim to 0.9.7-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#11283](https://github.com/paperless-ngx/paperless-ngx/pull/11283)) + +### All App Changes + +- Fix: ensure custom field query propagation, change detection [@shamoon](https://github.com/shamoon) ([#11291](https://github.com/paperless-ngx/paperless-ngx/pull/11291)) + +## paperless-ngx 2.19.4 + +### Bug Fixes + +- Fix: use original_file when attaching docs to workflow emails with added trigger [@shamoon](https://github.com/shamoon) ([#11266](https://github.com/paperless-ngx/paperless-ngx/pull/11266)) +- Fix: mark 'Select' button in doc list for translation [@shamoon](https://github.com/shamoon) ([#11278](https://github.com/paperless-ngx/paperless-ngx/pull/11278)) +- Fix: respect fields parameter for created field [@shamoon](https://github.com/shamoon) ([#11251](https://github.com/paperless-ngx/paperless-ngx/pull/11251)) +- Fix: improve legibility of processed mail error popover in light mode [@shamoon](https://github.com/shamoon) ([#11258](https://github.com/paperless-ngx/paperless-ngx/pull/11258)) +- Fixhancement: truncate large logs, improve auto-scroll [@shamoon](https://github.com/shamoon) ([#11239](https://github.com/paperless-ngx/paperless-ngx/pull/11239)) +- Chore: add max-height and overflow to processedmail error popover [@shamoon](https://github.com/shamoon) ([#11252](https://github.com/paperless-ngx/paperless-ngx/pull/11252)) +- Fix: delay iframe DOM removal, handle onafterprint error for print in FF [@shamoon](https://github.com/shamoon) ([#11237](https://github.com/paperless-ngx/paperless-ngx/pull/11237)) +- Fix: de-deduplicate children in tag list when filtering [@shamoon](https://github.com/shamoon) ([#11229](https://github.com/paperless-ngx/paperless-ngx/pull/11229)) + +### Performance + +- Performance: re-enable virtual scroll, bump ng-select [@shamoon](https://github.com/shamoon) ([#11279](https://github.com/paperless-ngx/paperless-ngx/pull/11279)) +- Performance: use virtual scroll container and log level parsing for logs view [@MickLesk](https://github.com/MickLesk) ([#11233](https://github.com/paperless-ngx/paperless-ngx/pull/11233)) + +### All App Changes + +
+11 changes + +- Performance: re-enable virtual scroll, bump ng-select [@shamoon](https://github.com/shamoon) ([#11279](https://github.com/paperless-ngx/paperless-ngx/pull/11279)) +- Fix: use original_file when attaching docs to workflow emails with added trigger [@shamoon](https://github.com/shamoon) ([#11266](https://github.com/paperless-ngx/paperless-ngx/pull/11266)) +- Fix: mark 'Select' button in doc list for translation [@shamoon](https://github.com/shamoon) ([#11278](https://github.com/paperless-ngx/paperless-ngx/pull/11278)) +- Fix: respect fields parameter for created field [@shamoon](https://github.com/shamoon) ([#11251](https://github.com/paperless-ngx/paperless-ngx/pull/11251)) +- Fix: improve legibility of processed mail error popover in light mode [@shamoon](https://github.com/shamoon) ([#11258](https://github.com/paperless-ngx/paperless-ngx/pull/11258)) +- Fixhancement: truncate large logs, improve auto-scroll [@shamoon](https://github.com/shamoon) ([#11239](https://github.com/paperless-ngx/paperless-ngx/pull/11239)) +- Chore: add max-height and overflow to processedmail error popover [@shamoon](https://github.com/shamoon) ([#11252](https://github.com/paperless-ngx/paperless-ngx/pull/11252)) +- Fix: delay iframe DOM removal, handle onafterprint error for print in FF [@shamoon](https://github.com/shamoon) ([#11237](https://github.com/paperless-ngx/paperless-ngx/pull/11237)) +- Performance: use virtual scroll container and log level parsing for logs view [@MickLesk](https://github.com/MickLesk) ([#11233](https://github.com/paperless-ngx/paperless-ngx/pull/11233)) +- Chore: cache Github version check for 15 minutes [@shamoon](https://github.com/shamoon) ([#11235](https://github.com/paperless-ngx/paperless-ngx/pull/11235)) +- Fix: de-deduplicate children in tag list when filtering [@shamoon](https://github.com/shamoon) ([#11229](https://github.com/paperless-ngx/paperless-ngx/pull/11229)) +
+ +## paperless-ngx 2.19.3 + +### Bug Fixes + +- Fix: remove unnecessary permission requirements for new email endpoint [@shamoon](https://github.com/shamoon) ([#11215](https://github.com/paperless-ngx/paperless-ngx/pull/11215)) +- Fix: refactor nested sorting in filterable dropdowns [@shamoon](https://github.com/shamoon) ([#11214](https://github.com/paperless-ngx/paperless-ngx/pull/11214)) +- Fix: add root tag filtering for tag list page consistency, fix toggle all [@shamoon](https://github.com/shamoon) ([#11208](https://github.com/paperless-ngx/paperless-ngx/pull/11208)) +- Fix: support ConsumableDocument in email attachments [@shamoon](https://github.com/shamoon) ([#11196](https://github.com/paperless-ngx/paperless-ngx/pull/11196)) +- Fix: add missing import for ConfirmButtonComponent in user-edit-dialog [@shamoon](https://github.com/shamoon) ([#11167](https://github.com/paperless-ngx/paperless-ngx/pull/11167)) +- Fix: resolve migration warning in 2.19.2 [@shamoon](https://github.com/shamoon) ([#11157](https://github.com/paperless-ngx/paperless-ngx/pull/11157)) + +### Changes + +- Change: make workflow action only title draggable [@shamoon](https://github.com/shamoon) ([#11209](https://github.com/paperless-ngx/paperless-ngx/pull/11209)) +- Change: change workflowrun to softdeletemodel [@shamoon](https://github.com/shamoon) ([#11194](https://github.com/paperless-ngx/paperless-ngx/pull/11194)) + +### Dependencies + +- Chore(deps): Bump django from 5.2.6 to 5.2.7 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11200](https://github.com/paperless-ngx/paperless-ngx/pull/11200)) + +### All App Changes + +
+9 changes + +- Chore(deps): Bump django from 5.2.6 to 5.2.7 @[dependabot[bot]](https://github.com/apps/dependabot) ([#11200](https://github.com/paperless-ngx/paperless-ngx/pull/11200)) +- Fix: remove unnecessary permission requirements for new email endpoint [@shamoon](https://github.com/shamoon) ([#11215](https://github.com/paperless-ngx/paperless-ngx/pull/11215)) +- Fix: refactor nested sorting in filterable dropdowns [@shamoon](https://github.com/shamoon) ([#11214](https://github.com/paperless-ngx/paperless-ngx/pull/11214)) +- Fix: add root tag filtering for tag list page consistency, fix toggle all [@shamoon](https://github.com/shamoon) ([#11208](https://github.com/paperless-ngx/paperless-ngx/pull/11208)) +- Change: make workflow action only title draggable [@shamoon](https://github.com/shamoon) ([#11209](https://github.com/paperless-ngx/paperless-ngx/pull/11209)) +- Change: change workflowrun to softdeletemodel [@shamoon](https://github.com/shamoon) ([#11194](https://github.com/paperless-ngx/paperless-ngx/pull/11194)) +- Chore: Minor migration optimization for workflow titles [@stumpylog](https://github.com/stumpylog) ([#11197](https://github.com/paperless-ngx/paperless-ngx/pull/11197)) +- Fix: support ConsumableDocument in email attachments [@shamoon](https://github.com/shamoon) ([#11196](https://github.com/paperless-ngx/paperless-ngx/pull/11196)) +- Fix: add missing import for ConfirmButtonComponent in user-edit-dialog [@shamoon](https://github.com/shamoon) ([#11167](https://github.com/paperless-ngx/paperless-ngx/pull/11167)) +- Fix: resolve migration warning in 2.19.2 [@shamoon](https://github.com/shamoon) ([#11157](https://github.com/paperless-ngx/paperless-ngx/pull/11157)) +
+ +## paperless-ngx 2.19.2 + +### Features / Enhancements + +- Fixhancement: display loading status for tags instead of 'Private' [@shamoon](https://github.com/shamoon) ([#11140](https://github.com/paperless-ngx/paperless-ngx/pull/11140)) + +### Bug Fixes + +- Fix: Remove edit requirement for bulk email, show based on setting [@shamoon](https://github.com/shamoon) ([#11149](https://github.com/paperless-ngx/paperless-ngx/pull/11149)) +- Fix: handle undefined IDs in getOriginalObject [@shamoon](https://github.com/shamoon) ([#11147](https://github.com/paperless-ngx/paperless-ngx/pull/11147)) + +### All App Changes + +
+3 changes + +- Fix: Remove edit requirement for bulk email, show based on setting [@shamoon](https://github.com/shamoon) ([#11149](https://github.com/paperless-ngx/paperless-ngx/pull/11149)) +- Fix: handle undefined IDs in getOriginalObject [@shamoon](https://github.com/shamoon) ([#11147](https://github.com/paperless-ngx/paperless-ngx/pull/11147)) +- Fixhancement: display loading status for tags instead of 'Private' [@shamoon](https://github.com/shamoon) ([#11140](https://github.com/paperless-ngx/paperless-ngx/pull/11140)) +
+ +## paperless-ngx 2.19.1 + +### Bug Fixes + +- Fix: skip workflow title migration for empty titles [@shamoon](https://github.com/shamoon) ([#11136](https://github.com/paperless-ngx/paperless-ngx/pull/11136)) +- Fix: restore workflow title migration [@shamoon](https://github.com/shamoon) ([#11131](https://github.com/paperless-ngx/paperless-ngx/pull/11131)) +- Fix: retrieve document_count for tag children [@shamoon](https://github.com/shamoon) ([#11125](https://github.com/paperless-ngx/paperless-ngx/pull/11125)) +- Fix: move hierarchical order logic in dropdown sorting [@shamoon](https://github.com/shamoon) ([#11128](https://github.com/paperless-ngx/paperless-ngx/pull/11128)) +- Fix: use original object for children in tag list [@shamoon](https://github.com/shamoon) ([#11127](https://github.com/paperless-ngx/paperless-ngx/pull/11127)) +- Fix: dont display or fetch users or groups with insufficient perms [@shamoon](https://github.com/shamoon) ([#11111](https://github.com/paperless-ngx/paperless-ngx/pull/11111)) + +### All App Changes + +
+6 changes + +- Fix: skip workflow title migration for empty titles [@shamoon](https://github.com/shamoon) ([#11136](https://github.com/paperless-ngx/paperless-ngx/pull/11136)) +- Fix: restore workflow title migration [@shamoon](https://github.com/shamoon) ([#11131](https://github.com/paperless-ngx/paperless-ngx/pull/11131)) +- Fix: retrieve document_count for tag children [@shamoon](https://github.com/shamoon) ([#11125](https://github.com/paperless-ngx/paperless-ngx/pull/11125)) +- Fix: move hierarchical order logic in dropdown sorting [@shamoon](https://github.com/shamoon) ([#11128](https://github.com/paperless-ngx/paperless-ngx/pull/11128)) +- Fix: use original object for children in tag list [@shamoon](https://github.com/shamoon) ([#11127](https://github.com/paperless-ngx/paperless-ngx/pull/11127)) +- Fix: dont display or fetch users or groups with insufficient perms [@shamoon](https://github.com/shamoon) ([#11111](https://github.com/paperless-ngx/paperless-ngx/pull/11111)) +
+ +## paperless-ngx 2.19.0 + +### Notable Changes + +- Feature: Advanced Workflow Filters [@shamoon](https://github.com/shamoon) ([#11029](https://github.com/paperless-ngx/paperless-ngx/pull/11029)) +- Feature: Nested Tags [@shamoon](https://github.com/shamoon) ([#10833](https://github.com/paperless-ngx/paperless-ngx/pull/10833)) + +### Features / Enhancements + +- docker(deps): bump astral-sh/uv from 0.9.2-python3.12-bookworm-slim to 0.9.4-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#11091](https://github.com/paperless-ngx/paperless-ngx/pull/11091)) +- Enhancement: use friendly file names when emailing documents [@JanKleine](https://github.com/JanKleine) ([#11055](https://github.com/paperless-ngx/paperless-ngx/pull/11055)) +- Feature: Advanced Workflow Filters [@shamoon](https://github.com/shamoon) ([#11029](https://github.com/paperless-ngx/paperless-ngx/pull/11029)) +- docker(deps): Bump astral-sh/uv from 0.8.22-python3.12-bookworm-slim to 0.9.2-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#11052](https://github.com/paperless-ngx/paperless-ngx/pull/11052)) +- Feature: add support for emailing multiple documents [@JanKleine](https://github.com/JanKleine) ([#10666](https://github.com/paperless-ngx/paperless-ngx/pull/10666)) +- Enhancement: ignore same files in sanity checker as consumer [@shamoon](https://github.com/shamoon) ([#10999](https://github.com/paperless-ngx/paperless-ngx/pull/10999)) +- Enhancement: open color picker on swatch button click [@shamoon](https://github.com/shamoon) ([#10994](https://github.com/paperless-ngx/paperless-ngx/pull/10994)) +- Performance: Cache django-guardian permissions when counting documents [@Merinorus](https://github.com/Merinorus) ([#10657](https://github.com/paperless-ngx/paperless-ngx/pull/10657)) +- Tweakhancement: reorganize some list \& bulk editing buttons [@shamoon](https://github.com/shamoon) ([#10944](https://github.com/paperless-ngx/paperless-ngx/pull/10944)) +- Enhancement: support workflow path matching of barcode-split documents [@DerRockWolf](https://github.com/DerRockWolf) ([#10723](https://github.com/paperless-ngx/paperless-ngx/pull/10723)) +- Feature: processed mail UI [@shamoon](https://github.com/shamoon) ([#10866](https://github.com/paperless-ngx/paperless-ngx/pull/10866)) +- Enhancement: support custom field values on post document [@shamoon](https://github.com/shamoon) ([#10859](https://github.com/paperless-ngx/paperless-ngx/pull/10859)) +- Feature: Nested Tags [@shamoon](https://github.com/shamoon) ([#10833](https://github.com/paperless-ngx/paperless-ngx/pull/10833)) +- Enhancement: long text custom field [@jojo2357](https://github.com/jojo2357) ([#10846](https://github.com/paperless-ngx/paperless-ngx/pull/10846)) +- Enhancement: Add print button [@mpaletti](https://github.com/mpaletti) ([#10626](https://github.com/paperless-ngx/paperless-ngx/pull/10626)) +- Enhancement: add storage path as workflow trigger filter @david-loe ([#10771](https://github.com/paperless-ngx/paperless-ngx/pull/10771)) +- Enhancement: jinja template support for workflow title assignment [@sidey79](https://github.com/sidey79) ([#10700](https://github.com/paperless-ngx/paperless-ngx/pull/10700)) +- Enhancement: Limit excessively long content length when computing suggestions [@Merinorus](https://github.com/Merinorus) ([#10656](https://github.com/paperless-ngx/paperless-ngx/pull/10656)) + +### Bug Fixes + +- Fix: remove obsolete warning for custom field value index [@shamoon](https://github.com/shamoon) ([#11083](https://github.com/paperless-ngx/paperless-ngx/pull/11083)) +- Fix: set min-height for drag-drop items container [@shamoon](https://github.com/shamoon) ([#11064](https://github.com/paperless-ngx/paperless-ngx/pull/11064)) +- Fix custom field query dropdown toggle corners [@shamoon](https://github.com/shamoon) ([#11028](https://github.com/paperless-ngx/paperless-ngx/pull/11028)) +- Fix: correct save hotkey action when no next document exists [@shamoon](https://github.com/shamoon) ([#11027](https://github.com/paperless-ngx/paperless-ngx/pull/11027)) +- Fix: require only change permissions for task dismissal, add frontend error handling [@shamoon](https://github.com/shamoon) ([#11023](https://github.com/paperless-ngx/paperless-ngx/pull/11023)) +- Chore(deps): Bulk upgrade backend dependencies [@stumpylog](https://github.com/stumpylog) ([#10971](https://github.com/paperless-ngx/paperless-ngx/pull/10971)) +- Chore: remove Codecov token from CI workflow [@shamoon](https://github.com/shamoon) ([#10941](https://github.com/paperless-ngx/paperless-ngx/pull/10941)) +- Fix: fix select option removal and pagination update [@shamoon](https://github.com/shamoon) ([#10933](https://github.com/paperless-ngx/paperless-ngx/pull/10933)) +- Fix: skip fuzzy matching for empty document content [@shamoon](https://github.com/shamoon) ([#10914](https://github.com/paperless-ngx/paperless-ngx/pull/10914)) +- Fix: add extra error handling to \_consume for file checks [@shamoon](https://github.com/shamoon) ([#10897](https://github.com/paperless-ngx/paperless-ngx/pull/10897)) +- Fix: restore str celery beat schedule filename [@shamoon](https://github.com/shamoon) ([#10893](https://github.com/paperless-ngx/paperless-ngx/pull/10893)) +- Fix: fix pdf editor hover rotate counterclockwise button [@shamoon](https://github.com/shamoon) ([#10848](https://github.com/paperless-ngx/paperless-ngx/pull/10848)) +- Fix: warp long words in toast content [@shamoon](https://github.com/shamoon) ([#10839](https://github.com/paperless-ngx/paperless-ngx/pull/10839)) +- Fix: fix error when bulk adding empty doc link custom fields [@shamoon](https://github.com/shamoon) ([#10832](https://github.com/paperless-ngx/paperless-ngx/pull/10832)) +- Fix: set match value for correspondents created by mail rule [@shamoon](https://github.com/shamoon) ([#10820](https://github.com/paperless-ngx/paperless-ngx/pull/10820)) + +### Maintenance + +- Chore(deps): Bump the actions group with 5 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10978](https://github.com/paperless-ngx/paperless-ngx/pull/10978)) +- Chore: remove Codecov token from CI workflow [@shamoon](https://github.com/shamoon) ([#10941](https://github.com/paperless-ngx/paperless-ngx/pull/10941)) + +### Dependencies + +
+29 changes + +- docker(deps): bump astral-sh/uv from 0.9.2-python3.12-bookworm-slim to 0.9.4-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#11091](https://github.com/paperless-ngx/paperless-ngx/pull/11091)) +- docker-compose(deps): Bump gotenberg/gotenberg from 8.23 to 8.24 in /docker/compose @[dependabot[bot]](https://github.com/apps/dependabot) ([#11050](https://github.com/paperless-ngx/paperless-ngx/pull/11050)) +- Chore(deps): Bump the small-changes group across 1 directory with 8 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11065](https://github.com/paperless-ngx/paperless-ngx/pull/11065)) +- docker(deps): Bump astral-sh/uv from 0.8.22-python3.12-bookworm-slim to 0.9.2-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#11052](https://github.com/paperless-ngx/paperless-ngx/pull/11052)) +- Chore(deps): Bump the actions group with 5 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10978](https://github.com/paperless-ngx/paperless-ngx/pull/10978)) +- Chore(deps): Bump uuid from 11.1.0 to 13.0.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10983](https://github.com/paperless-ngx/paperless-ngx/pull/10983)) +- Chore(deps-dev): Bump @playwright/test from 1.55.0 to 1.55.1 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10982](https://github.com/paperless-ngx/paperless-ngx/pull/10982)) +- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10981](https://github.com/paperless-ngx/paperless-ngx/pull/10981)) +- Chore(deps-dev): Bump webpack from 5.101.3 to 5.102.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10986](https://github.com/paperless-ngx/paperless-ngx/pull/10986)) +- Chore(deps-dev): Bump prettier-plugin-organize-imports from 4.2.0 to 4.3.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10985](https://github.com/paperless-ngx/paperless-ngx/pull/10985)) +- Chore(deps-dev): Bump the frontend-jest-dependencies group in /src-ui with 3 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10980](https://github.com/paperless-ngx/paperless-ngx/pull/10980)) +- Chore(deps-dev): Bump @types/node from 24.3.0 to 24.6.1 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10984](https://github.com/paperless-ngx/paperless-ngx/pull/10984)) +- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 21 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10979](https://github.com/paperless-ngx/paperless-ngx/pull/10979)) +- docker-compose(deps): Bump library/postgres from 17 to 18 in /docker/compose @[dependabot[bot]](https://github.com/apps/dependabot) ([#10965](https://github.com/paperless-ngx/paperless-ngx/pull/10965)) +- Chore(deps): Bump the major-versions group with 2 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10960](https://github.com/paperless-ngx/paperless-ngx/pull/10960)) +- Chore(deps): Bump types-colorama from 0.4.15.20240311 to 0.4.15.20250801 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10961](https://github.com/paperless-ngx/paperless-ngx/pull/10961)) +- Chore(deps): Bump django-guardian from 3.1.3 to 3.2.0 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10909](https://github.com/paperless-ngx/paperless-ngx/pull/10909)) +- Chore(deps): Bump django-soft-delete from 1.0.19 to 1.0.21 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10908](https://github.com/paperless-ngx/paperless-ngx/pull/10908)) +- Chore(deps): Bump whitenoise from 6.10.0 to 6.11.0 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10910](https://github.com/paperless-ngx/paperless-ngx/pull/10910)) +- Chore(deps): Bump django-cors-headers from 4.8.0 to 4.9.0 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10907](https://github.com/paperless-ngx/paperless-ngx/pull/10907)) +- docker(deps): bump astral-sh/uv from 0.8.17-python3.12-bookworm-slim to 0.8.19-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#10906](https://github.com/paperless-ngx/paperless-ngx/pull/10906)) +- docker(deps): Bump astral-sh/uv from 0.8.15-python3.12-bookworm-slim to 0.8.17-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#10864](https://github.com/paperless-ngx/paperless-ngx/pull/10864)) +- Chore(deps): Bump the small-changes group across 1 directory with 3 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10880](https://github.com/paperless-ngx/paperless-ngx/pull/10880)) +- Chore(deps): Bump django-guardian from 3.1.2 to 3.1.3 in the django group @[dependabot[bot]](https://github.com/apps/dependabot) ([#10863](https://github.com/paperless-ngx/paperless-ngx/pull/10863)) +- Chore(deps): Bump pytest-cov from 6.2.1 to 7.0.0 in the development group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#10822](https://github.com/paperless-ngx/paperless-ngx/pull/10822)) +- Chore(deps): Bump the django group with 4 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10811](https://github.com/paperless-ngx/paperless-ngx/pull/10811)) +- docker-compose(deps): Bump gotenberg/gotenberg from 8.22 to 8.23 in /docker/compose @[dependabot[bot]](https://github.com/apps/dependabot) ([#10812](https://github.com/paperless-ngx/paperless-ngx/pull/10812)) +- Chore(deps): Bump the small-changes group across 1 directory with 8 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10821](https://github.com/paperless-ngx/paperless-ngx/pull/10821)) +- docker(deps): Bump astral-sh/uv from 0.8.13-python3.12-bookworm-slim to 0.8.15-python3.12-bookworm-slim @[dependabot[bot]](https://github.com/apps/dependabot) ([#10810](https://github.com/paperless-ngx/paperless-ngx/pull/10810)) +
+ +### All App Changes + +
+51 changes + +- Tweak: improve tag parent validation error handling [@shamoon](https://github.com/shamoon) ([#11096](https://github.com/paperless-ngx/paperless-ngx/pull/11096)) +- Fix: remove obsolete warning for custom field value index [@shamoon](https://github.com/shamoon) ([#11083](https://github.com/paperless-ngx/paperless-ngx/pull/11083)) +- Chore(deps): Bump the small-changes group across 1 directory with 8 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#11065](https://github.com/paperless-ngx/paperless-ngx/pull/11065)) +- Enhancement: use friendly file names when emailing documents [@JanKleine](https://github.com/JanKleine) ([#11055](https://github.com/paperless-ngx/paperless-ngx/pull/11055)) +- Fix: set min-height for drag-drop items container [@shamoon](https://github.com/shamoon) ([#11064](https://github.com/paperless-ngx/paperless-ngx/pull/11064)) +- Feature: Advanced Workflow Filters [@shamoon](https://github.com/shamoon) ([#11029](https://github.com/paperless-ngx/paperless-ngx/pull/11029)) +- Feature: add support for emailing multiple documents [@JanKleine](https://github.com/JanKleine) ([#10666](https://github.com/paperless-ngx/paperless-ngx/pull/10666)) +- Fix custom field query dropdown toggle corners [@shamoon](https://github.com/shamoon) ([#11028](https://github.com/paperless-ngx/paperless-ngx/pull/11028)) +- Fix: correct save hotkey action when no next document exists [@shamoon](https://github.com/shamoon) ([#11027](https://github.com/paperless-ngx/paperless-ngx/pull/11027)) +- Fix: require only change permissions for task dismissal, add frontend error handling [@shamoon](https://github.com/shamoon) ([#11023](https://github.com/paperless-ngx/paperless-ngx/pull/11023)) +- Enhancement: ignore same files in sanity checker as consumer [@shamoon](https://github.com/shamoon) ([#10999](https://github.com/paperless-ngx/paperless-ngx/pull/10999)) +- Enhancement: open color picker on swatch button click [@shamoon](https://github.com/shamoon) ([#10994](https://github.com/paperless-ngx/paperless-ngx/pull/10994)) +- Chore(deps): Bump uuid from 11.1.0 to 13.0.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10983](https://github.com/paperless-ngx/paperless-ngx/pull/10983)) +- Chore(deps-dev): Bump @playwright/test from 1.55.0 to 1.55.1 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10982](https://github.com/paperless-ngx/paperless-ngx/pull/10982)) +- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10981](https://github.com/paperless-ngx/paperless-ngx/pull/10981)) +- Chore(deps-dev): Bump webpack from 5.101.3 to 5.102.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10986](https://github.com/paperless-ngx/paperless-ngx/pull/10986)) +- Chore(deps-dev): Bump prettier-plugin-organize-imports from 4.2.0 to 4.3.0 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10985](https://github.com/paperless-ngx/paperless-ngx/pull/10985)) +- Chore(deps-dev): Bump the frontend-jest-dependencies group in /src-ui with 3 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10980](https://github.com/paperless-ngx/paperless-ngx/pull/10980)) +- Chore(deps-dev): Bump @types/node from 24.3.0 to 24.6.1 in /src-ui @[dependabot[bot]](https://github.com/apps/dependabot) ([#10984](https://github.com/paperless-ngx/paperless-ngx/pull/10984)) +- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 21 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10979](https://github.com/paperless-ngx/paperless-ngx/pull/10979)) +- Performance: Cache django-guardian permissions when counting documents [@Merinorus](https://github.com/Merinorus) ([#10657](https://github.com/paperless-ngx/paperless-ngx/pull/10657)) +- Chore(deps): Bulk upgrade backend dependencies [@stumpylog](https://github.com/stumpylog) ([#10971](https://github.com/paperless-ngx/paperless-ngx/pull/10971)) +- Chore(deps): Bump the major-versions group with 2 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10960](https://github.com/paperless-ngx/paperless-ngx/pull/10960)) +- Chore(deps): Bump types-colorama from 0.4.15.20240311 to 0.4.15.20250801 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10961](https://github.com/paperless-ngx/paperless-ngx/pull/10961)) +- Chore(deps): Bump django-guardian from 3.1.3 to 3.2.0 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10909](https://github.com/paperless-ngx/paperless-ngx/pull/10909)) +- Chore(deps): Bump django-soft-delete from 1.0.19 to 1.0.21 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10908](https://github.com/paperless-ngx/paperless-ngx/pull/10908)) +- Chore(deps): Bump whitenoise from 6.10.0 to 6.11.0 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10910](https://github.com/paperless-ngx/paperless-ngx/pull/10910)) +- Tweakhancement: reorganize some list \& bulk editing buttons [@shamoon](https://github.com/shamoon) ([#10944](https://github.com/paperless-ngx/paperless-ngx/pull/10944)) +- Chore(deps): Bump django-cors-headers from 4.8.0 to 4.9.0 @[dependabot[bot]](https://github.com/apps/dependabot) ([#10907](https://github.com/paperless-ngx/paperless-ngx/pull/10907)) +- Fix: fix select option removal and pagination update [@shamoon](https://github.com/shamoon) ([#10933](https://github.com/paperless-ngx/paperless-ngx/pull/10933)) +- Enhancement: support workflow path matching of barcode-split documents [@DerRockWolf](https://github.com/DerRockWolf) ([#10723](https://github.com/paperless-ngx/paperless-ngx/pull/10723)) +- Fix: skip fuzzy matching for empty document content [@shamoon](https://github.com/shamoon) ([#10914](https://github.com/paperless-ngx/paperless-ngx/pull/10914)) +- Feature: processed mail UI [@shamoon](https://github.com/shamoon) ([#10866](https://github.com/paperless-ngx/paperless-ngx/pull/10866)) +- Fix: add extra error handling to \_consume for file checks [@shamoon](https://github.com/shamoon) ([#10897](https://github.com/paperless-ngx/paperless-ngx/pull/10897)) +- Fix: restore str celery beat schedule filename [@shamoon](https://github.com/shamoon) ([#10893](https://github.com/paperless-ngx/paperless-ngx/pull/10893)) +- Enhancement: support custom field values on post document [@shamoon](https://github.com/shamoon) ([#10859](https://github.com/paperless-ngx/paperless-ngx/pull/10859)) +- Feature: Nested Tags [@shamoon](https://github.com/shamoon) ([#10833](https://github.com/paperless-ngx/paperless-ngx/pull/10833)) +- Chore(deps): Bump the small-changes group across 1 directory with 3 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10880](https://github.com/paperless-ngx/paperless-ngx/pull/10880)) +- Chore(deps): Bump django-guardian from 3.1.2 to 3.1.3 in the django group @[dependabot[bot]](https://github.com/apps/dependabot) ([#10863](https://github.com/paperless-ngx/paperless-ngx/pull/10863)) +- Enhancement: long text custom field [@jojo2357](https://github.com/jojo2357) ([#10846](https://github.com/paperless-ngx/paperless-ngx/pull/10846)) +- Fix: fix pdf editor hover rotate counterclockwise button [@shamoon](https://github.com/shamoon) ([#10848](https://github.com/paperless-ngx/paperless-ngx/pull/10848)) +- Fix: warp long words in toast content [@shamoon](https://github.com/shamoon) ([#10839](https://github.com/paperless-ngx/paperless-ngx/pull/10839)) +- Fix: fix error when bulk adding empty doc link custom fields [@shamoon](https://github.com/shamoon) ([#10832](https://github.com/paperless-ngx/paperless-ngx/pull/10832)) +- Enhancement: Add print button [@mpaletti](https://github.com/mpaletti) ([#10626](https://github.com/paperless-ngx/paperless-ngx/pull/10626)) +- Enhancement: add storage path as workflow trigger filter @david-loe ([#10771](https://github.com/paperless-ngx/paperless-ngx/pull/10771)) +- Enhancement: jinja template support for workflow title assignment [@sidey79](https://github.com/sidey79) ([#10700](https://github.com/paperless-ngx/paperless-ngx/pull/10700)) +- Chore(deps): Bump pytest-cov from 6.2.1 to 7.0.0 in the development group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#10822](https://github.com/paperless-ngx/paperless-ngx/pull/10822)) +- Chore(deps): Bump the django group with 4 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10811](https://github.com/paperless-ngx/paperless-ngx/pull/10811)) +- Enhancement: Limit excessively long content length when computing suggestions [@Merinorus](https://github.com/Merinorus) ([#10656](https://github.com/paperless-ngx/paperless-ngx/pull/10656)) +- Chore(deps): Bump the small-changes group across 1 directory with 8 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#10821](https://github.com/paperless-ngx/paperless-ngx/pull/10821)) +- Fix: set match value for correspondents created by mail rule [@shamoon](https://github.com/shamoon) ([#10820](https://github.com/paperless-ngx/paperless-ngx/pull/10820)) +
+ ## paperless-ngx 2.18.4 ### Features / Enhancements diff --git a/docs/configuration.md b/docs/configuration.md index fdc0097dd..32d56408f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -170,11 +170,18 @@ Available options are `postgresql` and `mariadb`. !!! note - A small pool is typically sufficient — for example, a size of 4. - Make sure your PostgreSQL server's max_connections setting is large enough to handle: - ```(Paperless workers + Celery workers) × pool size + safety margin``` - For example, with 4 Paperless workers and 2 Celery workers, and a pool size of 4: - (4 + 2) × 4 + 10 = 34 connections required. + A pool of 8-10 connections per worker is typically sufficient. + If you encounter error messages such as `couldn't get a connection` + or database connection timeouts, you probably need to increase the pool size. + + !!! warning + Make sure your PostgreSQL `max_connections` setting is large enough to handle the connection pools: + `(NB_PAPERLESS_WORKERS + NB_CELERY_WORKERS) × POOL_SIZE + SAFETY_MARGIN`. For example, with + 4 Paperless workers and 2 Celery workers, and a pool size of 8:``(4 + 2) × 8 + 10 = 58`, + so `max_connections = 60` (or even more) is appropriate. + + This assumes only Paperless-ngx connects to your PostgreSQL instance. If you have other applications, + you should increase `max_connections` accordingly. #### [`PAPERLESS_DB_READ_CACHE_ENABLED=`](#PAPERLESS_DB_READ_CACHE_ENABLED) {#PAPERLESS_DB_READ_CACHE_ENABLED} @@ -184,9 +191,9 @@ Available options are `postgresql` and `mariadb`. !!! danger - **Do not modify the database outside the application while it is running.** - This includes actions such as restoring a backup, upgrading the database, or performing manual inserts. All external modifications must be done **only when the application is stopped**. - After making any such changes, you **must invalidate the DB read cache** using the `invalidate_cachalot` management command. + **Do not modify the database outside the application while it is running.** + This includes actions such as restoring a backup, upgrading the database, or performing manual inserts. All external modifications must be done **only when the application is stopped**. + After making any such changes, you **must invalidate the DB read cache** using the `invalidate_cachalot` management command. #### [`PAPERLESS_READ_CACHE_TTL=`](#PAPERLESS_READ_CACHE_TTL) {#PAPERLESS_READ_CACHE_TTL} @@ -196,7 +203,7 @@ Available options are `postgresql` and `mariadb`. !!! warning - A high TTL increases memory usage over time. Memory may be used until end of TTL, even if the cache is invalidated with the `invalidate_cachalot` command. + A high TTL increases memory usage over time. Memory may be used until end of TTL, even if the cache is invalidated with the `invalidate_cachalot` command. In case of an out-of-memory (OOM) situation, Redis may stop accepting new data — including cache entries, scheduled tasks, and documents to consume. If your system has limited RAM, consider configuring a dedicated Redis instance for the read cache, with a memory limit and the eviction policy set to `allkeys-lru`. @@ -652,7 +659,7 @@ system. See the corresponding : Sync groups from the third party authentication system (e.g. OIDC) to Paperless-ngx. When enabled, users will be added or removed from groups based on their group membership in the third party authentication system. Groups must already exist in Paperless-ngx and have the same name as in the third party authentication system. Groups are updated upon logging in via the third party authentication system, see the corresponding [django-allauth documentation](https://docs.allauth.org/en/dev/socialaccount/signals.html). -: In order to pass groups from the authentication system you will need to update your [PAPERLESS_SOCIALACCOUNT_PROVIDERS](#PAPERLESS_SOCIALACCOUNT_PROVIDERS) setting by adding a top-level "SCOPES" setting which includes "groups", e.g.: +: In order to pass groups from the authentication system you will need to update your [PAPERLESS_SOCIALACCOUNT_PROVIDERS](#PAPERLESS_SOCIALACCOUNT_PROVIDERS) setting by adding a top-level "SCOPES" setting which includes "groups", or the custom groups claim configured in [`PAPERLESS_SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM`](#PAPERLESS_SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM) e.g.: ```json {"openid_connect":{"SCOPE": ["openid","profile","email","groups"]... @@ -660,6 +667,12 @@ system. See the corresponding Defaults to False +#### [`PAPERLESS_SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM=`](#PAPERLESS_SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM) {#PAPERLESS_SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM} + +: Allows you to define a custom groups claim. See [PAPERLESS_SOCIAL_ACCOUNT_SYNC_GROUPS](#PAPERLESS_SOCIAL_ACCOUNT_SYNC_GROUPS) which is required for this setting to take effect. + + Defaults to "groups" + #### [`PAPERLESS_SOCIAL_ACCOUNT_DEFAULT_GROUPS=`](#PAPERLESS_SOCIAL_ACCOUNT_DEFAULT_GROUPS) {#PAPERLESS_SOCIAL_ACCOUNT_DEFAULT_GROUPS} : A list of group names that users who signup via social accounts will be added to upon signup. Groups listed here must already exist. @@ -980,21 +993,10 @@ paperless will process in parallel on a single document. process very large documents faster, use a higher thread per worker count. - The default is a balance between the two, according to your CPU core - count, with a slight favor towards threads per worker: - - | CPU core count | Workers | Threads | - | -------------- | ------- | ------- | - | > 1 | > 1 | > 1 | - | > 2 | > 2 | > 1 | - | > 4 | > 2 | > 2 | - | > 6 | > 2 | > 3 | - | > 8 | > 2 | > 4 | - | > 12 | > 3 | > 4 | - | > 16 | > 4 | > 4 | - - If you only specify PAPERLESS_TASK_WORKERS, paperless will adjust - PAPERLESS_THREADS_PER_WORKER automatically. + If unset, paperless uses `max(floor(cpu_count / PAPERLESS_TASK_WORKERS), 1)` + threads per worker. The idea behind this is that as long as there are enough cores, + the total number of threads should less than or equal to the total number of (logical) + CPU cores. #### [`PAPERLESS_WORKER_TIMEOUT=`](#PAPERLESS_WORKER_TIMEOUT) {#PAPERLESS_WORKER_TIMEOUT} @@ -1018,7 +1020,7 @@ still perform some basic text pre-processing before matching. : See also `PAPERLESS_NLTK_DIR`. - Defaults to 1. + Defaults to true, enabling the feature. #### [`PAPERLESS_DATE_PARSER_LANGUAGES=`](#PAPERLESS_DATE_PARSER_LANGUAGES) {#PAPERLESS_DATE_PARSER_LANGUAGES} @@ -1065,17 +1067,27 @@ should be a valid crontab(5) expression describing when to run. #### [`PAPERLESS_SANITY_TASK_CRON=`](#PAPERLESS_SANITY_TASK_CRON) {#PAPERLESS_SANITY_TASK_CRON} -: Configures the scheduled sanity checker frequency. +: Configures the scheduled sanity checker frequency. The value should be a +valid crontab(5) expression describing when to run. : If set to the string "disable", the sanity checker will not run automatically. Defaults to `30 0 * * sun` or Sunday at 30 minutes past midnight. +#### [`PAPERLESS_WORKFLOW_SCHEDULED_TASK_CRON=`](#PAPERLESS_WORKFLOW_SCHEDULED_TASK_CRON) {#PAPERLESS_WORKFLOW_SCHEDULED_TASK_CRON} + +: Configures the scheduled workflow check frequency. The value should be a +valid crontab(5) expression describing when to run. + +: If set to the string "disable", scheduled workflows will not run. + + Defaults to `5 */1 * * *` or every hour at 5 minutes past the hour. + #### [`PAPERLESS_ENABLE_COMPRESSION=`](#PAPERLESS_ENABLE_COMPRESSION) {#PAPERLESS_ENABLE_COMPRESSION} : Enables compression of the responses from the webserver. -: Defaults to 1, enabling compression. +: Defaults to true, enabling compression. !!! note @@ -1140,8 +1152,9 @@ via the consumption directory, you can disable the consumer to save resources. #### [`PAPERLESS_CONSUMER_DELETE_DUPLICATES=`](#PAPERLESS_CONSUMER_DELETE_DUPLICATES) {#PAPERLESS_CONSUMER_DELETE_DUPLICATES} -: When the consumer detects a duplicate document, it will not touch -the original document. This default behavior can be changed here. +: As of version 3.0 Paperless-ngx allows duplicate documents to be consumed by default, _except_ when +this setting is enabled. When enabled, Paperless will check if a document with the same hash already +exists in the system and delete the duplicate file from the consumption directory without consuming it. Defaults to false. @@ -1169,21 +1182,45 @@ don't exist yet. #### [`PAPERLESS_CONSUMER_IGNORE_PATTERNS=`](#PAPERLESS_CONSUMER_IGNORE_PATTERNS) {#PAPERLESS_CONSUMER_IGNORE_PATTERNS} -: By default, paperless ignores certain files and folders in the -consumption directory, such as system files created by the Mac OS -or hidden folders some tools use to store data. +: Additional regex patterns for files to ignore in the consumption directory. Patterns are matched against filenames only (not full paths) +using Python's `re.match()`, which anchors at the start of the filename. - This can be adjusted by configuring a custom json array with - patterns to exclude. + See the [watchfiles documentation](https://watchfiles.helpmanual.io/api/filters/#watchfiles.BaseFilter.ignore_entity_patterns) - For example, `.DS_STORE/*` will ignore any files found in a folder - named `.DS_STORE`, including `.DS_STORE/bar.pdf` and `foo/.DS_STORE/bar.pdf` + This setting is for additional patterns beyond the built-in defaults. Common system files and directories are already ignored automatically. + The patterns will be compiled via Python's standard `re` module. - A pattern like `._*` will ignore anything starting with `._`, including: - `._foo.pdf` and `._bar/foo.pdf` + Example custom patterns: - Defaults to - `[".DS_Store", ".DS_STORE", "._*", ".stfolder/*", ".stversions/*", ".localized/*", "desktop.ini", "@eaDir/*", "Thumbs.db"]`. + ```json + ["^temp_", "\\.bak$", "^~"] + ``` + + This would ignore: + + - Files starting with `temp_` (e.g., `temp_scan.pdf`) + - Files ending with `.bak` (e.g., `document.pdf.bak`) + - Files starting with `~` (e.g., `~$document.docx`) + + Defaults to `[]` (empty list, uses only built-in defaults). + + The default ignores are `[.DS_Store, .DS_STORE, ._*, desktop.ini, Thumbs.db]` and cannot be overridden. + +#### [`PAPERLESS_CONSUMER_IGNORE_DIRS=`](#PAPERLESS_CONSUMER_IGNORE_DIRS) {#PAPERLESS_CONSUMER_IGNORE_DIRS} + +: Additional directory names to ignore in the consumption directory. Directories matching these names (and all their contents) will be skipped. + + This setting is for additional directories beyond the built-in defaults. Matching is done by directory name only, not full path. + + Example: + + ```json + ["temp", "incoming", ".hidden"] + ``` + + Defaults to `[]` (empty list, uses only built-in defaults). + + The default ignores are `[.stfolder, .stversions, .localized, @eaDir, .Spotlight-V100, .Trashes, __MACOSX]` and cannot be overridden. #### [`PAPERLESS_CONSUMER_BARCODE_SCANNER=`](#PAPERLESS_CONSUMER_BARCODE_SCANNER) {#PAPERLESS_CONSUMER_BARCODE_SCANNER} @@ -1282,6 +1319,25 @@ within your documents. Defaults to false. +#### [`PAPERLESS_CONSUMER_POLLING_INTERVAL=`](#PAPERLESS_CONSUMER_POLLING_INTERVAL) {#PAPERLESS_CONSUMER_POLLING_INTERVAL} + +: Configures how the consumer detects new files in the consumption directory. + + When set to `0` (default), paperless uses native filesystem notifications for efficient, immediate detection of new files. + + When set to a positive number, paperless polls the consumption directory at that interval in seconds. Use polling for network filesystems (NFS, SMB/CIFS) where native notifications may not work reliably. + + Defaults to 0. + +#### [`PAPERLESS_CONSUMER_STABILITY_DELAY=`](#PAPERLESS_CONSUMER_STABILITY_DELAY) {#PAPERLESS_CONSUMER_STABILITY_DELAY} + +: Sets the time in seconds that a file must remain unchanged (same size and modification time) before paperless will begin consuming it. + + Increase this value if you experience issues with files being consumed before they are fully written, particularly on slower network storage or + with certain scanner quirks + + Defaults to 5.0 seconds. + ## Workflow webhooks #### [`PAPERLESS_WEBHOOKS_ALLOWED_SCHEMES=`](#PAPERLESS_WEBHOOKS_ALLOWED_SCHEMES) {#PAPERLESS_WEBHOOKS_ALLOWED_SCHEMES} @@ -1306,49 +1362,6 @@ ports. Defaults to true, which allows internal requests. -### Polling {#polling} - -#### [`PAPERLESS_CONSUMER_POLLING=`](#PAPERLESS_CONSUMER_POLLING) {#PAPERLESS_CONSUMER_POLLING} - -: If paperless won't find documents added to your consume folder, it -might not be able to automatically detect filesystem changes. In -that case, specify a polling interval in seconds here, which will -then cause paperless to periodically check your consumption -directory for changes. This will also disable listening for file -system changes with `inotify`. - - Defaults to 0, which disables polling and uses filesystem - notifications. - -#### [`PAPERLESS_CONSUMER_POLLING_RETRY_COUNT=`](#PAPERLESS_CONSUMER_POLLING_RETRY_COUNT) {#PAPERLESS_CONSUMER_POLLING_RETRY_COUNT} - -: If consumer polling is enabled, sets the maximum number of times -paperless will check for a file to remain unmodified. If a file's -modification time and size are identical for two consecutive checks, it -will be consumed. - - Defaults to 5. - -#### [`PAPERLESS_CONSUMER_POLLING_DELAY=`](#PAPERLESS_CONSUMER_POLLING_DELAY) {#PAPERLESS_CONSUMER_POLLING_DELAY} - -: If consumer polling is enabled, sets the delay in seconds between -each check (above) paperless will do while waiting for a file to -remain unmodified. - - Defaults to 5. - -### iNotify {#inotify} - -#### [`PAPERLESS_CONSUMER_INOTIFY_DELAY=`](#PAPERLESS_CONSUMER_INOTIFY_DELAY) {#PAPERLESS_CONSUMER_INOTIFY_DELAY} - -: Sets the time in seconds the consumer will wait for additional -events from inotify before the consumer will consider a file ready -and begin consumption. Certain scanners or network setups may -generate multiple events for a single file, leading to multiple -consumers working on the same file. Configure this to prevent that. - - Defaults to 0.5 seconds. - ## Incoming Mail {#incoming_mail} ### Email OAuth {#email_oauth} @@ -1544,6 +1557,20 @@ assigns or creates tags if a properly formatted barcode is detected. Please refer to the Python regex documentation for more information. +#### [`PAPERLESS_CONSUMER_TAG_BARCODE_SPLIT=`](#PAPERLESS_CONSUMER_TAG_BARCODE_SPLIT) {#PAPERLESS_CONSUMER_TAG_BARCODE_SPLIT} + +: Enables splitting of documents on tag barcodes, similar to how ASN barcodes work. + + When enabled, documents will be split into separate PDFs at pages containing + tag barcodes that match the configured `PAPERLESS_CONSUMER_TAG_BARCODE_MAPPING` + patterns. The page with the tag barcode will be retained in the new document. + + Each split document will have the detected tags assigned to it. + + This only has an effect if `PAPERLESS_CONSUMER_ENABLE_TAG_BARCODE` is also enabled. + + Defaults to false. + ## Audit Trail #### [`PAPERLESS_AUDIT_LOG_ENABLED=`](#PAPERLESS_AUDIT_LOG_ENABLED) {#PAPERLESS_AUDIT_LOG_ENABLED} @@ -1604,6 +1631,16 @@ processing. This only has an effect if Defaults to `0 1 * * *`, once per day. +## Share links + +#### [`PAPERLESS_SHARE_LINK_BUNDLE_CLEANUP_CRON=`](#PAPERLESS_SHARE_LINK_BUNDLE_CLEANUP_CRON) {#PAPERLESS_SHARE_LINK_BUNDLE_CLEANUP_CRON} + +: Controls how often Paperless-ngx removes expired share link bundles (and their generated ZIP archives). + +: If set to the string "disable", expired bundles are not cleaned up automatically. + + Defaults to `0 2 * * *`, once per day at 02:00. + ## Binaries There are a few external software packages that Paperless expects to @@ -1759,6 +1796,11 @@ started by the container. : Path to an image file in the /media/logo directory, must include 'logo', e.g. `/logo/Atari_logo.svg` +!!! note + + The logo file will be viewable by anyone with access to the Paperless instance login page, + so consider your choice of logo carefully and removing exif data from images before uploading. + #### [`PAPERLESS_ENABLE_UPDATE_CHECK=`](#PAPERLESS_ENABLE_UPDATE_CHECK) {#PAPERLESS_ENABLE_UPDATE_CHECK} !!! note @@ -1800,3 +1842,87 @@ password. All of these options come from their similarly-named [Django settings] #### [`PAPERLESS_EMAIL_USE_SSL=`](#PAPERLESS_EMAIL_USE_SSL) {#PAPERLESS_EMAIL_USE_SSL} : Defaults to false. + +## Remote OCR + +#### [`PAPERLESS_REMOTE_OCR_ENGINE=`](#PAPERLESS_REMOTE_OCR_ENGINE) {#PAPERLESS_REMOTE_OCR_ENGINE} + +: The remote OCR engine to use. Currently only Azure AI is supported as "azureai". + + Defaults to None, which disables remote OCR. + +#### [`PAPERLESS_REMOTE_OCR_API_KEY=`](#PAPERLESS_REMOTE_OCR_API_KEY) {#PAPERLESS_REMOTE_OCR_API_KEY} + +: The API key to use for the remote OCR engine. + + Defaults to None. + +#### [`PAPERLESS_REMOTE_OCR_ENDPOINT=`](#PAPERLESS_REMOTE_OCR_ENDPOINT) {#PAPERLESS_REMOTE_OCR_ENDPOINT} + +: The endpoint to use for the remote OCR engine. This is required for Azure AI. + + Defaults to None. + +## AI {#ai} + +#### [`PAPERLESS_AI_ENABLED=`](#PAPERLESS_AI_ENABLED) {#PAPERLESS_AI_ENABLED} + +: Enables the AI features in Paperless. This includes the AI-based +suggestions. This setting is required to be set to true in order to use the AI features. + + Defaults to false. + +#### [`PAPERLESS_AI_LLM_EMBEDDING_BACKEND=`](#PAPERLESS_AI_LLM_EMBEDDING_BACKEND) {#PAPERLESS_AI_LLM_EMBEDDING_BACKEND} + +: The embedding backend to use for RAG. This can be either "openai" or "huggingface". + + Defaults to None. + +#### [`PAPERLESS_AI_LLM_EMBEDDING_MODEL=`](#PAPERLESS_AI_LLM_EMBEDDING_MODEL) {#PAPERLESS_AI_LLM_EMBEDDING_MODEL} + +: The model to use for the embedding backend for RAG. This can be set to any of the embedding models supported by the current embedding backend. If not supplied, defaults to "text-embedding-3-small" for OpenAI and "sentence-transformers/all-MiniLM-L6-v2" for Huggingface. + + Defaults to None. + +#### [`PAPERLESS_AI_LLM_BACKEND=`](#PAPERLESS_AI_LLM_BACKEND) {#PAPERLESS_AI_LLM_BACKEND} + +: The AI backend to use. This can be either "openai" or "ollama". If set to "ollama", the AI +features will be run locally on your machine. If set to "openai", the AI features will be run +using the OpenAI API. This setting is required to be set to use the AI features. + + Defaults to None. + + !!! note + + The OpenAI API is a paid service. You will need to set up an OpenAI account and + will be charged for usage incurred by Paperless-ngx features and your document data + will (of course) be sent to the OpenAI API. Paperless-ngx does not endorse the use of the + OpenAI API in any way. + + Refer to the OpenAI terms of service, and use at your own risk. + +#### [`PAPERLESS_AI_LLM_MODEL=`](#PAPERLESS_AI_LLM_MODEL) {#PAPERLESS_AI_LLM_MODEL} + +: The model to use for the AI backend, i.e. "gpt-3.5-turbo", "gpt-4" or any of the models supported by the +current backend. If not supplied, defaults to "gpt-3.5-turbo" for OpenAI and "llama3.1" for Ollama. + + Defaults to None. + +#### [`PAPERLESS_AI_LLM_API_KEY=`](#PAPERLESS_AI_LLM_API_KEY) {#PAPERLESS_AI_LLM_API_KEY} + +: The API key to use for the AI backend. This is required for the OpenAI backend (optional for others). + + Defaults to None. + +#### [`PAPERLESS_AI_LLM_ENDPOINT=`](#PAPERLESS_AI_LLM_ENDPOINT) {#PAPERLESS_AI_LLM_ENDPOINT} + +: The endpoint / url to use for the AI backend. This is required for the Ollama backend (optional for others). + + Defaults to None. + +#### [`PAPERLESS_AI_LLM_INDEX_TASK_CRON=`](#PAPERLESS_AI_LLM_INDEX_TASK_CRON) {#PAPERLESS_AI_LLM_INDEX_TASK_CRON} + +: Configures the schedule to update the AI embeddings of text content and metadata for all documents. Only performed if +AI is enabled and the LLM embedding backend is set. + + Defaults to `10 2 * * *`, once per day. diff --git a/docs/development.md b/docs/development.md index 71ca4d930..9f14f1d9e 100644 --- a/docs/development.md +++ b/docs/development.md @@ -81,7 +81,7 @@ first-time setup. 5. Install pre-commit hooks: ```bash - $ uv run pre-commit install + $ uv run prek install ``` 6. Apply migrations and create a superuser (also can be done via the web UI) for your development instance: @@ -175,7 +175,7 @@ To add a new development package `uv add --dev ` ## Front end development -The front end is built using AngularJS. In order to get started, you need Node.js (version 14.15+) and +The front end is built using AngularJS. In order to get started, you need Node.js (version 24+) and `pnpm`. !!! note @@ -217,7 +217,7 @@ commit. See [above](#code-formatting-with-pre-commit-hooks) for installation ins command such as ```bash -$ git ls-files -- '*.ts' | xargs pre-commit run prettier --files +$ git ls-files -- '*.ts' | xargs prek run prettier --files ``` Front end testing uses Jest and Playwright. Unit tests and e2e tests, @@ -338,13 +338,13 @@ LANGUAGES = [ ## Building the documentation -The documentation is built using material-mkdocs, see their [documentation](https://squidfunk.github.io/mkdocs-material/reference/). +The documentation is built using Zensical, see their [documentation](https://zensical.org/docs/). If you want to build the documentation locally, this is how you do it: 1. Build the documentation ```bash - $ uv run mkdocs build --config-file mkdocs.yml + $ uv run zensical build ``` _alternatively..._ @@ -355,7 +355,7 @@ If you want to build the documentation locally, this is how you do it: something. ```bash - $ uv run mkdocs serve + $ uv run zensical serve ``` ## Building the Docker image @@ -481,3 +481,147 @@ To get started: 5. The project is ready for debugging, start either run the fullstack debug or individual debug processes. Yo spin up the project without debugging run the task **Project Start: Run all Services** + +## Developing Date Parser Plugins + +Paperless-ngx uses a plugin system for date parsing, allowing you to extend or replace the default date parsing behavior. Plugins are discovered using [Python entry points](https://setuptools.pypa.io/en/latest/userguide/entry_point.html). + +### Creating a Date Parser Plugin + +To create a custom date parser plugin, you need to: + +1. Create a class that inherits from `DateParserPluginBase` +2. Implement the required abstract method +3. Register your plugin via an entry point + +#### 1. Implementing the Parser Class + +Your parser must extend `documents.plugins.date_parsing.DateParserPluginBase` and implement the `parse` method: + +```python +from collections.abc import Iterator +import datetime + +from documents.plugins.date_parsing import DateParserPluginBase + + +class MyDateParserPlugin(DateParserPluginBase): + """ + Custom date parser implementation. + """ + + def parse(self, filename: str, content: str) -> Iterator[datetime.datetime]: + """ + Parse dates from the document's filename and content. + + Args: + filename: The original filename of the document + content: The extracted text content of the document + + Yields: + datetime.datetime: Valid datetime objects found in the document + """ + # Your parsing logic here + # Use self.config to access configuration settings + + # Example: parse dates from filename first + if self.config.filename_date_order: + # Your filename parsing logic + yield some_datetime + + # Then parse dates from content + # Your content parsing logic + yield another_datetime +``` + +#### 2. Configuration and Helper Methods + +Your parser instance is initialized with a `DateParserConfig` object accessible via `self.config`. This provides: + +- `languages: list[str]` - List of language codes for date parsing +- `timezone_str: str` - Timezone string for date localization +- `ignore_dates: set[datetime.date]` - Dates that should be filtered out +- `reference_time: datetime.datetime` - Current time for filtering future dates +- `filename_date_order: str | None` - Date order preference for filenames (e.g., "DMY", "MDY") +- `content_date_order: str` - Date order preference for content + +The base class provides two helper methods you can use: + +```python +def _parse_string( + self, + date_string: str, + date_order: str, +) -> datetime.datetime | None: + """ + Parse a single date string using dateparser with configured settings. + """ + +def _filter_date( + self, + date: datetime.datetime | None, +) -> datetime.datetime | None: + """ + Validate a parsed datetime against configured rules. + Filters out dates before 1900, future dates, and ignored dates. + """ +``` + +#### 3. Resource Management (Optional) + +If your plugin needs to acquire or release resources (database connections, API clients, etc.), override the context manager methods. Paperless-ngx will always use plugins as context managers, ensuring resources can be released even in the event of errors. + +#### 4. Registering Your Plugin + +Register your plugin using a setuptools entry point in your package's `pyproject.toml`: + +```toml +[project.entry-points."paperless_ngx.date_parsers"] +my_parser = "my_package.parsers:MyDateParserPlugin" +``` + +The entry point name (e.g., `"my_parser"`) is used for sorting when multiple plugins are found. Paperless-ngx will use the first plugin alphabetically by name if multiple plugins are discovered. + +### Plugin Discovery + +Paperless-ngx automatically discovers and loads date parser plugins at runtime. The discovery process: + +1. Queries the `paperless_ngx.date_parsers` entry point group +2. Validates that each plugin is a subclass of `DateParserPluginBase` +3. Sorts valid plugins alphabetically by entry point name +4. Uses the first valid plugin, or falls back to the default `RegexDateParserPlugin` if none are found + +If multiple plugins are installed, a warning is logged indicating which plugin was selected. + +### Example: Simple Date Parser + +Here's a minimal example that only looks for ISO 8601 dates: + +```python +import datetime +import re +from collections.abc import Iterator + +from documents.plugins.date_parsing.base import DateParserPluginBase + + +class ISODateParserPlugin(DateParserPluginBase): + """ + Parser that only matches ISO 8601 formatted dates (YYYY-MM-DD). + """ + + ISO_REGEX = re.compile(r"\b(\d{4}-\d{2}-\d{2})\b") + + def parse(self, filename: str, content: str) -> Iterator[datetime.datetime]: + # Combine filename and content for searching + text = f"{filename} {content}" + + for match in self.ISO_REGEX.finditer(text): + date_string = match.group(1) + # Use helper method to parse with configured timezone + date = self._parse_string(date_string, "YMD") + # Use helper method to validate the date + filtered_date = self._filter_date(date) + if filtered_date is not None: + yield filtered_date +``` diff --git a/docs/faq.md b/docs/faq.md index 7db8d9dd7..0ce862a22 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,3 +1,7 @@ +--- +title: FAQs +--- + # Frequently Asked Questions ## _What's the general plan for Paperless-ngx?_ @@ -63,8 +67,10 @@ elsewhere. Here are a couple notes about that. Paperless also supports various Office documents (.docx, .doc, odt, .ppt, .pptx, .odp, .xls, .xlsx, .ods). -Paperless-ngx determines the type of a file by inspecting its content. -The file extensions do not matter. +Paperless-ngx determines the type of a file by inspecting its content +rather than its file extensions. However, files processed via the +consumption directory will be rejected if they have a file extension that +not supported by any of the available parsers. ## _Will paperless-ngx run on Raspberry Pi?_ diff --git a/docs/index.md b/docs/index.md index c1c06eb2b..2e3a311df 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,3 +1,7 @@ +--- +title: Home +--- +
![image](assets/logo_full_black.svg#only-light){.index-logo} ![image](assets/logo_full_white.svg#only-dark){.index-logo} @@ -25,11 +29,13 @@ physical documents into a searchable online archive so you can keep, well, _less ## Features - **Organize and index** your scanned documents with tags, correspondents, types, and more. -- _Your_ data is stored locally on _your_ server and is never transmitted or shared in any way. +- _Your_ data is stored locally on _your_ server and is never transmitted or shared in any way, unless you explicitly choose to do so. - Performs **OCR** on your documents, adding searchable and selectable text, even to documents scanned with only images. -- Utilizes the open-source Tesseract engine to recognize more than 100 languages. + - Utilizes the open-source Tesseract engine to recognize more than 100 languages. + - _New!_ Supports remote OCR with Azure AI (opt-in). - Documents are saved as PDF/A format which is designed for long term storage, alongside the unaltered originals. - Uses machine-learning to automatically add tags, correspondents and document types to your documents. +- **New**: Paperless-ngx can now leverage AI (Large Language Models or LLMs) for document suggestions. This is an optional feature that can be enabled (and is disabled by default). - Supports PDF documents, images, plain text files, Office documents (Word, Excel, PowerPoint, and LibreOffice equivalents)[^1] and more. - Paperless stores your documents plain on disk. Filenames and folders are managed by paperless and their format can be configured freely with different configurations assigned to different documents. - **Beautiful, modern web application** that features: diff --git a/docs/migration.md b/docs/migration.md new file mode 100644 index 000000000..1c934e6df --- /dev/null +++ b/docs/migration.md @@ -0,0 +1,25 @@ +# v3 Migration Guide + +## Consumer Settings Changes + +The v3 consumer command uses a [different library](https://watchfiles.helpmanual.io/) to unify +the watching for new files in the consume directory. For the user, this removes several configuration options related to delays and retries +and replaces with a single unified setting. It also adjusts how the consumer ignore filtering happens, replaced `fnmatch` with `regex` and +separating the directory ignore from the file ignore. + +### Summary + +| Old Setting | New Setting | Notes | +| ------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | +| `CONSUMER_POLLING` | [`CONSUMER_POLLING_INTERVAL`](configuration.md#PAPERLESS_CONSUMER_POLLING_INTERVAL) | Renamed for clarity | +| `CONSUMER_INOTIFY_DELAY` | [`CONSUMER_STABILITY_DELAY`](configuration.md#PAPERLESS_CONSUMER_STABILITY_DELAY) | Unified for all modes | +| `CONSUMER_POLLING_DELAY` | _Removed_ | Use `CONSUMER_STABILITY_DELAY` | +| `CONSUMER_POLLING_RETRY_COUNT` | _Removed_ | Automatic with stability tracking | +| `CONSUMER_IGNORE_PATTERNS` | [`CONSUMER_IGNORE_PATTERNS`](configuration.md#PAPERLESS_CONSUMER_IGNORE_PATTERNS) | **Now regex, not fnmatch**; user patterns are added to (not replacing) default ones | +| _New_ | [`CONSUMER_IGNORE_DIRS`](configuration.md#PAPERLESS_CONSUMER_IGNORE_DIRS) | Additional directories to ignore; user entries are added to (not replacing) defaults | + +## Encryption Support + +Document and thumbnail encryption is no longer supported. This was previously deprecated in [paperless-ng 0.9.3](https://github.com/paperless-ngx/paperless-ngx/blob/dev/docs/changelog.md#paperless-ng-093) + +Users must decrypt their document using the `decrypt_documents` command before upgrading. diff --git a/docs/setup.md b/docs/setup.md index f239e5429..13cf6a63d 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -1,4 +1,8 @@ -## Installation +--- +title: Setup +--- + +# Installation You can go multiple routes to setup and run Paperless: @@ -124,8 +128,7 @@ account. The script essentially automatically performs the steps described in [D system notifications with `inotify`. When storing the consumption directory on such a file system, paperless will not pick up new files with the default configuration. You will need to use - [`PAPERLESS_CONSUMER_POLLING`](configuration.md#PAPERLESS_CONSUMER_POLLING), which will disable inotify. See - [here](configuration.md#polling). + [`PAPERLESS_CONSUMER_POLLING_INTERVAL`](configuration.md#PAPERLESS_CONSUMER_POLLING_INTERVAL), which will disable inotify. 5. Run `docker compose pull`. This will pull the image from the GitHub container registry by default but you can change the image to pull from Docker Hub by changing the `image` @@ -326,7 +329,7 @@ are released, dependency support is confirmed, etc. !!! warning - Ensure your Redis instance [is secured](https://redis.io/docs/getting-started/#securing-redis). + Ensure your Redis instance [is secured](https://redis.io/docs/latest/operate/oss_and_stack/management/security/). 7. Create the following directories if they are missing: diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index e20751875..94e12307e 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -46,9 +46,9 @@ run: If you notice that the consumer will only pickup files in the consumption directory at startup, but won't find any other files added later, you will need to enable filesystem polling with the configuration -option [`PAPERLESS_CONSUMER_POLLING`](configuration.md#PAPERLESS_CONSUMER_POLLING). +option [`PAPERLESS_CONSUMER_POLLING_INTERVAL`](configuration.md#PAPERLESS_CONSUMER_POLLING_INTERVAL). -This will disable listening to filesystem changes with inotify and +This will disable automatic listening for filesystem changes and paperless will manually check the consumption directory for changes instead. @@ -234,47 +234,9 @@ FileNotFoundError: [Errno 2] No such file or directory: '/tmp/ocrmypdf.io.yhk3zb This probably indicates paperless tried to consume the same file twice. This can happen for a number of reasons, depending on how documents are -placed into the consume folder. If paperless is using inotify (the -default) to check for documents, try adjusting the -[inotify configuration](configuration.md#inotify). If polling is enabled, try adjusting the -[polling configuration](configuration.md#polling). - -## Consumer fails waiting for file to remain unmodified. - -You might find messages like these in your log files: - -``` -[ERROR] [paperless.management.consumer] Timeout while waiting on file /usr/src/paperless/src/../consume/SCN_0001.pdf to remain unmodified. -``` - -This indicates paperless timed out while waiting for the file to be -completely written to the consume folder. Adjusting -[polling configuration](configuration.md#polling) values should resolve the issue. - -!!! note - - The user will need to manually move the file out of the consume folder - and back in, for the initial failing file to be consumed. - -## Consumer fails reporting "OS reports file as busy still". - -You might find messages like these in your log files: - -``` -[WARNING] [paperless.management.consumer] Not consuming file /usr/src/paperless/src/../consume/SCN_0001.pdf: OS reports file as busy still -``` - -This indicates paperless was unable to open the file, as the OS reported -the file as still being in use. To prevent a crash, paperless did not -try to consume the file. If paperless is using inotify (the default) to -check for documents, try adjusting the -[inotify configuration](configuration.md#inotify). If polling is enabled, try adjusting the -[polling configuration](configuration.md#polling). - -!!! note - - The user will need to manually move the file out of the consume folder - and back in, for the initial failing file to be consumed. +placed into the consume folder, such as how a scanner may modify a file multiple times as it scans. +Try adjusting the +[file stability delay](configuration.md#PAPERLESS_CONSUMER_STABILITY_DELAY) to a larger value. ## Log reports "Creating PaperlessTask failed". diff --git a/docs/usage.md b/docs/usage.md index 94ef5ae1b..ca57e9018 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,4 +1,8 @@ -# Usage Overview +--- +title: Basic Usage +--- + +# Usage Paperless-ngx is an application that manages your personal documents. With the (optional) help of a document scanner (see [the scanners wiki](https://github.com/paperless-ngx/paperless-ngx/wiki/Scanner-&-Software-Recommendations)), Paperless-ngx transforms your unwieldy @@ -261,6 +265,10 @@ different means. These are as follows: Paperless is set up to check your mails every 10 minutes. This can be configured via [`PAPERLESS_EMAIL_TASK_CRON`](configuration.md#PAPERLESS_EMAIL_TASK_CRON) +#### Processed Mail + +Paperless keeps track of emails it has processed in order to avoid processing the same mail multiple times. This uses the message `UID` provided by the mail server, which should be unique for each message. You can view and manage processed mails from the web UI under Mail > Processed Mails. If you need to re-process a message, you can delete the corresponding processed mail entry, which will allow Paperless-ngx to process the email again the next time the mail fetch task runs. + #### OAuth Email Setup Paperless-ngx supports OAuth2 authentication for Gmail and Outlook email accounts. To set up an email account with OAuth2, you will need to create a 'developer' app with the respective provider and obtain the client ID and client secret and set the appropriate [configuration variables](configuration.md#email_oauth). You will also need to set either [`PAPERLESS_OAUTH_CALLBACK_BASE_URL`](configuration.md#PAPERLESS_OAUTH_CALLBACK_BASE_URL) or [`PAPERLESS_URL`](configuration.md#PAPERLESS_URL) to the correct value for the OAuth2 flow to work correctly. @@ -274,6 +282,28 @@ Once setup, navigating to the email settings page in Paperless-ngx will allow yo You can also submit a document using the REST API, see [POSTing documents](api.md#file-uploads) for details. +## Document Suggestions + +Paperless-ngx can suggest tags, correspondents, document types and storage paths for documents based on the content of the document. This is done using a (non-LLM) machine learning model that is trained on the documents in your database. The suggestions are shown in the document detail page and can be accepted or rejected by the user. + +## AI Features + +Paperless-ngx includes several features that use AI to enhance the document management experience. These features are optional and can be enabled or disabled in the settings. If you are using the AI features, you may want to also enable the "LLM index" feature, which supports Retrieval-Augmented Generation (RAG) designed to improve the quality of AI responses. The LLM index feature is not enabled by default and requires additional configuration. + +!!! warning + + Remember that Paperless-ngx will send document content to the AI provider you have configured, so consider the privacy implications of using these features, especially if using a remote model (e.g. OpenAI), instead of the default local model. + +The AI features work by creating an embedding of the text content and metadata of documents, which is then used for various tasks such as similarity search and question answering. This uses the FAISS vector store. + +### AI-Enhanced Suggestions + +If enabled, Paperless-ngx can use an AI LLM model to suggest document titles, dates, tags, correspondents and document types for documents. This feature will always be "opt-in" and does not disable the existing classifier-based suggestion system. Currently, both remote (via the OpenAI API) and local (via Ollama) models are supported, see [configuration](configuration.md#ai) for details. + +### Document Chat + +Paperless-ngx can use an AI LLM model to answer questions about a document or across multiple documents. Again, this feature works best when RAG is enabled. The chat feature is available in the upper app toolbar and will switch between chatting across multiple documents or a single document based on the current view. + ## Sharing documents from Paperless-ngx Paperless-ngx supports sharing documents with other users by assigning them [permissions](#object-permissions) @@ -282,12 +312,14 @@ or using [email](#workflow-action-email) or [webhook](#workflow-action-webhook) ### Share Links -"Share links" are shareable public links to files and can be created and managed under the 'Send' button on the document detail screen. +"Share links" are public links to files (or an archive of files) and can be created and managed under the 'Send' button on the document detail screen or from the bulk editor. -- Share links do not require a user to login and thus link directly to a file. +- Share links do not require a user to login and thus link directly to a file or bundled download. - Links are unique and are of the form `{paperless-url}/share/{randomly-generated-slug}`. - Links can optionally have an expiration time set. - After a link expires or is deleted users will be redirected to the regular paperless-ngx login. +- From the document detail screen you can create a share link for that single document. +- From the bulk editor you can create a **share link bundle** for any selection. Paperless-ngx prepares a ZIP archive in the background and exposes a single share link. You can revisit the "Manage share link bundles" dialog to monitor progress, retry failed bundles, or delete links. !!! tip @@ -410,7 +442,7 @@ fields and permissions, which will be merged. #### Types {#workflow-trigger-types} -Currently, there are three events that correspond to workflow trigger 'types': +Currently, there are four events that correspond to workflow trigger 'types': 1. **Consumption Started**: _before_ a document is consumed, so events can include filters by source (mail, consumption folder or API), file path, file name, mail rule @@ -423,7 +455,7 @@ Currently, there are three events that correspond to workflow trigger 'types': added, created, updated date or you can specify a (date) custom field. You can also specify a day offset from the date (positive offsets will trigger after the date, negative offsets will trigger before). -The following flow diagram illustrates the three document trigger types: +The following flow diagram illustrates the four document trigger types: ```mermaid flowchart TD @@ -439,6 +471,10 @@ flowchart TD 'Updated' trigger(s)"} + scheduled{"Documents + matching + trigger(s)"} + A[New Document] --> consumption consumption --> |Yes| C[Workflow Actions Run] consumption --> |No| D @@ -451,6 +487,11 @@ flowchart TD updated --> |Yes| J[Workflow Actions Run] updated --> |No| K J --> K[Document Saved] + L[Scheduled Task Check
hourly at :05] --> M[Get All Scheduled Triggers] + M --> scheduled + scheduled --> |Yes| N[Workflow Actions Run] + scheduled --> |No| O[Document Saved] + N --> O ``` #### Filters {#workflow-trigger-filters} @@ -458,15 +499,24 @@ flowchart TD Workflows allow you to filter by: - Source, e.g. documents uploaded via consume folder, API (& the web UI) and mail fetch -- File name, including wildcards e.g. \*.pdf will apply to all pdfs +- File name, including wildcards e.g. \*.pdf will apply to all pdfs. - File path, including wildcards. Note that enabling `PAPERLESS_CONSUMER_RECURSIVE` would allow, for example, automatically assigning documents to different owners based on the upload directory. - Mail rule. Choosing this option will force 'mail fetch' to be the workflow source. - Content matching (`Added`, `Updated` and `Scheduled` triggers only). Filter document content using the matching settings. -- Tags (`Added`, `Updated` and `Scheduled` triggers only). Filter for documents with any of the specified tags -- Document type (`Added`, `Updated` and `Scheduled` triggers only). Filter documents with this doc type -- Correspondent (`Added`, `Updated` and `Scheduled` triggers only). Filter documents with this correspondent -- Storage path (`Added`, `Updated` and `Scheduled` triggers only). Filter documents with this storage path + +There are also 'advanced' filters available for `Added`, `Updated` and `Scheduled` triggers: + +- Any Tags: Filter for documents with any of the specified tags. +- All Tags: Filter for documents with all of the specified tags. +- No Tags: Filter for documents with none of the specified tags. +- Document type: Filter documents with this document type. +- Not Document types: Filter documents without any of these document types. +- Correspondent: Filter documents with this correspondent. +- Not Correspondents: Filter documents without any of these correspondents. +- Storage path: Filter documents with this storage path. +- Not Storage paths: Filter documents without any of these storage paths. +- Custom field query: Filter documents with a custom field query (the same as used for the document list filters). ### Workflow Actions @@ -516,12 +566,12 @@ you may want to adjust these settings to prevent abuse. #### Workflow placeholders -Titles can be assigned by workflows using [Jinja templates](https://jinja.palletsprojects.com/en/3.1.x/templates/). -This allows for complex logic to be used to generate the title, including [logical structures](https://jinja.palletsprojects.com/en/3.1.x/templates/#list-of-control-structures) +Titles and webhook payloads can be generated by workflows using [Jinja templates](https://jinja.palletsprojects.com/en/3.1.x/templates/). +This allows for complex logic to be used, including [logical structures](https://jinja.palletsprojects.com/en/3.1.x/templates/#list-of-control-structures) and [filters](https://jinja.palletsprojects.com/en/3.1.x/templates/#id11). The template is provided as a string. -Using Jinja2 Templates is also useful for [Date localization](advanced_usage.md#Date-Localization) in the title. +Using Jinja2 Templates is also useful for [Date localization](advanced_usage.md#date-localization) in the title. The available inputs differ depending on the type of workflow trigger. This is because at the time of consumption (when the text is to be set), no automatic tags etc. have been @@ -540,6 +590,7 @@ applied. You can use the following placeholders in the template with any trigger - `{{added_time}}`: added time in HH:MM format - `{{original_filename}}`: original file name without extension - `{{filename}}`: current file name without extension +- `{{doc_title}}`: current document title (cannot be used in title assignment) The following placeholders are only available for "added" or "updated" triggers @@ -552,6 +603,7 @@ The following placeholders are only available for "added" or "updated" triggers - `{{created_day}}`: created day - `{{created_time}}`: created time in HH:MM format - `{{doc_url}}`: URL to the document in the web UI. Requires the `PAPERLESS_URL` setting to be set. +- `{{doc_id}}`: Document ID ##### Examples @@ -633,7 +685,7 @@ When you first delete a document it is moved to the 'trash' until either it is e You can set how long documents remain in the trash before being automatically deleted with [`PAPERLESS_EMPTY_TRASH_DELAY`](configuration.md#PAPERLESS_EMPTY_TRASH_DELAY), which defaults to 30 days. Until the file is actually deleted (e.g. the trash is emptied), all files and database content remains intact and can be restored at any point up until that time. -Additionally you may configure a directory where deleted files are moved to when they the trash is emptied with [`PAPERLESS_EMPTY_TRASH_DIR`](configuration.md#PAPERLESS_EMPTY_TRASH_DIR). +Additionally you may configure a directory where deleted files are moved to when the trash is emptied with [`PAPERLESS_EMPTY_TRASH_DIR`](configuration.md#PAPERLESS_EMPTY_TRASH_DIR). Note that the empty trash directory only stores the original file, the archive file and all database information is permanently removed once a document is fully deleted. ## Best practices {#basic-searching} @@ -878,6 +930,21 @@ how regularly you intend to scan documents and use paperless. performed the task associated with the document, move it to the inbox. +## Remote OCR + +!!! important + + This feature is disabled by default and will always remain strictly "opt-in". + +Paperless-ngx supports performing OCR on documents using remote services. At the moment, this is limited to +[Microsoft's Azure "Document Intelligence" service](https://azure.microsoft.com/en-us/products/ai-services/ai-document-intelligence). +This is of course a paid service (with a free tier) which requires an Azure account and subscription. Azure AI is not affiliated with +Paperless-ngx in any way. When enabled, Paperless-ngx will automatically send appropriate documents to Azure for OCR processing, bypassing +the local OCR engine. See the [configuration](configuration.md#PAPERLESS_REMOTE_OCR_ENGINE) options for more details. + +Additionally, when using a commercial service with this feature, consider both potential costs as well as any associated file size +or page limitations (e.g. with a free tier). + ## Architecture Paperless-ngx consists of the following components: diff --git a/install-paperless-ngx.sh b/install-paperless-ngx.sh index 648196030..053260879 100755 --- a/install-paperless-ngx.sh +++ b/install-paperless-ngx.sh @@ -374,7 +374,7 @@ fi # of the provided folder if [[ -n $DATABASE_FOLDER ]] ; then if [[ "$DATABASE_BACKEND" == "postgres" ]] ; then - sed -i "s#- pgdata:/var/lib/postgresql/data#- $DATABASE_FOLDER:/var/lib/postgresql/data#g" docker-compose.yml + sed -i "s#- pgdata:/var/lib/postgresql#- $DATABASE_FOLDER:/var/lib/postgresql#g" docker-compose.yml sed -i "/^\s*pgdata:/d" docker-compose.yml elif [[ "$DATABASE_BACKEND" == "mariadb" ]]; then sed -i "s#- dbdata:/var/lib/mysql#- $DATABASE_FOLDER:/var/lib/mysql#g" docker-compose.yml diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index 05826f25f..000000000 --- a/mkdocs.yml +++ /dev/null @@ -1,86 +0,0 @@ -site_name: Paperless-ngx -theme: - name: material - logo: assets/logo.svg - font: - text: Roboto - code: Roboto Mono - palette: - # Palette toggle for automatic mode - - media: "(prefers-color-scheme)" - toggle: - icon: material/brightness-auto - name: Switch to light mode - # Palette toggle for light mode - - media: "(prefers-color-scheme: light)" - scheme: default - toggle: - icon: material/brightness-7 - name: Switch to dark mode - # Palette toggle for dark mode - - media: "(prefers-color-scheme: dark)" - scheme: slate - toggle: - icon: material/brightness-4 - name: Switch to system preference - features: - - navigation.tabs - - navigation.top - - toc.integrate - - content.code.annotate - icon: - repo: fontawesome/brands/github - favicon: assets/favicon.png -repo_url: https://github.com/paperless-ngx/paperless-ngx -repo_name: paperless-ngx/paperless-ngx -edit_uri: blob/main/docs/ -extra_css: - - assets/extra.css -markdown_extensions: - - attr_list - - md_in_html - - def_list - - admonition - - tables - - pymdownx.highlight: - anchor_linenums: true - - pymdownx.superfences - - pymdownx.inlinehilite - - pymdownx.snippets - - pymdownx.tilde - - footnotes - - pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format - - pymdownx.emoji: - emoji_index: !!python/name:material.extensions.emoji.twemoji - emoji_generator: !!python/name:material.extensions.emoji.to_svg -strict: true -nav: - - index.md - - setup.md - - 'Basic Usage': usage.md - - configuration.md - - administration.md - - advanced_usage.md - - 'REST API': api.md - - development.md - - 'FAQs': faq.md - - troubleshooting.md - - changelog.md -copyright: Copyright © 2016 - 2023 Daniel Quinn, Jonas Winkler, and the Paperless-ngx team -extra: - social: - - icon: fontawesome/brands/github - link: https://github.com/paperless-ngx/paperless-ngx - - icon: fontawesome/brands/docker - link: https://hub.docker.com/r/paperlessngx/paperless-ngx - - icon: material/chat - link: https://matrix.to/#/#paperless:matrix.org -plugins: - - search - - glightbox: - skip_classes: - - no-lightbox diff --git a/paperless-ngx.code-workspace b/paperless-ngx.code-workspace index 85f5a836b..91020c66c 100644 --- a/paperless-ngx.code-workspace +++ b/paperless-ngx.code-workspace @@ -33,6 +33,8 @@ "**/coverage.json": true }, "python.defaultInterpreterPath": ".venv/bin/python3", + "python.analysis.inlayHints.pytestParameters": true, + "python.testing.pytestEnabled": true, }, "extensions": { "recommendations": ["ms-python.python", "charliermarsh.ruff", "editorconfig.editorconfig"], diff --git a/paperless.conf.example b/paperless.conf.example index 1ba21f41d..9974aeab6 100644 --- a/paperless.conf.example +++ b/paperless.conf.example @@ -55,10 +55,10 @@ #PAPERLESS_TASK_WORKERS=1 #PAPERLESS_THREADS_PER_WORKER=1 #PAPERLESS_TIME_ZONE=UTC -#PAPERLESS_CONSUMER_POLLING=10 +#PAPERLESS_CONSUMER_POLLING_INTERVAL=10 #PAPERLESS_CONSUMER_DELETE_DUPLICATES=false #PAPERLESS_CONSUMER_RECURSIVE=false -#PAPERLESS_CONSUMER_IGNORE_PATTERNS=[".DS_STORE/*", "._*", ".stfolder/*", ".stversions/*", ".localized/*", "desktop.ini"] +#PAPERLESS_CONSUMER_IGNORE_PATTERNS=[] # Defaults are built in; add filename regexes, e.g. ["^\\.DS_Store$", "^desktop\\.ini$"] #PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=false #PAPERLESS_CONSUMER_ENABLE_BARCODES=false #PAPERLESS_CONSUMER_BARCODE_STRING=PATCHT @@ -66,6 +66,7 @@ #PAPERLESS_CONSUMER_BARCODE_DPI=300 #PAPERLESS_CONSUMER_ENABLE_TAG_BARCODE=false #PAPERLESS_CONSUMER_TAG_BARCODE_MAPPING={"TAG:(.*)": "\\g<1>"} +#PAPERLESS_CONSUMER_TAG_BARCODE_SPLIT=false #PAPERLESS_CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED=false #PAPERLESS_CONSUMER_COLLATE_DOUBLE_SIDED_SUBDIR_NAME=double-sided #PAPERLESS_CONSUMER_COLLATE_DOUBLE_SIDED_TIFF_SUPPORT=false diff --git a/pyproject.toml b/pyproject.toml index a49e94f38..eaa917a6f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "paperless-ngx" -version = "2.18.4" +version = "2.20.6" description = "A community-supported supercharged document management system: scan, index and archive all your physical documents" readme = "README.md" requires-python = ">=3.10" @@ -10,65 +10,76 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] # TODO: Move certain things to groups and then utilize that further # This will allow testing to not install a webserver, mysql, etc dependencies = [ + "azure-ai-documentintelligence>=1.0.2", "babel>=2.17", - "bleach~=6.2.0", - "celery[redis]~=5.5.1", + "bleach~=6.3.0", + "celery[redis]~=5.6.2", "channels~=4.2", "channels-redis~=4.2", "concurrent-log-handler~=0.9.25", "dateparser~=1.2", # WARNING: django does not use semver. # Only patch versions are guaranteed to not introduce breaking changes. - "django~=5.2.5", - "django-allauth[socialaccount,mfa]~=65.4.0", - "django-auditlog~=3.2.1", - "django-cachalot~=2.8.0", + "django~=5.2.10", + "django-allauth[mfa,socialaccount]~=65.14.0", + "django-auditlog~=3.4.1", + "django-cachalot~=2.9.0", "django-celery-results~=2.6.0", "django-compression-middleware~=0.5.0", - "django-cors-headers~=4.8.0", + "django-cors-headers~=4.9.0", "django-extensions~=4.1", "django-filter~=25.1", - "django-guardian~=3.1.2", + "django-guardian~=3.2.0", "django-multiselectfield~=1.0.1", "django-soft-delete~=1.0.18", "django-treenode>=0.23.2", "djangorestframework~=3.16", "djangorestframework-guardian~=0.4.0", "drf-spectacular~=0.28", - "drf-spectacular-sidecar~=2025.9.1", + "drf-spectacular-sidecar~=2026.1.1", "drf-writable-nested~=0.7.1", - "filelock~=3.19.1", + "faiss-cpu>=1.10", + "filelock~=3.20.0", "flower~=2.0.1", - "gotenberg-client~=0.11.0", + "gotenberg-client~=0.13.1", "httpx-oauth~=0.16", "imap-tools~=1.11.0", - "inotifyrecursive~=0.3", "jinja2~=3.1.5", "langdetect~=1.0.9", + "llama-index-core>=0.14.12", + "llama-index-embeddings-huggingface>=0.6.1", + "llama-index-embeddings-openai>=0.5.1", + "llama-index-llms-ollama>=0.9.1", + "llama-index-llms-openai>=0.6.13", + "llama-index-vector-stores-faiss>=0.5.2", "nltk~=3.9.1", - "ocrmypdf~=16.11.0", + "ocrmypdf~=16.13.0", + "openai>=1.76", "pathvalidate~=3.3.1", "pdf2image~=1.17.0", - "psycopg-pool", "python-dateutil~=2.9.0", - "python-dotenv~=1.1.0", + "python-dotenv~=1.2.1", "python-gnupg~=0.5.4", "python-ipware~=3.0.0", "python-magic~=0.4.27", "pyzbar~=0.1.9", "rapidfuzz~=3.14.0", "redis[hiredis]~=5.2.1", + "regex>=2025.9.18", "scikit-learn~=1.7.0", + "sentence-transformers>=4.1", "setproctitle~=1.3.4", "tika-client~=0.10.0", + "torch~=2.10.0", "tqdm~=4.67.1", - "watchdog~=6.0", - "whitenoise~=6.9", + "watchfiles>=1.1.1", + "whitenoise~=6.11", "whoosh-reloaded>=2.7.5", "zxing-cpp~=2.3.0", ] @@ -77,13 +88,13 @@ optional-dependencies.mariadb = [ "mysqlclient~=2.2.7", ] optional-dependencies.postgres = [ - "psycopg[c,pool]==3.2.9", + "psycopg[c,pool]==3.3", # Direct dependency for proper resolution of the pre-built wheels - "psycopg-c==3.2.9", - "psycopg-pool==3.2.6", + "psycopg-c==3.3", + "psycopg-pool==3.3", ] optional-dependencies.webserver = [ - "granian[uvloop]~=2.5.1", + "granian[uvloop]~=2.7.0", ] [dependency-groups] @@ -95,29 +106,28 @@ dev = [ ] docs = [ - "mkdocs-glightbox~=0.5.1", - "mkdocs-material~=9.6.4", + "zensical>=0.0.21", ] testing = [ "daphne", "factory-boy~=3.3.1", "imagehash", - "pytest~=8.4.1", + "pytest~=9.0.0", "pytest-cov~=7.0.0", "pytest-django~=4.11.1", - "pytest-env", + "pytest-env~=1.2.0", "pytest-httpx", - "pytest-mock", - "pytest-rerunfailures", + "pytest-mock~=3.15.1", + #"pytest-randomly~=4.0.1", + "pytest-rerunfailures~=16.1", "pytest-sugar", - "pytest-xdist", + "pytest-xdist~=3.8.0", ] lint = [ - "pre-commit~=4.3.0", - "pre-commit-uv~=4.1.3", - "ruff~=0.13.0", + "prek~=0.3.0", + "ruff~=0.15.0", ] typing = [ @@ -126,8 +136,12 @@ typing = [ "django-stubs[compatible-mypy]", "djangorestframework-stubs[compatible-mypy]", "lxml-stubs", + "microsoft-python-type-stubs @ git+https://github.com/microsoft/python-type-stubs.git", "mypy", + "mypy-baseline", + "pyrefly", "types-bleach", + "types-channels", "types-colorama", "types-dateparser", "types-markdown", @@ -139,6 +153,34 @@ typing = [ "types-tqdm", ] +[tool.uv] +required-version = ">=0.9.0" +package = false +environments = [ + "sys_platform == 'darwin'", + "sys_platform == 'linux'", +] + +[[tool.uv.index]] +name = "pytorch-cpu" +url = "https://download.pytorch.org/whl/cpu" +explicit = true + +[tool.uv.sources] +# Markers are chosen to select these almost exclusively when building the Docker image +psycopg-c = [ + { url = "https://github.com/paperless-ngx/builder/releases/download/psycopg-trixie-3.3.0/psycopg_c-3.3.0-cp312-cp312-linux_x86_64.whl", marker = "sys_platform == 'linux' and platform_machine == 'x86_64' and python_version == '3.12'" }, + { url = "https://github.com/paperless-ngx/builder/releases/download/psycopg-trixie-3.3.0/psycopg_c-3.3.0-cp312-cp312-linux_aarch64.whl", marker = "sys_platform == 'linux' and platform_machine == 'aarch64' and python_version == '3.12'" }, +] +zxing-cpp = [ + { url = "https://github.com/paperless-ngx/builder/releases/download/zxing-2.3.0/zxing_cpp-2.3.0-cp312-cp312-linux_x86_64.whl", marker = "sys_platform == 'linux' and platform_machine == 'x86_64' and python_version == '3.12'" }, + { url = "https://github.com/paperless-ngx/builder/releases/download/zxing-2.3.0/zxing_cpp-2.3.0-cp312-cp312-linux_aarch64.whl", marker = "sys_platform == 'linux' and platform_machine == 'aarch64' and python_version == '3.12'" }, +] + +torch = [ + { index = "pytorch-cpu" }, +] + [tool.ruff] target-version = "py310" line-length = 88 @@ -218,14 +260,18 @@ lint.isort.force-single-line = true [tool.codespell] write-changes = true -ignore-words-list = "criterias,afterall,valeu,ureue,equest,ure,assertIn,Oktober" +ignore-words-list = "criterias,afterall,valeu,ureue,equest,ure,assertIn,Oktober,commitish" skip = "src-ui/src/locale/*,src-ui/pnpm-lock.yaml,src-ui/e2e/*,src/paperless_mail/tests/samples/*,src/documents/tests/samples/*,*.po,*.json" -[tool.pytest.ini_options] -minversion = "8.0" -pythonpath = [ - "src", -] +[tool.pytest] +minversion = "9.0" +pythonpath = [ "src" ] + +strict_config = true +strict_markers = true +strict_parametrization_ids = true +strict_xfail = true + testpaths = [ "src/documents/tests/", "src/paperless/tests/", @@ -233,7 +279,10 @@ testpaths = [ "src/paperless_tesseract/tests/", "src/paperless_tika/tests", "src/paperless_text/tests/", + "src/paperless_remote/tests/", + "src/paperless_ai/tests", ] + addopts = [ "--pythonwarnings=all", "--cov", @@ -241,19 +290,38 @@ addopts = [ "--cov-report=xml", "--numprocesses=auto", "--maxprocesses=16", - "--quiet", + "--dist=loadscope", "--durations=50", + "--durations-min=0.5", "--junitxml=junit.xml", - "-o junit_family=legacy", + "-o", + "junit_family=legacy", ] + norecursedirs = [ "src/locale/", ".venv/", "src-ui/" ] DJANGO_SETTINGS_MODULE = "paperless.settings" +markers = [ + "live: Integration tests requiring external services (Gotenberg, Tika, nginx, etc)", + "nginx: Tests that make HTTP requests to the local nginx service", + "gotenberg: Tests requiring Gotenberg service", + "tika: Tests requiring Tika service", + "greenmail: Tests requiring Greenmail service", + "date_parsing: Tests which cover date parsing from content or filename", +] + [tool.pytest_env] PAPERLESS_DISABLE_DBHANDLER = "true" PAPERLESS_CACHE_BACKEND = "django.core.cache.backends.locmem.LocMemCache" +[tool.coverage.report] +exclude_also = [ + "if settings.AUDIT_LOG_ENABLED:", + "if AUDIT_LOG_ENABLED:", + "if TYPE_CHECKING:", +] + [tool.coverage.run] source = [ "src/", @@ -265,13 +333,6 @@ omit = [ "paperless/auth.py", ] -[tool.coverage.report] -exclude_also = [ - "if settings.AUDIT_LOG_ENABLED:", - "if AUDIT_LOG_ENABLED:", - "if TYPE_CHECKING:", -] - [tool.mypy] mypy_path = "src" plugins = [ @@ -285,24 +346,15 @@ disallow_untyped_defs = true warn_redundant_casts = true warn_unused_ignores = true -[tool.uv] -required-version = ">=0.5.14" -package = false -environments = [ - "sys_platform == 'darwin'", - "sys_platform == 'linux'", -] - -[tool.uv.sources] -# Markers are chosen to select these almost exclusively when building the Docker image -psycopg-c = [ - { url = "https://github.com/paperless-ngx/builder/releases/download/psycopg-3.2.9/psycopg_c-3.2.9-cp312-cp312-linux_x86_64.whl", marker = "sys_platform == 'linux' and platform_machine == 'x86_64' and python_version == '3.12'" }, - { url = "https://github.com/paperless-ngx/builder/releases/download/psycopg-3.2.9/psycopg_c-3.2.9-cp312-cp312-linux_aarch64.whl", marker = "sys_platform == 'linux' and platform_machine == 'aarch64' and python_version == '3.12'" }, -] -zxing-cpp = [ - { url = "https://github.com/paperless-ngx/builder/releases/download/zxing-2.3.0/zxing_cpp-2.3.0-cp312-cp312-linux_x86_64.whl", marker = "sys_platform == 'linux' and platform_machine == 'x86_64' and python_version == '3.12'" }, - { url = "https://github.com/paperless-ngx/builder/releases/download/zxing-2.3.0/zxing_cpp-2.3.0-cp312-cp312-linux_aarch64.whl", marker = "sys_platform == 'linux' and platform_machine == 'aarch64' and python_version == '3.12'" }, -] +[tool.pyrefly] +search-path = [ "src" ] +baseline = ".pyrefly-baseline.json" +python-platform = "linux" [tool.django-stubs] django_settings_module = "paperless.settings" + +[tool.mypy-baseline] +baseline_path = ".mypy-baseline.txt" +sort_baseline = true +ignore_categories = [ "note" ] diff --git a/src-ui/angular.json b/src-ui/angular.json index b55e441f3..9ed7488b6 100644 --- a/src-ui/angular.json +++ b/src-ui/angular.json @@ -31,6 +31,7 @@ "fi-FI": "src/locale/messages.fi_FI.xlf", "fr-FR": "src/locale/messages.fr_FR.xlf", "hu-HU": "src/locale/messages.hu_HU.xlf", + "id-ID": "src/locale/messages.id_ID.xlf", "it-IT": "src/locale/messages.it_IT.xlf", "ja-JP": "src/locale/messages.ja_JP.xlf", "lb-LU": "src/locale/messages.lb_LU.xlf", @@ -85,7 +86,6 @@ ], "scripts": [], "allowedCommonJsDependencies": [ - "ng2-pdf-viewer", "file-saver", "utif" ], @@ -155,16 +155,7 @@ "builder": "@angular-builders/jest:run", "options": { "tsConfig": "tsconfig.spec.json", - "assets": [ - "src/favicon.ico", - "src/apple-touch-icon.png", - "src/assets", - "src/manifest.webmanifest" - ], - "styles": [ - "src/styles.scss" - ], - "scripts": [] + "zoneless": false } }, "lint": { diff --git a/src-ui/e2e/document-detail/document-detail.spec.ts b/src-ui/e2e/document-detail/document-detail.spec.ts index 8e0967188..ba10745ec 100644 --- a/src-ui/e2e/document-detail/document-detail.spec.ts +++ b/src-ui/e2e/document-detail/document-detail.spec.ts @@ -72,7 +72,7 @@ test('should show a mobile preview', async ({ page }) => { await page.setViewportSize({ width: 400, height: 1000 }) await expect(page.getByRole('tab', { name: 'Preview' })).toBeVisible() await page.getByRole('tab', { name: 'Preview' }).click() - await page.waitForSelector('pdf-viewer') + await page.waitForSelector('pngx-pdf-viewer') }) test('should show a list of notes', async ({ page }) => { diff --git a/src-ui/e2e/document-list/document-list.spec.ts b/src-ui/e2e/document-list/document-list.spec.ts index 45857bb09..9aa4d2fdc 100644 --- a/src-ui/e2e/document-list/document-list.spec.ts +++ b/src-ui/e2e/document-list/document-list.spec.ts @@ -174,12 +174,15 @@ test('bulk edit', async ({ page }) => { await expect(page.locator('pngx-document-list')).toHaveText( /Selected 61 of 61 documents/i ) - await page.getByRole('button', { name: 'Cancel' }).click() + await page.getByRole('button', { name: 'None' }).click() await page.locator('pngx-document-card-small').nth(1).click() await page.locator('pngx-document-card-small').nth(2).click() await page.getByRole('button', { name: 'Tags' }).click() + await page + .getByRole('textbox', { name: 'Filter tags' }) + .fill('TagWithPartial') await page.getByRole('menuitem', { name: 'TagWithPartial' }).click() await page.getByRole('button', { name: 'Apply' }).click() diff --git a/src-ui/jest.config.js b/src-ui/jest.config.js index aab8eb016..7b06016dd 100644 --- a/src-ui/jest.config.js +++ b/src-ui/jest.config.js @@ -1,5 +1,23 @@ +const { createEsmPreset } = require('jest-preset-angular/presets') + +const esmPreset = createEsmPreset({ + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', +}) + module.exports = { - preset: 'jest-preset-angular', + ...esmPreset, + transform: { + ...esmPreset.transform, + '^.+\\.(ts|js|mjs|html|svg)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + useESM: true, + }, + ], + }, setupFilesAfterEnv: ['/setup-jest.ts'], testPathIgnorePatterns: [ '/node_modules/', @@ -8,10 +26,15 @@ module.exports = { 'abstract-paperless-service', ], transformIgnorePatterns: [ - `/node_modules/.pnpm/(?!.*\\.mjs$|lodash-es|@angular\\+common.*locales)`, + 'node_modules/(?!.*(\\.mjs$|tslib|lodash-es|@angular/common/locales/.*\\.js$))', ], moduleNameMapper: { + ...esmPreset.moduleNameMapper, '^src/(.*)': '/src/$1', + '^pdfjs-dist/legacy/build/pdf\\.mjs$': + '/src/test/mocks/pdfjs-legacy-build-pdf.ts', + '^pdfjs-dist/web/pdf_viewer\\.mjs$': + '/src/test/mocks/pdfjs-web-pdf_viewer.ts', }, workerIdleMemoryLimit: '512MB', reporters: [ diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index a8cf235a6..76e02b4a8 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -5,14 +5,14 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/alert/alert.ts 50 Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -20,239 +20,239 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts - 157,159 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/carousel/carousel.ts + 159,162 Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts - 198 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/carousel/carousel.ts + 202,203 + + + + Select month + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/datepicker/datepicker-navigation-select.ts + 91 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/datepicker/datepicker-navigation-select.ts + 91 + + + + Select year + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/datepicker/datepicker-navigation-select.ts + 91 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/datepicker/datepicker-navigation-select.ts + 91 Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/datepicker/datepicker-navigation.ts 112 Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/datepicker/datepicker-navigation.ts 112 - - HH - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Close - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Select month - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Hours - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/pagination/pagination-config.ts + 20 « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - MM - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/pagination/pagination-config.ts + 20 » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Select year - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Minutes - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/pagination/pagination-config.ts + 20 »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/pagination/pagination-config.ts + 20 First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Increment hours - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/pagination/pagination-config.ts + 20 Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Decrement hours - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/pagination/pagination-config.ts + 20 Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Increment minutes - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/pagination/pagination-config.ts + 20 Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Decrement minutes - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - SS - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Seconds - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Increment seconds - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - Decrement seconds - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 - - - - - - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts - 13 + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/pagination/pagination-config.ts + 20 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/progressbar/progressbar.ts 41,42 + + HH + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Hours + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + MM + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Minutes + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Increment hours + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Decrement hours + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Increment minutes + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Decrement minutes + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + SS + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Seconds + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Increment seconds + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Decrement seconds + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/timepicker/timepicker-config.ts + 21 + + + + Close + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@20.0.0_@angular+common@21.1.3_@angular+core@21.1.3_@angular+_1ede04b1f6b65fa8e34a28e44afe1de9/node_modules/src/toast/toast-config.ts + 54 + + Document was added to Paperless-ngx. src/app/app.component.ts - 95 + 90 src/app/app.component.ts - 104 + 99 Open document src/app/app.component.ts - 97 + 92 src/app/components/admin/trash/trash.component.ts @@ -279,29 +279,29 @@ Could not add : src/app/app.component.ts - 119 + 114 Document is being processed by Paperless-ngx. src/app/app.component.ts - 134 + 129 Dashboard src/app/app.component.ts - 141 + 136 src/app/components/app-frame/app-frame.component.html - 82 + 87 src/app/components/app-frame/app-frame.component.html - 84 + 89 src/app/components/dashboard/dashboard.component.html @@ -312,46 +312,62 @@ Documents src/app/app.component.ts - 152 + 147 + + + src/app/components/admin/settings/settings.component.html + 193 + + + src/app/components/admin/settings/settings.component.html + 197 src/app/components/app-frame/app-frame.component.html - 89 + 94 src/app/components/app-frame/app-frame.component.html - 91 + 96 + + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 85 + + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 36 src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html - 61 + 70 src/app/components/manage/management-list/management-list.component.html - 133 + 198 src/app/components/manage/management-list/management-list.component.html - 133 + 198 src/app/components/manage/management-list/management-list.component.html - 133 + 198 src/app/components/manage/management-list/management-list.component.html - 133 + 198 Settings src/app/app.component.ts - 164 + 159 src/app/components/admin/settings/settings.component.html @@ -359,89 +375,64 @@ src/app/components/app-frame/app-frame.component.html - 51 + 54 src/app/components/app-frame/app-frame.component.html - 253 + 258 src/app/components/app-frame/app-frame.component.html - 255 - - - - Prev - - src/app/app.component.ts - 170 - - - - Next - - src/app/app.component.ts - 171 - - - src/app/components/document-detail/document-detail.component.html - 113 - - - - End - - src/app/app.component.ts - 172 + 260 The dashboard can be used to show saved views, such as an 'Inbox'. Views are found under Manage > Saved Views once you have created some. src/app/app.component.ts - 178 + 168 Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms. src/app/app.component.ts - 185 + 175 The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar. src/app/app.component.ts - 190 + 180 The filtering tools allow you to quickly find documents using various searches, dates, tags, etc. src/app/app.component.ts - 197 + 187 Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar. src/app/app.component.ts - 203 + 193 Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view. src/app/app.component.ts - 208 + 198 Manage e-mail accounts and rules for automatically importing documents. src/app/app.component.ts - 216 + 206 src/app/components/manage/mail/mail.component.html @@ -452,14 +443,14 @@ Workflows give you more control over the document pipeline. src/app/app.component.ts - 224 + 214 File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process. src/app/app.component.ts - 232 + 222 src/app/components/admin/tasks/tasks.component.html @@ -470,28 +461,28 @@ Check out the settings for various tweaks to the web app. src/app/app.component.ts - 240 + 230 Thank you! 🙏 src/app/app.component.ts - 248 + 238 There are <em>tons</em> more features and info we didn't cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues. src/app/app.component.ts - 250 + 240 Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx! src/app/app.component.ts - 252 + 242 @@ -523,29 +514,29 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Discard src/app/components/admin/config/config.component.html - 53 + 57 src/app/components/document-detail/document-detail.component.html - 374 + 437 Save src/app/components/admin/config/config.component.html - 56 + 60 src/app/components/admin/settings/settings.component.html - 362 + 400 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -553,7 +544,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -585,15 +576,15 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html - 367 + 430 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -605,49 +596,49 @@ src/app/components/manage/saved-views/saved-views.component.html - 74 + 75 Error retrieving config src/app/components/admin/config/config.component.ts - 103 + 105 Invalid JSON src/app/components/admin/config/config.component.ts - 129 + 131 Configuration updated src/app/components/admin/config/config.component.ts - 173 + 175 An error occurred updating configuration src/app/components/admin/config/config.component.ts - 178 + 180 File successfully updated src/app/components/admin/config/config.component.ts - 200 + 202 An error occurred uploading file src/app/components/admin/config/config.component.ts - 205 + 207 @@ -658,11 +649,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 293 src/app/components/app-frame/app-frame.component.html - 291 + 296 @@ -672,11 +663,33 @@ 4 + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -687,11 +700,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -717,6 +730,10 @@ src/app/components/common/input/document-link/document-link.component.html 58 + + src/app/components/common/page-header/page-header.component.html + 30 + src/app/components/common/permissions-dialog/permissions-dialog.component.html 23 @@ -727,7 +744,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -739,11 +756,11 @@ src/app/components/document-detail/document-detail.component.html - 387 + 450 src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -755,37 +772,48 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html - 52 + 99 src/app/components/manage/management-list/management-list.component.html - 52 + 99 src/app/components/manage/management-list/management-list.component.html - 52 + 99 src/app/components/manage/management-list/management-list.component.html - 52 + 99 src/app/components/manage/saved-views/saved-views.component.html - 68 + 69 src/app/components/manage/workflows/workflows.component.html 28 + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -881,213 +909,67 @@ 99,100 - - Items per page - - src/app/components/admin/settings/settings.component.html - 107 - - Sidebar src/app/components/admin/settings/settings.component.html - 123 + 107 Use 'slim' sidebar (icons only) src/app/components/admin/settings/settings.component.html - 127 + 111 Dark mode src/app/components/admin/settings/settings.component.html - 134 + 118 Use system settings src/app/components/admin/settings/settings.component.html - 137 + 121 Enable dark mode src/app/components/admin/settings/settings.component.html - 138 + 122 Invert thumbnails in dark mode src/app/components/admin/settings/settings.component.html - 139 + 123 Theme Color src/app/components/admin/settings/settings.component.html - 145 + 129 Reset src/app/components/admin/settings/settings.component.html - 152 - - - - Update checking - - src/app/components/admin/settings/settings.component.html - 157 - - - - Enable update checking - - src/app/components/admin/settings/settings.component.html - 160 - - - - What's this? - - src/app/components/admin/settings/settings.component.html - 161 - - - src/app/components/common/page-header/page-header.component.html - 9 - - - src/app/components/common/permissions-select/permissions-select.component.html - 4 - - - - Update checking works by pinging the public GitHub API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. - - src/app/components/admin/settings/settings.component.html - 165,167 - - - - No tracking data is collected by the app in any way. - - src/app/components/admin/settings/settings.component.html - 169 - - - - Saved Views - - src/app/components/admin/settings/settings.component.html - 175 - - - src/app/components/app-frame/app-frame.component.html - 213 - - - src/app/components/app-frame/app-frame.component.html - 215 - - - src/app/components/manage/saved-views/saved-views.component.html - 2 - - - - Show warning when closing saved views with unsaved changes - - src/app/components/admin/settings/settings.component.html - 178 - - - - Show document counts in sidebar saved views - - src/app/components/admin/settings/settings.component.html - 179 - - - - Document editing - - src/app/components/admin/settings/settings.component.html - 185 - - - - Use PDF viewer provided by the browser - - src/app/components/admin/settings/settings.component.html - 189 - - - - This is usually faster for displaying large PDF documents, but it might not work on some browsers. - - src/app/components/admin/settings/settings.component.html - 189 - - - - Default zoom - - src/app/components/admin/settings/settings.component.html - 195 - - - - Fit width - - src/app/components/admin/settings/settings.component.html - 199 - - - - Fit page - - src/app/components/admin/settings/settings.component.html - 200 - - - - Only applies to the Paperless-ngx PDF viewer. - - src/app/components/admin/settings/settings.component.html - 202 - - - - Automatically remove inbox tag(s) on save - - src/app/components/admin/settings/settings.component.html - 208 - - - - Show document thumbnail during loading - - src/app/components/admin/settings/settings.component.html - 214 + 136 Global search src/app/components/admin/settings/settings.component.html - 218 + 142 src/app/components/app-frame/global-search/global-search.component.ts @@ -1098,28 +980,28 @@ Do not include advanced search results src/app/components/admin/settings/settings.component.html - 221 + 145 Full search links to src/app/components/admin/settings/settings.component.html - 227 + 151 Title and content search src/app/components/admin/settings/settings.component.html - 231 + 155 Advanced search src/app/components/admin/settings/settings.component.html - 232 + 156 src/app/components/app-frame/global-search/global-search.component.html @@ -1127,39 +1009,247 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 192 + 208 + + + + Update checking + + src/app/components/admin/settings/settings.component.html + 161 + + + + Enable update checking + + src/app/components/admin/settings/settings.component.html + 164 + + + + What's this? + + src/app/components/admin/settings/settings.component.html + 165 + + + src/app/components/common/page-header/page-header.component.html + 18 + + + src/app/components/common/permissions-select/permissions-select.component.html + 4 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + + + + Update checking works by pinging the public GitHub API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. + + src/app/components/admin/settings/settings.component.html + 169,171 + + + + No tracking data is collected by the app in any way. + + src/app/components/admin/settings/settings.component.html + 173 + + + + Saved Views + + src/app/components/admin/settings/settings.component.html + 179 + + + src/app/components/app-frame/app-frame.component.html + 218 + + + src/app/components/app-frame/app-frame.component.html + 220 + + + src/app/components/manage/saved-views/saved-views.component.html + 2 + + + + Show warning when closing saved views with unsaved changes + + src/app/components/admin/settings/settings.component.html + 182 + + + + Show document counts in sidebar saved views + + src/app/components/admin/settings/settings.component.html + 183 + + + + Items per page + + src/app/components/admin/settings/settings.component.html + 200 + + + + Document editing + + src/app/components/admin/settings/settings.component.html + 212 + + + + Use PDF viewer provided by the browser + + src/app/components/admin/settings/settings.component.html + 215 + + + + This is usually faster for displaying large PDF documents, but it might not work on some browsers. + + src/app/components/admin/settings/settings.component.html + 215 + + + + Default zoom + + src/app/components/admin/settings/settings.component.html + 221 + + + + Fit width + + src/app/components/admin/settings/settings.component.html + 225 + + + + Fit page + + src/app/components/admin/settings/settings.component.html + 226 + + + + Only applies to the Paperless-ngx PDF viewer. + + src/app/components/admin/settings/settings.component.html + 228 + + + + Automatically remove inbox tag(s) on save + + src/app/components/admin/settings/settings.component.html + 234 + + + + Show document thumbnail during loading + + src/app/components/admin/settings/settings.component.html + 240 + + + + Built-in fields to show: + + src/app/components/admin/settings/settings.component.html + 246 + + + + Uncheck fields to hide them on the document details page. + + src/app/components/admin/settings/settings.component.html + 258 Bulk editing src/app/components/admin/settings/settings.component.html - 237 + 264 Show confirmation dialogs src/app/components/admin/settings/settings.component.html - 240 + 267 Apply on close src/app/components/admin/settings/settings.component.html - 241 + 268 + + + + PDF Editor + + src/app/components/admin/settings/settings.component.html + 272 + + + src/app/components/document-detail/document-detail.component.html + 66 + + + src/app/components/document-detail/document-detail.component.ts + 1481 + + + + Default editing mode + + src/app/components/admin/settings/settings.component.html + 275 + + + + Create new document(s) + + src/app/components/admin/settings/settings.component.html + 279 + + + src/app/components/common/pdf-editor/pdf-editor.component.html + 82 + + + + Update existing document + + src/app/components/admin/settings/settings.component.html + 280 + + + src/app/components/common/pdf-editor/pdf-editor.component.html + 87 Notes src/app/components/admin/settings/settings.component.html - 245 + 285 src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1174,14 +1264,14 @@ Enable notes src/app/components/admin/settings/settings.component.html - 248 + 288 Permissions src/app/components/admin/settings/settings.component.html - 259 + 297 src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html @@ -1197,11 +1287,11 @@ src/app/components/document-detail/document-detail.component.html - 343 + 375 src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1217,55 +1307,55 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html - 7 + 38 src/app/components/manage/management-list/management-list.component.html - 7 + 38 src/app/components/manage/management-list/management-list.component.html - 7 + 38 src/app/components/manage/management-list/management-list.component.html - 7 + 38 Default Permissions src/app/components/admin/settings/settings.component.html - 262 + 300 Settings apply to this user account for objects (Tags, Mail Rules, etc. but not documents) created via the web UI. src/app/components/admin/settings/settings.component.html - 266,268 + 304,306 Default Owner src/app/components/admin/settings/settings.component.html - 273 + 311 Objects without an owner can be viewed and edited by all users src/app/components/admin/settings/settings.component.html - 277 + 315 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1276,34 +1366,34 @@ Default View Permissions src/app/components/admin/settings/settings.component.html - 282 + 320 Users: src/app/components/admin/settings/settings.component.html - 287 + 325 src/app/components/admin/settings/settings.component.html - 314 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1318,27 +1408,27 @@ Groups: src/app/components/admin/settings/settings.component.html - 297 + 335 src/app/components/admin/settings/settings.component.html - 324 + 362 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1353,22 +1443,22 @@ Default Edit Permissions src/app/components/admin/settings/settings.component.html - 309 + 347 Edit permissions also grant viewing permissions src/app/components/admin/settings/settings.component.html - 333 + 371 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1379,7 +1469,7 @@ Notifications src/app/components/admin/settings/settings.component.html - 341 + 379 src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.html @@ -1390,53 +1480,53 @@ Document processing src/app/components/admin/settings/settings.component.html - 344 + 382 Show notifications when new documents are detected src/app/components/admin/settings/settings.component.html - 348 + 386 Show notifications when document processing completes successfully src/app/components/admin/settings/settings.component.html - 349 + 387 Show notifications when document processing fails src/app/components/admin/settings/settings.component.html - 350 + 388 Suppress notifications on dashboard src/app/components/admin/settings/settings.component.html - 351 + 389 This will suppress all messages about document processing status on the dashboard. src/app/components/admin/settings/settings.component.html - 351 + 389 Cancel src/app/components/admin/settings/settings.component.html - 361 + 399 src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1444,7 +1534,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1476,7 +1566,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1484,11 +1574,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1500,75 +1586,214 @@ src/app/components/manage/saved-views/saved-views.component.html - 73 + 74 Use system language src/app/components/admin/settings/settings.component.ts - 78 + 79 Use date format of display language src/app/components/admin/settings/settings.component.ts - 81 + 82 + + + + Archive serial number + + src/app/components/admin/settings/settings.component.ts + 96 + + + src/app/components/document-detail/document-detail.component.html + 150 + + + + Correspondent + + src/app/components/admin/settings/settings.component.ts + 98 + + + src/app/components/document-detail/document-detail.component.html + 155 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 19 + + + src/app/components/document-list/document-list.component.html + 211 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 50 + + + src/app/data/document.ts + 46 + + + src/app/data/document.ts + 89 + + + + Document type + + src/app/components/admin/settings/settings.component.ts + 99 + + + src/app/components/document-detail/document-detail.component.html + 159 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 33 + + + src/app/components/document-list/document-list.component.html + 251 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 61 + + + src/app/data/document.ts + 50 + + + src/app/data/document.ts + 91 + + + + Storage path + + src/app/components/admin/settings/settings.component.ts + 100 + + + src/app/components/document-detail/document-detail.component.html + 163 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 47 + + + src/app/components/document-list/document-list.component.html + 260 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 72 + + + src/app/data/document.ts + 54 + + + + Tags + + src/app/components/admin/settings/settings.component.ts + 101 + + + src/app/components/app-frame/app-frame.component.html + 188 + + + src/app/components/app-frame/app-frame.component.html + 191 + + + src/app/components/common/input/tags/tags.component.ts + 80 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 94 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 5 + + + src/app/components/document-list/document-list.component.html + 224 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 39 + + + src/app/data/document.ts + 42 Error retrieving users src/app/components/admin/settings/settings.component.ts - 226 + 252 src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving groups src/app/components/admin/settings/settings.component.ts - 245 + 271 src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Settings were saved successfully. src/app/components/admin/settings/settings.component.ts - 548 + 588 Settings were saved successfully. Reload is required to apply some changes. src/app/components/admin/settings/settings.component.ts - 552 + 592 Reload now src/app/components/admin/settings/settings.component.ts - 553 + 593 An error occurred while saving settings. src/app/components/admin/settings/settings.component.ts - 563 + 603 src/app/components/app-frame/app-frame.component.ts - 167 + 182 @@ -1579,11 +1804,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 281 src/app/components/app-frame/app-frame.component.html - 278 + 283 @@ -1597,20 +1822,8 @@ 8 - src/app/components/manage/management-list/management-list.component.html - 4 - - - src/app/components/manage/management-list/management-list.component.html - 4 - - - src/app/components/manage/management-list/management-list.component.html - 4 - - - src/app/components/manage/management-list/management-list.component.html - 4 + src/app/components/document-list/document-list.component.html + 153 @@ -1628,7 +1841,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1696,35 +1909,35 @@ src/app/components/manage/management-list/management-list.component.html - 21 + 52 src/app/components/manage/management-list/management-list.component.html - 21 + 52 src/app/components/manage/management-list/management-list.component.html - 21 + 52 src/app/components/manage/management-list/management-list.component.html - 21 + 52 src/app/components/manage/management-list/management-list.component.html - 38 + 85 src/app/components/manage/management-list/management-list.component.html - 38 + 85 src/app/components/manage/management-list/management-list.component.html - 38 + 85 src/app/components/manage/management-list/management-list.component.html - 38 + 85 src/app/components/manage/workflows/workflows.component.html @@ -1743,11 +1956,15 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 + + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 32 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1794,13 +2011,17 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html 67 + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 38 + src/app/components/document-detail/document-detail.component.html 50 src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1812,23 +2033,23 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html - 44 + 91 src/app/components/manage/management-list/management-list.component.html - 44 + 91 src/app/components/manage/management-list/management-list.component.html - 44 + 91 src/app/components/manage/management-list/management-list.component.html - 44 + 91 src/app/components/manage/saved-views/saved-views.component.html @@ -1846,127 +2067,148 @@ 97 + + Duplicate(s) detected + + src/app/components/admin/tasks/tasks.component.html + 103 + + Dismiss src/app/components/admin/tasks/tasks.component.html - 110 + 116 src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Open Document src/app/components/admin/tasks/tasks.component.html - 115 + 121 {VAR_PLURAL, plural, =1 {One task} other { total tasks}} src/app/components/admin/tasks/tasks.component.html - 134 + 140  ( selected) src/app/components/admin/tasks/tasks.component.html - 136 + 142 Failed src/app/components/admin/tasks/tasks.component.html - 148,150 + 154,156 Complete src/app/components/admin/tasks/tasks.component.html - 156,158 + 162,164 Started src/app/components/admin/tasks/tasks.component.html - 164,166 + 170,172 Queued src/app/components/admin/tasks/tasks.component.html - 172,174 + 178,180 Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 + + + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 @@ -1977,11 +2219,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 241 src/app/components/app-frame/app-frame.component.html - 239 + 244 @@ -2004,6 +2246,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Empty trash @@ -2077,7 +2327,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2093,7 +2347,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 167 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2101,7 +2355,7 @@ src/app/components/manage/custom-fields/custom-fields.component.html - 55 + 61 src/app/components/manage/mail/mail.component.html @@ -2113,63 +2367,63 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html - 10 + 41 src/app/components/manage/management-list/management-list.component.html - 10 + 41 src/app/components/manage/management-list/management-list.component.html - 10 + 41 src/app/components/manage/management-list/management-list.component.html - 10 + 41 src/app/components/manage/management-list/management-list.component.html - 115 + 168 src/app/components/manage/management-list/management-list.component.html - 115 + 168 src/app/components/manage/management-list/management-list.component.html - 115 + 168 src/app/components/manage/management-list/management-list.component.html - 115 + 168 src/app/components/manage/management-list/management-list.component.html - 127 + 187 src/app/components/manage/management-list/management-list.component.html - 127 + 187 src/app/components/manage/management-list/management-list.component.html - 127 + 187 src/app/components/manage/management-list/management-list.component.html - 127 + 187 src/app/components/manage/management-list/management-list.component.ts - 239 + 253 src/app/components/manage/saved-views/saved-views.component.html @@ -2203,11 +2457,11 @@ src/app/components/manage/management-list/management-list.component.ts - 235 + 249 src/app/components/manage/management-list/management-list.component.ts - 352 + 414 @@ -2229,27 +2483,27 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts - 104 + 106 src/app/components/manage/mail/mail.component.ts - 191 + 201 src/app/components/manage/mail/mail.component.ts - 292 + 302 src/app/components/manage/management-list/management-list.component.ts - 354 + 416 src/app/components/manage/workflows/workflows.component.ts @@ -2334,11 +2588,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 272 src/app/components/app-frame/app-frame.component.html - 269 + 274 @@ -2420,7 +2674,7 @@ src/app/components/manage/custom-fields/custom-fields.component.html - 52 + 58 src/app/components/manage/mail/mail.component.html @@ -2432,43 +2686,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 114 + 167 src/app/components/manage/management-list/management-list.component.html - 114 + 167 src/app/components/manage/management-list/management-list.component.html - 114 + 167 src/app/components/manage/management-list/management-list.component.html - 114 + 167 src/app/components/manage/management-list/management-list.component.html - 124 + 184 src/app/components/manage/management-list/management-list.component.html - 124 + 184 src/app/components/manage/management-list/management-list.component.html - 124 + 184 src/app/components/manage/management-list/management-list.component.html - 124 + 184 src/app/components/manage/workflows/workflows.component.html @@ -2497,86 +2751,86 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1116 src/app/components/document-detail/document-detail.component.ts - 1390 + 1482 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 797 + 802 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 830 + 835 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 849 + 854 src/app/components/manage/custom-fields/custom-fields.component.ts - 106 + 108 src/app/components/manage/mail/mail.component.ts - 193 + 203 src/app/components/manage/mail/mail.component.ts - 294 + 304 src/app/components/manage/management-list/management-list.component.ts - 356 + 418 src/app/components/manage/workflows/workflows.component.ts @@ -2587,56 +2841,56 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 @@ -2650,133 +2904,98 @@ Logged in as src/app/components/app-frame/app-frame.component.html - 43 + 46 My Profile src/app/components/app-frame/app-frame.component.html - 47 + 50 Logout src/app/components/app-frame/app-frame.component.html - 54 + 57 Documentation src/app/components/app-frame/app-frame.component.html - 59 + 62 src/app/components/app-frame/app-frame.component.html - 297 + 302 src/app/components/app-frame/app-frame.component.html - 300 + 305 Saved views src/app/components/app-frame/app-frame.component.html - 99 + 104 src/app/components/app-frame/app-frame.component.html - 104 + 109 Open documents src/app/components/app-frame/app-frame.component.html - 139 + 144 Close all src/app/components/app-frame/app-frame.component.html - 159 + 164 src/app/components/app-frame/app-frame.component.html - 161 + 166 Manage src/app/components/app-frame/app-frame.component.html - 170 + 175 Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 181 src/app/components/app-frame/app-frame.component.html - 178 + 183 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 107 - - Tags - - src/app/components/app-frame/app-frame.component.html - 183 - - - src/app/components/app-frame/app-frame.component.html - 186 - - - src/app/components/common/input/tags/tags.component.ts - 80 - - - src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html - 94 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 - - - src/app/components/document-list/document-list.component.html - 199 - - - src/app/components/document-list/filter-editor/filter-editor.component.html - 39 - - - src/app/data/document.ts - 42 - - Document Types src/app/components/app-frame/app-frame.component.html - 192 + 197 src/app/components/app-frame/app-frame.component.html - 194 + 199 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2787,11 +3006,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 204 src/app/components/app-frame/app-frame.component.html - 201 + 206 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2802,11 +3021,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 211 src/app/components/app-frame/app-frame.component.html - 208 + 213 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -2821,11 +3040,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 227 src/app/components/app-frame/app-frame.component.html - 224 + 229 src/app/components/manage/workflows/workflows.component.html @@ -2836,92 +3055,92 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 234 src/app/components/app-frame/app-frame.component.html - 232 + 237 Administration src/app/components/app-frame/app-frame.component.html - 247 + 252 Configuration src/app/components/app-frame/app-frame.component.html - 260 + 265 src/app/components/app-frame/app-frame.component.html - 262 + 267 GitHub src/app/components/app-frame/app-frame.component.html - 307 + 312 is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 321,322 Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 322 Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 326 How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 333,335 Update available src/app/components/app-frame/app-frame.component.html - 341 + 346 Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 270 Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 273 An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 294 @@ -2985,7 +3204,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 139 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3123,12 +3342,30 @@ 20 + + Ask a question about this document... + + src/app/components/chat/chat/chat.component.ts + 37 + + + + Ask a question about a document... + + src/app/components/chat/chat/chat.component.ts + 38 + + Clear src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Are you sure? @@ -3141,14 +3378,14 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3156,31 +3393,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 1069 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 440 + 445 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 480 + 485 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 518 + 523 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 556 + 561 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 618 + 623 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 @@ -3225,6 +3462,67 @@ 39 + + Replace current document + + src/app/components/common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component.html + 22 + + + + Create new document + + src/app/components/common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component.html + 35 + + + + Copy metadata + + src/app/components/common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component.html + 43,44 + + + + Delete original + + src/app/components/common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component.html + 48 + + + + Remove password protection + + src/app/components/common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component.ts + 18 + + + src/app/components/document-detail/document-detail.component.ts + 1533 + + + + Create an unprotected copy or replace the existing file. + + src/app/components/common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component.ts + 22 + + + src/app/components/document-detail/document-detail.component.ts + 1534 + + + + Start + + src/app/components/common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component.ts + 25 + + + src/app/components/document-detail/document-detail.component.ts + 1535 + + Note that only PDFs will be rotated. @@ -3273,7 +3571,7 @@ src/app/components/manage/custom-fields/custom-fields.component.ts - 85 + 87 @@ -3284,14 +3582,14 @@ src/app/components/manage/custom-fields/custom-fields.component.ts - 94 + 96 Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3311,7 +3609,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 113 src/app/components/common/input/date/date.component.html @@ -3322,7 +3620,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3344,9 +3642,13 @@ src/app/components/common/input/date/date.component.html 22 + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 155 + src/app/components/document-detail/document-detail.component.html - 107 + 103 src/app/guards/dirty-saved-view.guard.ts @@ -3357,48 +3659,48 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3409,7 +3711,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3428,29 +3730,45 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 + + + src/app/components/manage/management-list/management-list.component.html + 32 + + + src/app/components/manage/management-list/management-list.component.html + 32 + + + src/app/components/manage/management-list/management-list.component.html + 32 + + + src/app/components/manage/management-list/management-list.component.html + 32 Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 @@ -3464,17 +3782,6 @@ 101 - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - From @@ -3505,11 +3812,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3520,59 +3827,94 @@ 93 + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 107 Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 118 src/app/pipes/custom-date.pipe.ts 29 + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 123 + + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 137 + + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 143 + + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 157 + + Matching algorithm @@ -3631,7 +3973,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 @@ -3669,32 +4011,25 @@ 20 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 @@ -3896,7 +4231,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4055,7 +4390,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 @@ -4073,7 +4408,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 @@ -4084,7 +4419,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4102,10 +4437,18 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 264 + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 302 + src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Only process attachments @@ -4273,7 +4616,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 51 + 53 @@ -4291,7 +4634,7 @@ src/app/components/document-detail/document-detail.component.html - 309 + 341 @@ -4348,7 +4691,7 @@ src/app/components/manage/tag-list/tag-list.component.ts - 51 + 53 @@ -4394,7 +4737,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4402,7 +4745,11 @@ src/app/components/document-detail/document-detail.component.html - 92 + 88 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 124 @@ -4474,7 +4821,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 @@ -4489,43 +4836,43 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 @@ -4582,444 +4929,465 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 + + + + One password per line. The workflow will try them in order until one succeeds. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 436,438 + + + + Passwords + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 441 + + + + Passwords are stored in plain text. Use with caution. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 445 Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5030,119 +5398,235 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 + + + + Password removal + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 144 + + + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 213 + + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 220 + + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 227 + + + + Has any of these correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 234 + + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 242 + + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 250 + + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 258 + + + + Has any of these document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 266 + + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 274 + + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 282 + + + + Has any of these storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 290 + + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 298 + + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 306 Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 535 Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 539 + + + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 + + + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 @@ -5170,7 +5654,7 @@ Create src/app/components/common/filterable-dropdown/filterable-dropdown.component.html - 58 + 57 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -5178,40 +5662,40 @@ src/app/components/manage/management-list/management-list.component.html - 13 + 44 src/app/components/manage/management-list/management-list.component.html - 13 + 44 src/app/components/manage/management-list/management-list.component.html - 13 + 44 src/app/components/manage/management-list/management-list.component.html - 13 + 44 Apply src/app/components/common/filterable-dropdown/filterable-dropdown.component.html - 64 + 63 Click again to exclude items. src/app/components/common/filterable-dropdown/filterable-dropdown.component.html - 77 + 76 Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 99 Filter drop down element to filter for documents with no correspondent/type/tag assigned @@ -5219,7 +5703,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 562 + 788 @@ -5261,7 +5745,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5295,11 +5779,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 63 + 65 @@ -5385,7 +5869,7 @@ Show password src/app/components/common/input/password/password.component.html - 6 + 12 @@ -5406,7 +5890,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths @@ -5418,11 +5902,11 @@ src/app/components/common/tag/tag.component.html - 14 + 20 src/app/components/common/tag/tag.component.html - 17 + 23 src/app/pipes/object-name.pipe.ts @@ -5451,33 +5935,63 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Remove tag src/app/components/common/input/tags/tags.component.html - 21 + 23 Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 53 + 55 + + + + Suggestion: + + src/app/components/common/input/text/text.component.html + 20 + + + + Copied! + + src/app/components/common/page-header/page-header.component.html + 8 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 54 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 164 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 39 Read more src/app/components/common/page-header/page-header.component.html - 15 + 24 src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Select all pages @@ -5549,20 +6063,6 @@ 70 - - Create new document(s) - - src/app/components/common/pdf-editor/pdf-editor.component.html - 82 - - - - Update existing document - - src/app/components/common/pdf-editor/pdf-editor.component.html - 87 - - Copy metadata @@ -5690,7 +6190,7 @@ Open preview src/app/components/common/preview-popup/preview-popup.component.ts - 52 + 54 @@ -5733,7 +6233,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -5741,15 +6241,15 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html - 284 + 321 src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -5767,21 +6267,6 @@ 47 - - Copied! - - src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 54 - - - src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 - - - src/app/components/common/share-links-dialog/share-links-dialog.component.html - 39 - - Warning: changing the token cannot be undone @@ -5835,127 +6320,422 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 + + + + Selected documents: + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 10 + + + + + more… + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 22 + + + + Expires + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 31 + + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 87 + + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 35 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 52 + + + + Share archive version (if available) + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 47 + + + + Share link bundle requested + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 54 + + + + You can copy the share link below or open the manager to monitor progress. The link will start working once the bundle is ready. + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 55,57 + + + + Status + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 60 + + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 33 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 58 + + + src/app/components/common/toast/toast.component.html + 28 + + + src/app/components/manage/mail/mail.component.html + 114 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + + + src/app/components/manage/workflows/workflows.component.html + 19 + + + + Slug + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 64 + + + + Link + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 66 + + + + Copy link + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 81 + + + + Never + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 93 + + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 101 + + + src/app/data/share-link.ts + 17 + + + + File version + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 96 + + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 37 + + + + Size + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 99 + + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 34 + + + + A zip file containing the selected documents will be created for this share link bundle. This process happens in the background and may take some time, especially for large bundles. + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 109 + + + + Manage share link bundles + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html + 113 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 119 + + + + Create share link bundle + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.ts + 61 + + + + Create link + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.ts + 62 + + + + Share link copied to clipboard. + + src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.ts + 96 + + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts + 112 + + + + Loading share link bundles… + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 10 + + + + Status updates every few seconds while bundles are being prepared. + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 21 + + + + No share link bundles currently exist. + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 25 + + + + Built: + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 48 + + + + View error details + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 62 + + + + Copy share link + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 113 + + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 122 + + + + Retry + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 132 + + + + Delete share link bundle + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html + 141 + + + + Share link bundles + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts + 42 + + + + Failed to load share link bundles. + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts + 66 + + + + Error retrieving share link bundles. + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts + 68 + + + + Share link bundle deleted. + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts + 121 + + + + Error deleting share link bundle. + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts + 127 + + + + Share link bundle rebuild requested. + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts + 139 + + + + Error requesting rebuild. + + src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts + 144 @@ -5979,82 +6759,90 @@ 48 - - Expires - - src/app/components/common/share-links-dialog/share-links-dialog.component.html - 52 - - - - 1 day - - src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 25 - - - src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 102 - - - - 7 days - - src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 26 - - - - 30 days - - src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 27 - - - - Never - - src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 28 - - Share Links src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 32 + 31 src/app/components/document-detail/document-detail.component.html - 88 + 84 Error retrieving links src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 83 + 82 + + + + 1 day + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 101 + + + src/app/data/share-link.ts + 14 days src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 102 + 101 Error deleting link src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 131 + 130 Error creating link src/app/components/common/share-links-dialog/share-links-dialog.component.ts - 159 + 158 + + + + Suggest + + src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html + 8 + + + + Show suggestions + + src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html + 17 + + + + No novel suggestions + + src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html + 24 + + + + + + src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html + 30 + + + src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html + 36 + + + src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html + 42 @@ -6113,25 +6901,6 @@ 52 - - Status - - src/app/components/common/system-status-dialog/system-status-dialog.component.html - 58 - - - src/app/components/common/toast/toast.component.html - 28 - - - src/app/components/manage/mail/mail.component.html - 114 - - - src/app/components/manage/workflows/workflows.component.html - 19 - - Migration Status @@ -6209,6 +6978,10 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 245 + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 293 + Last Updated @@ -6244,6 +7017,10 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 252 + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 300 + WebSocket Connection @@ -6259,6 +7036,13 @@ 261 + + AI Index + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 270 + + Copy Raw Error @@ -6320,7 +7104,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 @@ -6335,7 +7119,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 @@ -6350,7 +7134,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 @@ -6368,7 +7152,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 @@ -6379,7 +7163,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 @@ -6496,7 +7280,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 385 + 390 this string is used to separate processing, failed and added on the file upload widget @@ -6549,8 +7333,24 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 + + + src/app/components/manage/management-list/management-list.component.html + 29 + + + src/app/components/manage/management-list/management-list.component.html + 29 + + + src/app/components/manage/management-list/management-list.component.html + 29 + + + src/app/components/manage/management-list/management-list.component.html + 29 @@ -6589,7 +7389,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 @@ -6610,51 +7410,62 @@ 69 - - PDF Editor + + Remove Password src/app/components/document-detail/document-detail.component.html - 66 - - - src/app/components/document-detail/document-detail.component.ts - 1389 + 71 Send src/app/components/document-detail/document-detail.component.html - 84 + 80 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 111 Previous src/app/components/document-detail/document-detail.component.html - 110 + 106 + + + + Next + + src/app/components/document-detail/document-detail.component.html + 109 + + + src/main.ts + 403 Details src/app/components/document-detail/document-detail.component.html - 123 + 145 Title src/app/components/document-detail/document-detail.component.html - 126 + 148 src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 179 + 195 src/app/data/document.ts @@ -6665,102 +7476,18 @@ 90 - - Archive serial number - - src/app/components/document-detail/document-detail.component.html - 127 - - Date created src/app/components/document-detail/document-detail.component.html - 128 - - - - Correspondent - - src/app/components/document-detail/document-detail.component.html - 130 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 - - - src/app/components/document-list/document-list.component.html - 186 - - - src/app/components/document-list/filter-editor/filter-editor.component.html - 50 - - - src/app/data/document.ts - 46 - - - src/app/data/document.ts - 89 - - - - Document type - - src/app/components/document-detail/document-detail.component.html - 132 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 - - - src/app/components/document-list/document-list.component.html - 226 - - - src/app/components/document-list/filter-editor/filter-editor.component.html - 61 - - - src/app/data/document.ts - 50 - - - src/app/data/document.ts - 91 - - - - Storage path - - src/app/components/document-detail/document-detail.component.html - 134 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 - - - src/app/components/document-list/document-list.component.html - 235 - - - src/app/components/document-list/filter-editor/filter-editor.component.html - 72 - - - src/app/data/document.ts - 54 + 152 Default src/app/components/document-detail/document-detail.component.html - 135 + 164 src/app/components/manage/saved-views/saved-views.component.html @@ -6771,14 +7498,14 @@ Content src/app/components/document-detail/document-detail.component.html - 239 + 271 Metadata src/app/components/document-detail/document-detail.component.html - 248 + 280 src/app/components/document-detail/metadata-collapse/metadata-collapse.component.ts @@ -6789,175 +7516,196 @@ Date modified src/app/components/document-detail/document-detail.component.html - 255 + 287 Date added src/app/components/document-detail/document-detail.component.html - 259 + 291 Media filename src/app/components/document-detail/document-detail.component.html - 263 + 295 Original filename src/app/components/document-detail/document-detail.component.html - 267 + 299 Original MD5 checksum src/app/components/document-detail/document-detail.component.html - 271 + 303 Original file size src/app/components/document-detail/document-detail.component.html - 275 + 307 Original mime type src/app/components/document-detail/document-detail.component.html - 279 + 311 Archive MD5 checksum src/app/components/document-detail/document-detail.component.html - 284 + 316 Archive file size src/app/components/document-detail/document-detail.component.html - 290 + 322 Original document metadata src/app/components/document-detail/document-detail.component.html - 299 + 331 Archived document metadata src/app/components/document-detail/document-detail.component.html - 302 + 334 Notes src/app/components/document-detail/document-detail.component.html - 321,324 + 353,356 History src/app/components/document-detail/document-detail.component.html - 332 + 364 + + + + Duplicates + + src/app/components/document-detail/document-detail.component.html + 386,390 + + + + Duplicate documents detected: + + src/app/components/document-detail/document-detail.component.html + 392 + + + + In trash + + src/app/components/document-detail/document-detail.component.html + 403 Save & next src/app/components/document-detail/document-detail.component.html - 369 + 432 Save & close src/app/components/document-detail/document-detail.component.html - 372 + 435 Document loading... src/app/components/document-detail/document-detail.component.html - 382 + 445 Enter Password src/app/components/document-detail/document-detail.component.html - 436 + 497 An error occurred loading content: src/app/components/document-detail/document-detail.component.ts - 416,418 + 434,436 Document changes detected src/app/components/document-detail/document-detail.component.ts - 450 + 473 The version of this document in your browser session appears older than the existing version. src/app/components/document-detail/document-detail.component.ts - 451 + 474 Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document. src/app/components/document-detail/document-detail.component.ts - 452 + 475 Ok src/app/components/document-detail/document-detail.component.ts - 454 + 477 Next document src/app/components/document-detail/document-detail.component.ts - 580 + 605 Previous document src/app/components/document-detail/document-detail.component.ts - 590 + 615 Close document src/app/components/document-detail/document-detail.component.ts - 598 + 623 src/app/services/open-documents.service.ts @@ -6968,181 +7716,202 @@ Save document src/app/components/document-detail/document-detail.component.ts - 605 + 630 Save and close / next src/app/components/document-detail/document-detail.component.ts - 614 + 639 Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 694 Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 749 Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 958 src/app/components/document-detail/document-detail.component.ts - 891 + 982 Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 988 Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 1038 Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 1070 Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 1071 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 753 + 758 Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 1073 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 755 + 760 Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1092 Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1112 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1113 The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1114 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1124 Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1135 Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1184 Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1263 PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1500 Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1512 + + + + Please enter the current password before attempting to remove it. + + src/app/components/document-detail/document-detail.component.ts + 1523 + + + + Password removal operation for "" will begin in the background. + + src/app/components/document-detail/document-detail.component.ts + 1555 + + + + Error executing password removal operation + + src/app/components/document-detail/document-detail.component.ts + 1569 Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1606 Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1618 An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1683 src/app/components/document-detail/document-detail.component.ts - 1529 + 1687 @@ -7152,25 +7921,18 @@ 10 - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7181,7 +7943,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7192,7 +7954,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7203,7 +7965,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7214,7 +7976,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7222,88 +7984,95 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 187 + 203 Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 + + + + Create a share link bundle + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 116 Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 145 Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 149 Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 153 Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 158 Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 289 + 294 "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 377 + 382 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383 + 388 "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 This is for messages like 'modify "tag1" and "tag2"' @@ -7311,7 +8080,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 387,389 + 392,394 this is for messages like 'modify "tag1", "tag2" and "tag3"' @@ -7319,14 +8088,14 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 404 + 409 This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 410 + 415 @@ -7335,14 +8104,14 @@ )"/> to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 415,417 + 420,422 This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 423 + 428 @@ -7351,7 +8120,7 @@ )"/> from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,430 + 433,435 @@ -7362,84 +8131,84 @@ )"/> on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 432,436 + 437,441 Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 475 + 480 This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 477 + 482 Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 513 + 518 This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 515 + 520 Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 551 + 556 This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 553 + 558 Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 582 + 587 This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 588 + 593 @@ -7448,14 +8217,14 @@ )"/> to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 593,595 + 598,600 This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 601 + 606 @@ -7464,7 +8233,7 @@ )"/> from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,608 + 611,613 @@ -7475,77 +8244,91 @@ )"/> on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 610,614 + 615,619 Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 752 + 757 This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 794 + 799 The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 795 + 800 Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 827 + 832 This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 828 + 833 Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 847 + 852 This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 848 + 853 Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 867 + 872 Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 891 + 896 Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 900 + 905 + + + + Share link bundle creation requested. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 945 + + + + Share link bundle creation is not available yet. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 952 @@ -7578,7 +8361,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 @@ -7702,6 +8485,22 @@ Select src/app/components/document-list/document-list.component.html + 5 + + + src/app/components/manage/management-list/management-list.component.html + 6 + + + src/app/components/manage/management-list/management-list.component.html + 6 + + + src/app/components/manage/management-list/management-list.component.html + 6 + + + src/app/components/manage/management-list/management-list.component.html 6 @@ -7713,103 +8512,194 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 + + + src/app/components/manage/management-list/management-list.component.html + 12 + + + src/app/components/manage/management-list/management-list.component.html + 12 + + + src/app/components/manage/management-list/management-list.component.html + 12 + + + src/app/components/manage/management-list/management-list.component.html + 12 Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + + src/app/components/manage/management-list/management-list.component.html + 13 Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 + + + src/app/components/manage/management-list/management-list.component.html + 14 + + + src/app/components/manage/management-list/management-list.component.html + 14 + + + src/app/components/manage/management-list/management-list.component.html + 14 + + + src/app/components/manage/management-list/management-list.component.html + 14 - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.html + 20 + + + src/app/components/manage/management-list/management-list.component.html + 20 + + + src/app/components/manage/management-list/management-list.component.html + 20 + + + src/app/components/manage/management-list/management-list.component.html + 20 + + + + None + + src/app/components/document-list/document-list.component.html + 23 + + + src/app/components/manage/management-list/management-list.component.html + 25 + + + src/app/components/manage/management-list/management-list.component.html + 25 + + + src/app/components/manage/management-list/management-list.component.html + 25 + + + src/app/components/manage/management-list/management-list.component.html + 25 + + + src/app/components/manage/management-list/management-list.component.ts + 129 + + + src/app/data/matching-model.ts + 45 Sort src/app/components/document-list/document-list.component.html - 48 + 68 Views src/app/components/document-list/document-list.component.html - 74 + 94 Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Save as... src/app/components/document-list/document-list.component.html - 96 + 116 All saved views src/app/components/document-list/document-list.component.html - 97 + 117 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7820,25 +8710,25 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 184 + 200 src/app/data/document.ts @@ -7853,28 +8743,28 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -7889,49 +8779,49 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -7943,84 +8833,84 @@ src/app/data/paperless-config.ts - 91 + 104 Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Next page src/app/components/document-list/document-list.component.ts - 350 + 352 View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 @@ -8034,56 +8924,56 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 182 + 198 File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 189 + 205 More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 198 + 214 equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 204 + 220 is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 208 + 224 is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 212 + 228 greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 216 + 232 less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 220 + 236 @@ -8092,14 +8982,14 @@ )?.name"/> src/app/components/document-list/filter-editor/filter-editor.component.ts - 261,265 + 277,281 Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 267 + 283 @@ -8108,14 +8998,14 @@ )?.name"/> src/app/components/document-list/filter-editor/filter-editor.component.ts - 273,277 + 289,293 Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 279 + 295 @@ -8124,70 +9014,70 @@ )?.name"/> src/app/components/document-list/filter-editor/filter-editor.component.ts - 285,289 + 301,305 Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 291 + 307 Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 295,297 + 311,313 Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 301 + 317 Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 305 + 321 Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 308 + 324 ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 311 + 327 Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 314 + 330 Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 317 + 333 Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 320 + 336 @@ -8308,28 +9198,28 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 51 correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 48 + 52 Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 53 + 57 Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 78 + 82 @@ -8357,79 +9247,79 @@ Filter Documents () src/app/components/manage/custom-fields/custom-fields.component.html - 45 + 50 src/app/components/manage/management-list/management-list.component.html - 117 + 176 src/app/components/manage/management-list/management-list.component.html - 117 + 176 src/app/components/manage/management-list/management-list.component.html - 117 + 176 src/app/components/manage/management-list/management-list.component.html - 117 + 176 No fields defined. src/app/components/manage/custom-fields/custom-fields.component.html - 70 + 80 Confirm delete field src/app/components/manage/custom-fields/custom-fields.component.ts - 102 + 104 This operation will permanently delete this field. src/app/components/manage/custom-fields/custom-fields.component.ts - 103 + 105 Deleted field "" src/app/components/manage/custom-fields/custom-fields.component.ts - 112 + 114 Error deleting field "". src/app/components/manage/custom-fields/custom-fields.component.ts - 121 + 123 document type src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 47 document types src/app/components/manage/document-type-list/document-type-list.component.ts - 44 + 48 Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 49 + 53 @@ -8517,351 +9407,427 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html 41 + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 114 Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 136 OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 144 OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 155 Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 179 Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 191 Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 199 This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 200 Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 210 Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 221 Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 233 Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 238 Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 256 Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 267 Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 283 Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 284 Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 289 Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 300 This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 301 Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 311 Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 322 Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 346 Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 351 src/app/components/manage/management-list/management-list.component.ts - 339 + 401 + + + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 Filter by: src/app/components/manage/management-list/management-list.component.html - 20 + 51 src/app/components/manage/management-list/management-list.component.html - 20 + 51 src/app/components/manage/management-list/management-list.component.html - 20 + 51 src/app/components/manage/management-list/management-list.component.html - 20 + 51 + + + + Show: + + src/app/components/manage/management-list/management-list.component.html + 59 + + + src/app/components/manage/management-list/management-list.component.html + 59 + + + src/app/components/manage/management-list/management-list.component.html + 59 + + + src/app/components/manage/management-list/management-list.component.html + 59 + + + + per page + + src/app/components/manage/management-list/management-list.component.html + 67 + + + src/app/components/manage/management-list/management-list.component.html + 67 + + + src/app/components/manage/management-list/management-list.component.html + 67 + + + src/app/components/manage/management-list/management-list.component.html + 67 Matching src/app/components/manage/management-list/management-list.component.html - 39 + 86 src/app/components/manage/management-list/management-list.component.html - 39 + 86 src/app/components/manage/management-list/management-list.component.html - 39 + 86 src/app/components/manage/management-list/management-list.component.html - 39 + 86 Document count src/app/components/manage/management-list/management-list.component.html - 40 + 87 src/app/components/manage/management-list/management-list.component.html - 40 + 87 src/app/components/manage/management-list/management-list.component.html - 40 + 87 src/app/components/manage/management-list/management-list.component.html - 40 + 87 {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 67 + 114 src/app/components/manage/management-list/management-list.component.html - 67 + 114 src/app/components/manage/management-list/management-list.component.html - 67 + 114 src/app/components/manage/management-list/management-list.component.html - 67 + 114 Automatic src/app/components/manage/management-list/management-list.component.ts - 118 + 127 src/app/data/matching-model.ts 15 - - None - - src/app/components/manage/management-list/management-list.component.ts - 120 - - - src/app/data/matching-model.ts - 45 - - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 192 + 206 Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 197 + 211 Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 212 + 226 Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 217 + 231 Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 237 + 251 Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 253 + 267 + + + + Error saving settings + + src/app/components/manage/management-list/management-list.component.ts + 306 Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 332 + 394 - - This operation will permanently delete all objects. + + This operation will permanently delete the selected . src/app/components/manage/management-list/management-list.component.ts - 353 + 415 Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 367 + 429 Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 373 + 435 @@ -8906,11 +9872,18 @@ 48 + + Note: ordering is not preserved + + src/app/components/manage/saved-views/saved-views.component.html + 54 + + No saved views defined. src/app/components/manage/saved-views/saved-views.component.html - 61 + 62 @@ -8938,42 +9911,42 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 47 storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 46 + 48 Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 62 + 64 tag src/app/components/manage/tag-list/tag-list.component.ts - 45 + 47 tags src/app/components/manage/tag-list/tag-list.component.ts - 46 + 48 Do you really want to delete the tag ""? src/app/components/manage/tag-list/tag-list.component.ts - 61 + 64 @@ -9310,196 +10283,322 @@ General Settings src/app/data/paperless-config.ts - 50 + 51 OCR Settings src/app/data/paperless-config.ts - 51 + 52 Barcode Settings src/app/data/paperless-config.ts - 52 + 53 + + + + AI Settings + + src/app/data/paperless-config.ts + 54 Output Type src/app/data/paperless-config.ts - 76 + 89 Language src/app/data/paperless-config.ts - 84 + 97 Mode src/app/data/paperless-config.ts - 98 + 111 Skip Archive File src/app/data/paperless-config.ts - 106 + 119 Image DPI src/app/data/paperless-config.ts - 114 + 127 Clean src/app/data/paperless-config.ts - 121 + 134 Deskew src/app/data/paperless-config.ts - 129 + 142 Rotate Pages src/app/data/paperless-config.ts - 136 + 149 Rotate Pages Threshold src/app/data/paperless-config.ts - 143 + 156 Max Image Pixels src/app/data/paperless-config.ts - 150 + 163 Color Conversion Strategy src/app/data/paperless-config.ts - 157 + 170 OCR Arguments src/app/data/paperless-config.ts - 165 + 178 Application Logo src/app/data/paperless-config.ts - 172 + 185 Application Title src/app/data/paperless-config.ts - 179 + 192 Enable Barcodes src/app/data/paperless-config.ts - 186 + 199 Enable TIFF Support src/app/data/paperless-config.ts - 193 + 206 Barcode String src/app/data/paperless-config.ts - 200 + 213 Retain Split Pages src/app/data/paperless-config.ts - 207 + 220 Enable ASN src/app/data/paperless-config.ts - 214 + 227 ASN Prefix src/app/data/paperless-config.ts - 221 + 234 Upscale src/app/data/paperless-config.ts - 228 + 241 DPI src/app/data/paperless-config.ts - 235 + 248 Max Pages src/app/data/paperless-config.ts - 242 + 255 Enable Tag Detection src/app/data/paperless-config.ts - 249 + 262 Tag Mapping src/app/data/paperless-config.ts - 256 + 269 + + + + Split on Tag Barcodes + + src/app/data/paperless-config.ts + 276 + + + + AI Enabled + + src/app/data/paperless-config.ts + 283 + + + + Consider privacy implications when enabling AI features, especially if using a remote model. + + src/app/data/paperless-config.ts + 287 + + + + LLM Embedding Backend + + src/app/data/paperless-config.ts + 291 + + + + LLM Embedding Model + + src/app/data/paperless-config.ts + 299 + + + + LLM Backend + + src/app/data/paperless-config.ts + 306 + + + + LLM Model + + src/app/data/paperless-config.ts + 314 + + + + LLM API Key + + src/app/data/paperless-config.ts + 321 + + + + LLM Endpoint + + src/app/data/paperless-config.ts + 328 + + + + Pending + + src/app/data/share-link-bundle.ts + 41 + + + + Processing + + src/app/data/share-link-bundle.ts + 42 + + + + Ready + + src/app/data/share-link-bundle.ts + 43 + + + + Failed + + src/app/data/share-link-bundle.ts + 44 + + + + Archive + + src/app/data/share-link-bundle.ts + 51 + + + + Original + + src/app/data/share-link-bundle.ts + 52 + + + + 7 days + + src/app/data/share-link.ts + 15 + + + + 30 days + + src/app/data/share-link.ts + 16 @@ -9805,179 +10904,186 @@ 135 + + Indonesian + + src/app/services/settings.service.ts + 141 + + Italian src/app/services/settings.service.ts - 141 + 147 Japanese src/app/services/settings.service.ts - 147 + 153 Korean src/app/services/settings.service.ts - 153 + 159 Luxembourgish src/app/services/settings.service.ts - 159 + 165 Dutch src/app/services/settings.service.ts - 165 + 171 Norwegian src/app/services/settings.service.ts - 171 + 177 Persian src/app/services/settings.service.ts - 177 + 183 Polish src/app/services/settings.service.ts - 183 + 189 Portuguese (Brazil) src/app/services/settings.service.ts - 189 + 195 Portuguese src/app/services/settings.service.ts - 195 + 201 Romanian src/app/services/settings.service.ts - 201 + 207 Russian src/app/services/settings.service.ts - 207 + 213 Slovak src/app/services/settings.service.ts - 213 + 219 Slovenian src/app/services/settings.service.ts - 219 + 225 Serbian src/app/services/settings.service.ts - 225 + 231 Swedish src/app/services/settings.service.ts - 231 + 237 Turkish src/app/services/settings.service.ts - 237 + 243 Ukrainian src/app/services/settings.service.ts - 243 + 249 Vietnamese src/app/services/settings.service.ts - 249 + 255 Chinese Simplified src/app/services/settings.service.ts - 255 + 261 Chinese Traditional src/app/services/settings.service.ts - 261 + 267 ISO 8601 src/app/services/settings.service.ts - 269 + 275 Successfully completed one-time migratration of settings to the database! src/app/services/settings.service.ts - 603 + 609 Unable to migrate settings to the database, please try saving manually. src/app/services/settings.service.ts - 604 + 610 You can restart the tour from the settings page. src/app/services/settings.service.ts - 677 + 683 @@ -10124,6 +11230,20 @@ 39 + + Prev + + src/main.ts + 402 + + + + End + + src/main.ts + 404 + + diff --git a/src-ui/package.json b/src-ui/package.json index a80894b9a..e671eb61c 100644 --- a/src-ui/package.json +++ b/src-ui/package.json @@ -1,6 +1,6 @@ { "name": "paperless-ngx-ui", - "version": "2.18.4", + "version": "2.20.6", "scripts": { "preinstall": "npx only-allow pnpm", "ng": "ng", @@ -11,65 +11,66 @@ }, "private": true, "dependencies": { - "@angular/cdk": "^20.2.2", - "@angular/common": "~20.2.4", - "@angular/compiler": "~20.2.4", - "@angular/core": "~20.2.4", - "@angular/forms": "~20.2.4", - "@angular/localize": "~20.2.4", - "@angular/platform-browser": "~20.2.4", - "@angular/platform-browser-dynamic": "~20.2.4", - "@angular/router": "~20.2.4", - "@ng-bootstrap/ng-bootstrap": "^19.0.1", - "@ng-select/ng-select": "^20.1.3", + "@angular/cdk": "^21.1.3", + "@angular/common": "~21.1.3", + "@angular/compiler": "~21.1.3", + "@angular/core": "~21.1.3", + "@angular/forms": "~21.1.3", + "@angular/localize": "~21.1.3", + "@angular/platform-browser": "~21.1.3", + "@angular/platform-browser-dynamic": "~21.1.3", + "@angular/router": "~21.1.3", + "@ng-bootstrap/ng-bootstrap": "^20.0.0", + "@ng-select/ng-select": "^21.2.0", "@ngneat/dirty-check-forms": "^3.0.3", "@popperjs/core": "^2.11.8", "bootstrap": "^5.3.8", "file-saver": "^2.0.5", "mime-names": "^1.0.0", - "ng2-pdf-viewer": "^10.4.0", "ngx-bootstrap-icons": "^1.9.3", - "ngx-color": "^10.0.0", - "ngx-cookie-service": "^20.1.0", - "ngx-device-detector": "^10.1.0", - "ngx-ui-tour-ng-bootstrap": "^17.0.1", + "ngx-color": "^10.1.0", + "ngx-cookie-service": "^21.1.0", + "ngx-device-detector": "^11.0.0", + "ngx-ui-tour-ng-bootstrap": "^18.0.0", + "pdfjs-dist": "^5.4.624", "rxjs": "^7.8.2", "tslib": "^2.8.1", "utif": "^3.1.0", - "uuid": "^11.1.0", - "zone.js": "^0.15.1" + "uuid": "^13.0.0", + "zone.js": "^0.16.0" }, "devDependencies": { - "@angular-builders/custom-webpack": "^20.0.0", - "@angular-builders/jest": "^20.0.0", - "@angular-devkit/core": "^20.2.2", - "@angular-devkit/schematics": "^20.2.2", - "@angular-eslint/builder": "20.2.0", - "@angular-eslint/eslint-plugin": "20.2.0", - "@angular-eslint/eslint-plugin-template": "20.2.0", - "@angular-eslint/schematics": "20.2.0", - "@angular-eslint/template-parser": "20.2.0", - "@angular/build": "^20.2.2", - "@angular/cli": "~20.2.2", - "@angular/compiler-cli": "~20.2.4", + "@angular-builders/custom-webpack": "^21.0.3", + "@angular-builders/jest": "^21.0.3", + "@angular-devkit/core": "^21.1.3", + "@angular-devkit/schematics": "^21.1.3", + "@angular-eslint/builder": "21.2.0", + "@angular-eslint/eslint-plugin": "21.2.0", + "@angular-eslint/eslint-plugin-template": "21.2.0", + "@angular-eslint/schematics": "21.2.0", + "@angular-eslint/template-parser": "21.2.0", + "@angular/build": "^21.1.3", + "@angular/cli": "~21.1.3", + "@angular/compiler-cli": "~21.1.3", "@codecov/webpack-plugin": "^1.9.1", - "@playwright/test": "^1.55.0", + "@playwright/test": "^1.58.2", "@types/jest": "^30.0.0", - "@types/node": "^24.3.0", - "@typescript-eslint/eslint-plugin": "^8.41.0", - "@typescript-eslint/parser": "^8.41.0", - "@typescript-eslint/utils": "^8.41.0", - "eslint": "^9.34.0", - "jest": "30.1.3", - "jest-environment-jsdom": "^30.1.2", + "@types/node": "^25.2.1", + "@typescript-eslint/eslint-plugin": "^8.54.0", + "@typescript-eslint/parser": "^8.54.0", + "@typescript-eslint/utils": "^8.54.0", + "eslint": "^9.39.2", + "jest": "30.2.0", + "jest-environment-jsdom": "^30.2.0", "jest-junit": "^16.0.0", - "jest-preset-angular": "^15.0.0", + "jest-preset-angular": "^16.0.0", "jest-websocket-mock": "^2.5.0", - "prettier-plugin-organize-imports": "^4.2.0", + "prettier-plugin-organize-imports": "^4.3.0", "ts-node": "~10.9.1", - "typescript": "^5.8.3", - "webpack": "^5.101.3" + "typescript": "^5.9.3", + "webpack": "^5.105.0" }, + "packageManager": "pnpm@10.17.1", "pnpm": { "onlyBuiltDependencies": [ "@parcel/watcher", diff --git a/src-ui/pnpm-lock.yaml b/src-ui/pnpm-lock.yaml index f5296eb9e..f09f7b366 100644 --- a/src-ui/pnpm-lock.yaml +++ b/src-ui/pnpm-lock.yaml @@ -9,41 +9,41 @@ importers: .: dependencies: '@angular/cdk': - specifier: ^20.2.2 - version: 20.2.2(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: ^21.1.3 + version: 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/common': - specifier: ~20.2.4 - version: 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: ~21.1.3 + version: 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) '@angular/compiler': - specifier: ~20.2.4 - version: 20.2.4 + specifier: ~21.1.3 + version: 21.1.3 '@angular/core': - specifier: ~20.2.4 - version: 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) + specifier: ~21.1.3 + version: 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) '@angular/forms': - specifier: ~20.2.4 - version: 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: ~21.1.3 + version: 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@angular/localize': - specifier: ~20.2.4 - version: 20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4) + specifier: ~21.1.3 + version: 21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3) '@angular/platform-browser': - specifier: ~20.2.4 - version: 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: ~21.1.3 + version: 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) '@angular/platform-browser-dynamic': - specifier: ~20.2.4 - version: 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))) + specifier: ~21.1.3 + version: 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))) '@angular/router': - specifier: ~20.2.4 - version: 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: ~21.1.3 + version: 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@ng-bootstrap/ng-bootstrap': - specifier: ^19.0.1 - version: 19.0.1(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@popperjs/core@2.11.8)(rxjs@7.8.2) + specifier: ^20.0.0 + version: 20.0.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/forms@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@popperjs/core@2.11.8)(rxjs@7.8.2) '@ng-select/ng-select': - specifier: ^20.1.3 - version: 20.1.3(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)) + specifier: ^21.2.0 + version: 21.2.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/forms@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)) '@ngneat/dirty-check-forms': specifier: ^3.0.3 - version: 3.0.3(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/router@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(lodash-es@4.17.21)(rxjs@7.8.2) + version: 3.0.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/forms@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))(@angular/router@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))(lodash-es@4.17.21)(rxjs@7.8.2) '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -56,24 +56,24 @@ importers: mime-names: specifier: ^1.0.0 version: 1.0.0 - ng2-pdf-viewer: - specifier: ^10.4.0 - version: 10.4.0 ngx-bootstrap-icons: specifier: ^1.9.3 - version: 1.9.3(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 1.9.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) ngx-color: - specifier: ^10.0.0 - version: 10.0.0(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) - ngx-cookie-service: - specifier: ^20.1.0 - version: 20.1.0(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) - ngx-device-detector: specifier: ^10.1.0 - version: 10.1.0(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) + version: 10.1.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) + ngx-cookie-service: + specifier: ^21.1.0 + version: 21.1.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) + ngx-device-detector: + specifier: ^11.0.0 + version: 11.0.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) ngx-ui-tour-ng-bootstrap: - specifier: ^17.0.1 - version: 17.0.1(93ea0959b395ae2295f4e6a313c818c9) + specifier: ^18.0.0 + version: 18.0.0(2a89effa12f6df8cde064aa7713e7e29) + pdfjs-dist: + specifier: ^5.4.624 + version: 5.4.624 rxjs: specifier: ^7.8.2 version: 7.8.2 @@ -84,99 +84,99 @@ importers: specifier: ^3.1.0 version: 3.1.0 uuid: - specifier: ^11.1.0 - version: 11.1.0 + specifier: ^13.0.0 + version: 13.0.0 zone.js: - specifier: ^0.15.1 - version: 0.15.1 + specifier: ^0.16.0 + version: 0.16.0 devDependencies: '@angular-builders/custom-webpack': - specifier: ^20.0.0 - version: 20.0.0(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jest-environment-jsdom@30.1.2(canvas@3.0.0))(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0) + specifier: ^21.0.3 + version: 21.0.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jest-environment-jsdom@30.2.0(canvas@3.0.0))(jest@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)))(jiti@2.6.1)(less@4.4.2)(postcss@8.5.6)(terser@5.44.1)(tslib@2.8.1)(typescript@5.9.3)(yaml@2.7.0) '@angular-builders/jest': - specifier: ^20.0.0 - version: 20.0.0(56c75f145b0896aaaed75da1af9e9b5c) + specifier: ^21.0.3 + version: 21.0.3(98333f6b0a4c9466a4a761dd7742f14e) '@angular-devkit/core': - specifier: ^20.2.2 - version: 20.2.2(chokidar@4.0.3) + specifier: ^21.1.3 + version: 21.1.3(chokidar@5.0.0) '@angular-devkit/schematics': - specifier: ^20.2.2 - version: 20.2.2(chokidar@4.0.3) + specifier: ^21.1.3 + version: 21.1.3(chokidar@5.0.0) '@angular-eslint/builder': - specifier: 20.2.0 - version: 20.2.0(chokidar@4.0.3)(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + specifier: 21.2.0 + version: 21.2.0(@angular/cli@21.1.3(@types/node@25.2.1)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@angular-eslint/eslint-plugin': - specifier: 20.2.0 - version: 20.2.0(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + specifier: 21.2.0 + version: 21.2.0(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@angular-eslint/eslint-plugin-template': - specifier: 20.2.0 - version: 20.2.0(@angular-eslint/template-parser@20.2.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.41.0)(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + specifier: 21.2.0 + version: 21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/types@8.54.0)(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@angular-eslint/schematics': - specifier: 20.2.0 - version: 20.2.0(@angular-eslint/template-parser@20.2.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.41.0)(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(chokidar@4.0.3)(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + specifier: 21.2.0 + version: 21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(@angular/cli@21.1.3(@types/node@25.2.1)(chokidar@5.0.0))(@typescript-eslint/types@8.54.0)(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(chokidar@5.0.0)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@angular-eslint/template-parser': - specifier: 20.2.0 - version: 20.2.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + specifier: 21.2.0 + version: 21.2.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@angular/build': - specifier: ^20.2.2 - version: 20.2.2(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(yaml@2.7.0) + specifier: ^21.1.3 + version: 21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jiti@2.6.1)(less@4.4.2)(postcss@8.5.6)(terser@5.44.1)(tslib@2.8.1)(typescript@5.9.3)(yaml@2.7.0) '@angular/cli': - specifier: ~20.2.2 - version: 20.2.2(@types/node@24.3.0)(chokidar@4.0.3) + specifier: ~21.1.3 + version: 21.1.3(@types/node@25.2.1)(chokidar@5.0.0) '@angular/compiler-cli': - specifier: ~20.2.4 - version: 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) + specifier: ~21.1.3 + version: 21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3) '@codecov/webpack-plugin': specifier: ^1.9.1 - version: 1.9.1(webpack@5.101.3) + version: 1.9.1(webpack@5.105.0) '@playwright/test': - specifier: ^1.55.0 - version: 1.55.0 + specifier: ^1.58.2 + version: 1.58.2 '@types/jest': specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^24.3.0 - version: 24.3.0 + specifier: ^25.2.1 + version: 25.2.1 '@typescript-eslint/eslint-plugin': - specifier: ^8.41.0 - version: 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + specifier: ^8.54.0 + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + specifier: ^8.54.0 + version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/utils': - specifier: ^8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + specifier: ^8.54.0 + version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: - specifier: ^9.34.0 - version: 9.34.0(jiti@1.21.7) + specifier: ^9.39.2 + version: 9.39.2(jiti@2.6.1) jest: - specifier: 30.1.3 - version: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) + specifier: 30.2.0 + version: 30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) jest-environment-jsdom: - specifier: ^30.1.2 - version: 30.1.2(canvas@3.0.0) + specifier: ^30.2.0 + version: 30.2.0(canvas@3.0.0) jest-junit: specifier: ^16.0.0 version: 16.0.0 jest-preset-angular: - specifier: ^15.0.0 - version: 15.0.0(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(canvas@3.0.0)(jest-environment-jsdom@30.1.2(canvas@3.0.0))(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(jsdom@26.1.0(canvas@3.0.0))(typescript@5.8.3) + specifier: ^16.0.0 + version: 16.0.0(971a0c6079454b11fc8a813370660bc6) jest-websocket-mock: specifier: ^2.5.0 version: 2.5.0 prettier-plugin-organize-imports: - specifier: ^4.2.0 - version: 4.2.0(prettier@3.4.2)(typescript@5.8.3) + specifier: ^4.3.0 + version: 4.3.0(prettier@3.4.2)(typescript@5.9.3) ts-node: specifier: ~10.9.1 - version: 10.9.2(@types/node@24.3.0)(typescript@5.8.3) + version: 10.9.2(@types/node@25.2.1)(typescript@5.9.3) typescript: - specifier: ^5.8.3 - version: 5.8.3 + specifier: ^5.9.3 + version: 5.9.3 webpack: - specifier: ^5.101.3 - version: 5.101.3 + specifier: ^5.105.0 + version: 5.105.0 packages: @@ -195,114 +195,116 @@ packages: '@actions/io@1.1.3': resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - '@algolia/abtesting@1.1.0': - resolution: {integrity: sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==} + '@algolia/abtesting@1.12.2': + resolution: {integrity: sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.35.0': - resolution: {integrity: sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==} + '@algolia/client-abtesting@5.46.2': + resolution: {integrity: sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.35.0': - resolution: {integrity: sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==} + '@algolia/client-analytics@5.46.2': + resolution: {integrity: sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.35.0': - resolution: {integrity: sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==} + '@algolia/client-common@5.46.2': + resolution: {integrity: sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.35.0': - resolution: {integrity: sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==} + '@algolia/client-insights@5.46.2': + resolution: {integrity: sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.35.0': - resolution: {integrity: sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==} + '@algolia/client-personalization@5.46.2': + resolution: {integrity: sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.35.0': - resolution: {integrity: sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==} + '@algolia/client-query-suggestions@5.46.2': + resolution: {integrity: sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.35.0': - resolution: {integrity: sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==} + '@algolia/client-search@5.46.2': + resolution: {integrity: sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.35.0': - resolution: {integrity: sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==} + '@algolia/ingestion@1.46.2': + resolution: {integrity: sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.35.0': - resolution: {integrity: sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==} + '@algolia/monitoring@1.46.2': + resolution: {integrity: sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.35.0': - resolution: {integrity: sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==} + '@algolia/recommend@5.46.2': + resolution: {integrity: sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.35.0': - resolution: {integrity: sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==} + '@algolia/requester-browser-xhr@5.46.2': + resolution: {integrity: sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.35.0': - resolution: {integrity: sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==} + '@algolia/requester-fetch@5.46.2': + resolution: {integrity: sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.35.0': - resolution: {integrity: sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==} + '@algolia/requester-node-http@5.46.2': + resolution: {integrity: sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-builders/common@4.0.0': - resolution: {integrity: sha512-bepZI1KdXUVhDGqHOudZQJwucSbZWxfWzM+EHFXUoExUO0u7XEuHTF5bhtQZ+YU+ZK2Ayl26QbI/26Yj72vcFQ==} + '@angular-builders/common@5.0.3': + resolution: {integrity: sha512-Dro3574mu4/xqmjdA3159+TXDhgTbIJpEY/iBETSKUvHJiCgHel+R3eT105RpHN5o7NaD2rau5Zk2wuZqOk35Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular-builders/custom-webpack@20.0.0': - resolution: {integrity: sha512-aw7zXG5vhsYCPLR/eOThcyWLJZ9MEh49wYaj0LouBctJsAdR6Pgg3ksubrejLI5oiUWxM9Ywu4BGwmf3QaUYqg==} + '@angular-builders/custom-webpack@21.0.3': + resolution: {integrity: sha512-Aq3PZoQxY4jmfDb1sT5E6ZFAdiv35PziFmgYoW5DGX8xbYsV7EoKWZN2ZIjEI3Zr/WUZWGlxmxa11XK9WOtidg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler-cli': ^20.0.0 + '@angular/compiler-cli': ^21.0.0 - '@angular-builders/jest@20.0.0': - resolution: {integrity: sha512-3rnobnIdErtjyM3yAAAOdod79lgbkf1QWMFHiRDHW4tw4f+DLFiM2HMFircCoO5WIe/ILEJE9GNxs/vvYa3gvw==} + '@angular-builders/jest@21.0.3': + resolution: {integrity: sha512-RYIsJQJkke4Dns+lYBYzn0JcmABCQKvTWkqMibi5v8dgtNS8pgPS8pE5x8DSmgraqJikL3ukqaUQmdeL6r38aw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular-devkit/build-angular': ^20.0.0 - '@angular/compiler-cli': ^20.0.0 - '@angular/core': ^20.0.0 - '@angular/platform-browser-dynamic': ^20.0.0 - jest: '>=29' + '@angular-devkit/build-angular': ^21.0.0 + '@angular/compiler-cli': ^21.0.0 + '@angular/core': ^21.0.0 + '@angular/platform-browser-dynamic': ^21.0.0 + jest: ^30.0.0 - '@angular-devkit/architect@0.2000.4': - resolution: {integrity: sha512-pg+EPv/j17ybCoYiKjeRCebkE5CeD009xC6XJfugBmui6CcCQ5UAN82ibBhL869PXR7xCboylcRxlFfcBmvCpA==} + '@angular-devkit/architect@0.2101.2': + resolution: {integrity: sha512-pV2onJgp16xO0vAqEfRWVynRPPLVHydYLANNa3UX3l5T39JcYdMIoOHSIIl8tWrxVeOwiWd1ajub0VsFTUok4Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true - '@angular-devkit/architect@0.2002.2': - resolution: {integrity: sha512-amppp/UqKyj+B8hYFU16j4t6SVN+SS0AEnHivDjKy41NNJgXv+5Sm2Q2jaMHviCT3rclyT0wqwNAi0RDjyLx5Q==} + '@angular-devkit/architect@0.2101.3': + resolution: {integrity: sha512-vKz8aPA62W+e9+pF6ct4CRDG/MjlIH7sWFGYkxPPRst2g46ZQsRkrzfMZAWv/wnt6OZ1OwyRuO3RW83EMhag8g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true - '@angular-devkit/build-angular@20.0.4': - resolution: {integrity: sha512-YUf9hRAd//yu44vGMnET1ajmUMXwSz0t4rOajDj5yb57sYS9eYu912K2pWfDNDNJncOshtpklvBqUDngDNcPDw==} + '@angular-devkit/build-angular@21.1.2': + resolution: {integrity: sha512-i/FTbqVwj0Wk6B5RA2H9iVsDC/kIK/5koSEwkIQjXGZuDVFUoEuWiIR2PGGSSQ9u3DmkpVPZmKEXWRl+g7Qn5g==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/compiler-cli': ^20.0.0 - '@angular/core': ^20.0.0 - '@angular/localize': ^20.0.0 - '@angular/platform-browser': ^20.0.0 - '@angular/platform-server': ^20.0.0 - '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.0.4 + '@angular/compiler-cli': ^21.0.0 + '@angular/core': ^21.0.0 + '@angular/localize': ^21.0.0 + '@angular/platform-browser': ^21.0.0 + '@angular/platform-server': ^21.0.0 + '@angular/service-worker': ^21.0.0 + '@angular/ssr': ^21.1.2 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 - jest: ^29.5.0 - jest-environment-jsdom: ^29.5.0 + jest: ^30.2.0 + jest-environment-jsdom: ^30.2.0 karma: ^6.3.0 - ng-packagr: ^20.0.0 + ng-packagr: ^21.0.0 protractor: ^7.0.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 - typescript: '>=5.8 <5.9' + typescript: '>=5.9 <6.0' peerDependenciesMeta: '@angular/core': optional: true @@ -333,96 +335,99 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2000.4': - resolution: {integrity: sha512-ZdYSzuDJOIXzuzr3JuriAXWjjVH335K7sLF1udyd1BUeDkKjRNOrrd0Zfo8eraMgbMfEdjApf+UGzTBgU0euMA==} + '@angular-devkit/build-webpack@0.2101.2': + resolution: {integrity: sha512-/rC9rcrG+Tn8MZIEW9LTHmBuLiQdCHZyscgqgMXD049qgB858gS1Y/lP/tt0xrP3Yhan5XNcRYjcv6sYPtmPUw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.0.4': - resolution: {integrity: sha512-GmHBOEhdZn0Xh8JAdmnbSXtEMoAEqakEFy1JZmwuUo5e6uuuEp5xQY4O3MO0UQBVjYT+Wz8KNfonTvY91t/lNQ==} + '@angular-devkit/core@21.1.2': + resolution: {integrity: sha512-0wl5nJlFWsbwfUB2CQeTSmnVQ8AtqqwM3bYPYtXSc+vA8+hzsOAjjDuRnBxZS9zTnqtXKXB1e7M3Iy7KUwh7LA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - chokidar: ^4.0.0 + chokidar: ^5.0.0 peerDependenciesMeta: chokidar: optional: true - '@angular-devkit/core@20.2.2': - resolution: {integrity: sha512-SC+f5isSWJBpEgR+R7jP++2Z14WExNWLAdKpIickLWjuL8FlGkj+kaF3dWXhh0KcXo+r6kKb4pWUptSaqer5gA==} + '@angular-devkit/core@21.1.3': + resolution: {integrity: sha512-huEXd1tWQHwwN+0VGRT+vSVplV0KNrGFUGJzkIW6iJE1SQElxn6etMai+pSd5DJcePkx6+SuscVsxbfwf70hnA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - chokidar: ^4.0.0 + chokidar: ^5.0.0 peerDependenciesMeta: chokidar: optional: true - '@angular-devkit/schematics@20.2.2': - resolution: {integrity: sha512-rtL7slZjzdChQoiADKZv/Ra8D3C3tIw/WcVxd2stiLHdK/Oaf9ejx5m/X9o0QMEbNsy2Fy/RKodNqmz1CjzpCg==} + '@angular-devkit/schematics@21.1.3': + resolution: {integrity: sha512-Ps7bRl5uOcM7WpNJHbSls/jz5/wAI0ldkTlKyiBFA7RtNeQIABAV+hvlw5DJuEb1Lo5hnK0hXj90AyZdOxzY+w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-eslint/builder@20.2.0': - resolution: {integrity: sha512-0qej+U/u5MDnvnUhrWAXmXJd7ZliZzYQtkmy50ypq/LaQwkOuZBEFh9EqlZ1k4n8n2DKQou03KJmKSoAqc/I8A==} + '@angular-eslint/builder@21.2.0': + resolution: {integrity: sha512-wcp3J9cbrDwSeI/o1D/DSvMQa8zpKjc5WhRGTx33omhWijCfiVNEAiBLWiEx5Sb/dWcoX8yFNWY5jSgFVy9Sjw==} peerDependencies: + '@angular/cli': '>= 21.0.0 < 22.0.0' eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular-eslint/bundled-angular-compiler@20.2.0': - resolution: {integrity: sha512-9NhytRavpxWqa0fK+mlQZrif91MhtG3VEV3JCQEwOH9JPueY95XVHYwPgcbODhoSg/z5YaTVby5G254cEXUMew==} + '@angular-eslint/bundled-angular-compiler@21.2.0': + resolution: {integrity: sha512-J0DWL+j6t9ItFIyIADvzHGqwDA1qfVJ9bx+oTmJ/Hlo7cUpIRoXpcTXpug0CEEABFH0RfDu6PDG2b0FoZ1+7bg==} - '@angular-eslint/eslint-plugin-template@20.2.0': - resolution: {integrity: sha512-pRuROa9QUUIq/ulB5rbXrwOhFA1tcR8HhGq187gFQfPno/bFZfbF9R8x+zukbVipNjl087WHUWj09KNDcJBLlA==} + '@angular-eslint/eslint-plugin-template@21.2.0': + resolution: {integrity: sha512-lJ13Dj0DjR6YiceQR0sRbyWzSzOQ6uZPwK9CJUF3wuZjYAUvL1D61zaU9QrVLtf89NVOxv+dYZHDdu3IDeIqbA==} peerDependencies: - '@angular-eslint/template-parser': 20.2.0 + '@angular-eslint/template-parser': 21.2.0 '@typescript-eslint/types': ^7.11.0 || ^8.0.0 '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular-eslint/eslint-plugin@20.2.0': - resolution: {integrity: sha512-HdujUz7Q1ZW371cCJRkUcp0bjU/iP8Z/ZNTStCzMd4euu+HwVt69dLsTCs6f1i6SMqlIUjaP8TbqNo5nV8Altw==} + '@angular-eslint/eslint-plugin@21.2.0': + resolution: {integrity: sha512-X2Qn2viDsjm91CEMxNrxDH3qkKpp6un0C1F1BW2p/m9J4AUVfOcXwWz9UpHFSHTRQ+YlTJbiH1ZwwAPeKhFaxA==} peerDependencies: '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular-eslint/schematics@20.2.0': - resolution: {integrity: sha512-vAslYgJ2Rs2xY80ckwbuv/YWpEO9d/lFMq8CGrm37PI0IB5uRuGVWxaVboBLP6WUj9iMS/ufZUcCu0fdQ05V8Q==} + '@angular-eslint/schematics@21.2.0': + resolution: {integrity: sha512-WtT4fPKIUQ/hswy+l2GF/rKOdD+42L3fUzzcwRzNutQbe2tU9SimoSOAsay/ylWEuhIOQTs7ysPB8fUgFQoLpA==} + peerDependencies: + '@angular/cli': '>= 21.0.0 < 22.0.0' - '@angular-eslint/template-parser@20.2.0': - resolution: {integrity: sha512-72hskYThlVhktpRCwSwAohY/SxUoMv0hhS71zjlJcHFTzTAWCI8Zy2U4OJuhUO7+XWL6iAu13NKzJKRzUhGdSw==} + '@angular-eslint/template-parser@21.2.0': + resolution: {integrity: sha512-TCb3qYOC/uXKZCo56cJ6N9sHeWdFhyVqrbbYfFjTi09081T6jllgHDZL5Ms7gOMNY8KywWGGbhxwvzeA0RwTgA==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular-eslint/utils@20.2.0': - resolution: {integrity: sha512-GnEa8BU9xBLUq4JQ8UgXecUXPCmju9P5KIobql17LV1t3vnJ33Zr7acO1jWOzluypllKSVrtARdRTI+TQGCqrA==} + '@angular-eslint/utils@21.2.0': + resolution: {integrity: sha512-E19/hkuvHoNFvctBkmEiGWpy2bbC6cgbr3GNVrn2nGtbI4jnwnDFCGHv50I4LBfvj0PA9E6TWe73ejJ5qoMJWQ==} peerDependencies: '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular/build@20.0.4': - resolution: {integrity: sha512-SIYLg2st05Q5hgFrxwj6L4i9j2j2JNWYoYgacXp+mw9YVhFiC02Ymbakc9fq+3+sWlm0XTX5JgrupV2ac1ytNQ==} + '@angular/build@21.1.2': + resolution: {integrity: sha512-5hl7OTZeQcdkr/3LXSijLuUCwlcqGyYJYOb8GbFqSifSR03JFI3tLQtyQ0LX2CXv3MOx1qFUQbYVfcjW5M36QQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/compiler': ^20.0.0 - '@angular/compiler-cli': ^20.0.0 - '@angular/core': ^20.0.0 - '@angular/localize': ^20.0.0 - '@angular/platform-browser': ^20.0.0 - '@angular/platform-server': ^20.0.0 - '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.0.4 + '@angular/compiler': ^21.0.0 + '@angular/compiler-cli': ^21.0.0 + '@angular/core': ^21.0.0 + '@angular/localize': ^21.0.0 + '@angular/platform-browser': ^21.0.0 + '@angular/platform-server': ^21.0.0 + '@angular/service-worker': ^21.0.0 + '@angular/ssr': ^21.1.2 karma: ^6.4.0 less: ^4.2.0 - ng-packagr: ^20.0.0 + ng-packagr: ^21.0.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 - typescript: '>=5.8 <5.9' - vitest: ^3.1.1 + typescript: '>=5.9 <6.0' + vitest: ^4.0.8 peerDependenciesMeta: '@angular/core': optional: true @@ -449,26 +454,26 @@ packages: vitest: optional: true - '@angular/build@20.2.2': - resolution: {integrity: sha512-rvlKMt3OmeenHOwejRpI4OLcyERQn6Hl4ODRWlYfNX70Ki1zu6eAD0pWULzcD+HSQd0a26Xzt3gcpEy2vOEAzg==} + '@angular/build@21.1.3': + resolution: {integrity: sha512-RXVRuamfrSPwsFCLJgsO2ucp+dwWDbGbhXrQnMrGXm0qdgYpI8bAsBMd8wOeUA6vn4fRmjaRFQZbL/rcIVrkzw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/compiler': ^20.0.0 - '@angular/compiler-cli': ^20.0.0 - '@angular/core': ^20.0.0 - '@angular/localize': ^20.0.0 - '@angular/platform-browser': ^20.0.0 - '@angular/platform-server': ^20.0.0 - '@angular/service-worker': ^20.0.0 - '@angular/ssr': ^20.2.2 + '@angular/compiler': ^21.0.0 + '@angular/compiler-cli': ^21.0.0 + '@angular/core': ^21.0.0 + '@angular/localize': ^21.0.0 + '@angular/platform-browser': ^21.0.0 + '@angular/platform-server': ^21.0.0 + '@angular/service-worker': ^21.0.0 + '@angular/ssr': ^21.1.3 karma: ^6.4.0 less: ^4.2.0 - ng-packagr: ^20.0.0 + ng-packagr: ^21.0.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 tslib: ^2.3.0 - typescript: '>=5.8 <6.0' - vitest: ^3.1.1 + typescript: '>=5.9 <6.0' + vitest: ^4.0.8 peerDependenciesMeta: '@angular/core': optional: true @@ -495,156 +500,149 @@ packages: vitest: optional: true - '@angular/cdk@20.2.2': - resolution: {integrity: sha512-jLvIMmFI8zoi6vAu1Aszua59GmhqBOtsVfkwLUGg5Hi86DI/inJr9BznNX2EKDtaulYMGZCmDgsltXQXeqP5Lg==} + '@angular/cdk@21.1.3': + resolution: {integrity: sha512-jMiEKCcZMIAnyx2jxrJHmw5c7JXAiN56ErZ4X+OuQ5yFvYRocRVEs25I0OMxntcXNdPTJQvpGwGlhWhS0yDorg==} peerDependencies: - '@angular/common': ^20.0.0 || ^21.0.0 - '@angular/core': ^20.0.0 || ^21.0.0 + '@angular/common': ^21.0.0 || ^22.0.0 + '@angular/core': ^21.0.0 || ^22.0.0 + '@angular/platform-browser': ^21.0.0 || ^22.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/cli@20.2.2': - resolution: {integrity: sha512-0K8cmuHzRTpPzy/w0+S5o3s0JPV++9/s2JhK4aw/+OnQRpUbodoqjm1ur5k5DUBQfIHi7aM73ZIW3G43lv4F0g==} + '@angular/cli@21.1.3': + resolution: {integrity: sha512-UPtDcpKyrKZRPfym9gTovcibPzl2O/Woy7B8sm45sAnjDH+jDUCcCvuIak7GpH47shQkC2J4yvnHZbD4c6XxcQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@20.2.4': - resolution: {integrity: sha512-mc6Sq1cYjaPJYThnvG6x0f/E27pWksqwaNJxT1RtwhAGc1i2jsc0su6b7e5NnXEgVbdPqu1MZHAEFdXZ5+/MwQ==} + '@angular/common@21.1.3': + resolution: {integrity: sha512-Wdbln/UqZM5oVnpfIydRdhhL8A9x3bKZ9Zy1/mM0q+qFSftPvmFZIXhEpFqbDwNYbGUhGzx7t8iULC4sVVp/zA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.2.4 + '@angular/core': 21.1.3 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.2.4': - resolution: {integrity: sha512-II2hEpfbo73dL12D42DoIHYGiTYAiO9cpwh29BIo8VD054ei4cm0oK+jCyryDQH5T3+wyCWlj0OFjcZ/GmO7HQ==} + '@angular/compiler-cli@21.1.3': + resolution: {integrity: sha512-nKxoQ89W2B1WdonNQ9kgRnvLNS6DAxDrRHBslsKTlV+kbdv7h59M9PjT4ZZ2sp1M/M8LiofnUfa/s2jd/xYj5w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.2.4 - typescript: '>=5.8 <6.0' + '@angular/compiler': 21.1.3 + typescript: '>=5.9 <6.0' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@20.2.4': - resolution: {integrity: sha512-LQzf+Azb/Ms+BavpCFIat+f1C0gUJpby2RW4yebF3JkBFKfJ7M8d49TQpF8rSnGxMRTf49mln7laz4nBYTLDGA==} + '@angular/compiler@21.1.3': + resolution: {integrity: sha512-gDNLh7MEf7Qf88ktZzS4LJQXCA5U8aQTfK9ak+0mi2ruZ0x4XSjQCro4H6OPKrrbq94+6GcnlSX5+oVIajEY3w==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@20.2.4': - resolution: {integrity: sha512-8yvfvPDWX8M7o82GBl5P1nlvm1ywQ2XZi5HWj3llKpSJE2XjzhATgPrpKwiNVnpgjZWTOwM11fpoAaRKqQjxTA==} + '@angular/core@21.1.3': + resolution: {integrity: sha512-TbhQxRC7Lb/3WBdm1n8KRsktmVEuGBBp0WRF5mq0Ze4s1YewIM6cULrSw9ACtcL5jdcq7c74ms+uKQsaP/gdcQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 20.2.4 + '@angular/compiler': 21.1.3 rxjs: ^6.5.3 || ^7.4.0 - zone.js: ~0.15.0 + zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: '@angular/compiler': optional: true zone.js: optional: true - '@angular/forms@20.2.4': - resolution: {integrity: sha512-wbgnW+GALVAmK6hgFegkwlHKw35onvh9Z5A236HCyUySEAOiaD/3CoDg5Hw4iHQAiSU6Fn2NwDiv+W0xki6WDw==} + '@angular/forms@21.1.3': + resolution: {integrity: sha512-YW/YdjM9suZUeJam9agHFXIEE3qQIhGYXMjnnX7xGjOe+CuR2R0qsWn1AR0yrKrNmFspb0lKgM7kTTJyzt8gZg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.2.4 - '@angular/core': 20.2.4 - '@angular/platform-browser': 20.2.4 + '@angular/common': 21.1.3 + '@angular/core': 21.1.3 + '@angular/platform-browser': 21.1.3 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@20.2.4': - resolution: {integrity: sha512-8OimXwR/hzUHJdegLD4+Zhg1h3qaAVLwLLK3G6Ba4EU9W9HJCyqvxIXooXossLBp/toFKyjU/RxmH+dwy4ztCQ==} + '@angular/localize@21.1.3': + resolution: {integrity: sha512-o/zFe8t578OP1j9+7iYibkwcE19zVC8xRFl/+f8bLSwqxwqasMNu1/zCa1B2nq8Gd2xwbvX/7kDhAn25yM4FJg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.2.4 - '@angular/compiler-cli': 20.2.4 + '@angular/compiler': 21.1.3 + '@angular/compiler-cli': 21.1.3 - '@angular/platform-browser-dynamic@20.2.4': - resolution: {integrity: sha512-ktunGTMWuWtnKUicOdXjF8Nc1RInf78YW7TqMV35rF32VXpHwRRKw2M7OKViPk18MlbDE2pc5HCX558BEUla0A==} + '@angular/platform-browser-dynamic@21.1.3': + resolution: {integrity: sha512-wWEjrNtJfxzZmbDWdJSyRau7NWpQ6IFM9QAyn7xH3cQDGCj+Gy9lTU5sUIYQc+7sx3nKWztolc7h/M5meYCTAg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.2.4 - '@angular/compiler': 20.2.4 - '@angular/core': 20.2.4 - '@angular/platform-browser': 20.2.4 + '@angular/common': 21.1.3 + '@angular/compiler': 21.1.3 + '@angular/core': 21.1.3 + '@angular/platform-browser': 21.1.3 - '@angular/platform-browser@20.2.4': - resolution: {integrity: sha512-81vzW8xhnJU7AiYJKXLR2MuvawzhRDgwyNkPEep58wty5zNuIUCXdUERJSsXo7m/U2Dg1FUFfqLm4RC2UkqLzA==} + '@angular/platform-browser@21.1.3': + resolution: {integrity: sha512-W+ZMXAioaP7CsACafBCHsIxiiKrRTPOlQ+hcC7XNBwy+bn5mjGONoCgLreQs76M8HNWLtr/OAUAr6h26OguOuA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 20.2.4 - '@angular/common': 20.2.4 - '@angular/core': 20.2.4 + '@angular/animations': 21.1.3 + '@angular/common': 21.1.3 + '@angular/core': 21.1.3 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/router@20.2.4': - resolution: {integrity: sha512-KoduI1o+iBfCBGtXMvmy/qncDIwGxd2hNt2hDkkiYZTftmSg/XUJDxJqN84ckm2WLkdJpR9EirrwfHapJBIZOQ==} + '@angular/router@21.1.3': + resolution: {integrity: sha512-uAw4LAMHXAPCe4SywhlUEWjMYVbbLHwTxLyduSp1b+9aVwep0juy5O/Xttlxd/oigVe0NMnOyJG9y1Br/ubnrg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.2.4 - '@angular/core': 20.2.4 - '@angular/platform-browser': 20.2.4 + '@angular/common': 21.1.3 + '@angular/core': 21.1.3 + '@angular/platform-browser': 21.1.3 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.7': - resolution: {integrity: sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==} + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.0': - resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} engines: {node: '>=6.9.0'} - '@babel/core@7.27.1': - resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.3': - resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.1': - resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.3': - resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.27.1': - resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} + '@babel/generator@7.29.0': + resolution: {integrity: sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.27.1': - resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.1': - resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.4': - resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} + '@babel/helper-define-polyfill-provider@0.6.6': + resolution: {integrity: sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -652,16 +650,16 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -670,8 +668,8 @@ packages: resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.27.1': @@ -680,8 +678,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -698,29 +696,29 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.27.1': - resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.3': - resolution: {integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==} + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.3': - resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': - resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': + resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -743,8 +741,8 @@ packages: peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1': - resolution: {integrity: sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6': + resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -776,14 +774,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.27.1': - resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + '@babel/plugin-syntax-import-assertions@7.28.6': + resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -864,8 +862,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.27.1': - resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==} + '@babel/plugin-transform-async-generator-functions@7.28.0': + resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -882,44 +880,44 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.27.5': - resolution: {integrity: sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==} + '@babel/plugin-transform-block-scoping@7.28.6': + resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.27.1': - resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.27.1': - resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==} + '@babel/plugin-transform-class-static-block@7.28.6': + resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.27.7': - resolution: {integrity: sha512-CuLkokN1PEZ0Fsjtq+001aog/C2drDK9nTfK/NRK0n6rBin6cBrvM+zfQjDE+UllhR6/J4a6w8Xq9i4yi3mQrw==} + '@babel/plugin-transform-classes@7.28.6': + resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.27.1': - resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + '@babel/plugin-transform-computed-properties@7.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.27.7': - resolution: {integrity: sha512-pg3ZLdIKWCP0CrJm0O4jYjVthyBeioVfvz9nwt6o5paUxsgJ/8GucSMAIaj6M7xA4WY+SrvtGu2LijzkdyecWQ==} + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.27.1': - resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + '@babel/plugin-transform-dotall-regex@7.28.6': + resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -930,8 +928,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0': + resolution: {integrity: sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -942,8 +940,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.27.1': - resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + '@babel/plugin-transform-explicit-resource-management@7.28.6': + resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.28.6': + resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -966,8 +970,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.27.1': - resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + '@babel/plugin-transform-json-strings@7.28.6': + resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -978,8 +982,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.27.1': - resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + '@babel/plugin-transform-logical-assignment-operators@7.28.6': + resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -996,14 +1000,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.27.1': - resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.27.1': - resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + '@babel/plugin-transform-modules-systemjs@7.29.0': + resolution: {integrity: sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1014,8 +1018,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0': + resolution: {integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1026,20 +1030,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': - resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': + resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.27.1': - resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + '@babel/plugin-transform-numeric-separator@7.28.6': + resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.27.7': - resolution: {integrity: sha512-201B1kFTWhckclcXpWHc8uUpYziDX/Pl4rxl0ZX0DiCZ3jknwfSUALL3QCYeeXXB37yWxJbo+g+Vfq8pAaHi3w==} + '@babel/plugin-transform-object-rest-spread@7.28.6': + resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1050,14 +1054,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.27.1': - resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + '@babel/plugin-transform-optional-catch-binding@7.28.6': + resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.27.1': - resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1068,14 +1072,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.27.1': - resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + '@babel/plugin-transform-private-methods@7.28.6': + resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.27.1': - resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + '@babel/plugin-transform-private-property-in-object@7.28.6': + resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1086,14 +1090,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.27.5': - resolution: {integrity: sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==} + '@babel/plugin-transform-regenerator@7.29.0': + resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regexp-modifiers@7.27.1': - resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + '@babel/plugin-transform-regexp-modifiers@7.28.6': + resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1104,8 +1108,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.27.1': - resolution: {integrity: sha512-TqGF3desVsTcp3WrJGj4HfKokfCXCLcHpt4PJF0D8/iT6LPd9RS82Upw3KPeyr6B22Lfd3DO8MVrmp0oRkUDdw==} + '@babel/plugin-transform-runtime@7.28.5': + resolution: {integrity: sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1116,8 +1120,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.27.1': - resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + '@babel/plugin-transform-spread@7.28.6': + resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1146,8 +1150,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.27.1': - resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + '@babel/plugin-transform-unicode-property-regex@7.28.6': + resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1158,14 +1162,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.27.1': - resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + '@babel/plugin-transform-unicode-sets-regex@7.28.6': + resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.27.2': - resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} + '@babel/preset-env@7.28.5': + resolution: {integrity: sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1175,20 +1179,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/runtime@7.27.1': - resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.3': - resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -1208,8 +1212,8 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/color-helpers@5.0.2': - resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} '@csstools/css-calc@2.1.4': @@ -1219,8 +1223,8 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.10': - resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} peerDependencies: '@csstools/css-parser-algorithms': ^3.0.5 @@ -1236,549 +1240,405 @@ packages: resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@ctrl/tinycolor@4.1.0': - resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} + '@ctrl/tinycolor@4.2.0': + resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} engines: {node: '>=14'} '@discoveryjs/json-ext@0.6.3': resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@emnapi/core@1.5.0': - resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.25.5': - resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + '@esbuild/aix-ppc64@0.27.0': + resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.8': - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.9': - resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.5': - resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + '@esbuild/android-arm64@0.27.0': + resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.8': - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.9': - resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.5': - resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + '@esbuild/android-arm@0.27.0': + resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.8': - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.9': - resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.5': - resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + '@esbuild/android-x64@0.27.0': + resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.8': - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.9': - resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.5': - resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + '@esbuild/darwin-arm64@0.27.0': + resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.8': - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.9': - resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.5': - resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + '@esbuild/darwin-x64@0.27.0': + resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.8': - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.9': - resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.5': - resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + '@esbuild/freebsd-arm64@0.27.0': + resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.8': - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.9': - resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.5': - resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + '@esbuild/freebsd-x64@0.27.0': + resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.8': - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.9': - resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.5': - resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + '@esbuild/linux-arm64@0.27.0': + resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.8': - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.9': - resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.5': - resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + '@esbuild/linux-arm@0.27.0': + resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.8': - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.9': - resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.5': - resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + '@esbuild/linux-ia32@0.27.0': + resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.8': - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.9': - resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.5': - resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + '@esbuild/linux-loong64@0.27.0': + resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.8': - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.9': - resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.5': - resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + '@esbuild/linux-mips64el@0.27.0': + resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.8': - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.9': - resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.5': - resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + '@esbuild/linux-ppc64@0.27.0': + resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.8': - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.9': - resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.5': - resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + '@esbuild/linux-riscv64@0.27.0': + resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.8': - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.9': - resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.5': - resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + '@esbuild/linux-s390x@0.27.0': + resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.8': - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.9': - resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.5': - resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + '@esbuild/linux-x64@0.27.0': + resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.8': - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.9': - resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.5': - resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + '@esbuild/netbsd-arm64@0.27.0': + resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.8': - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.9': - resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.5': - resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + '@esbuild/netbsd-x64@0.27.0': + resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.8': - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.9': - resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.5': - resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + '@esbuild/openbsd-arm64@0.27.0': + resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.8': - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.9': - resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.5': - resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + '@esbuild/openbsd-x64@0.27.0': + resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.8': - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.9': - resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.8': - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + '@esbuild/openharmony-arm64@0.27.0': + resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.25.9': - resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.5': - resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + '@esbuild/sunos-x64@0.27.0': + resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.8': - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.9': - resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.5': - resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + '@esbuild/win32-arm64@0.27.0': + resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.8': - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.9': - resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.5': - resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + '@esbuild/win32-ia32@0.27.0': + resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.8': - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.9': - resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.5': - resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + '@esbuild/win32-x64@0.27.0': + resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.8': - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.9': - resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.0': - resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} + '@eslint/config-array@0.21.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.3.1': - resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.2': - resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + '@eslint/eslintrc@3.3.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.34.0': - resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.5': - resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fastify/busboy@2.1.1': resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} + '@hono/node-server@1.19.9': + resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} + engines: {node: '>=18.14.1'} + peerDependencies: + hono: ^4 + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@inquirer/checkbox@4.2.2': - resolution: {integrity: sha512-E+KExNurKcUJJdxmjglTl141EwxWyAHplvsYJQgSwXf8qiNWkTxTuCCqmhFEmbIXd4zLaGMfQFJ6WrZ7fSeV3g==} + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1786,8 +1646,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.10': - resolution: {integrity: sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==} + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1795,8 +1655,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.14': - resolution: {integrity: sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==} + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1804,8 +1664,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.16': - resolution: {integrity: sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==} + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1813,8 +1673,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.2.0': - resolution: {integrity: sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==} + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1822,8 +1682,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.18': - resolution: {integrity: sha512-yeQN3AXjCm7+Hmq5L6Dm2wEDeBRdAZuyZ4I7tWSSanbxDzqM0KqzoDbKM7p4ebllAYdoQuPJS6N71/3L281i6w==} + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1831,8 +1691,12 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.18': - resolution: {integrity: sha512-xUjteYtavH7HwDMzq4Cn2X4Qsh5NozoDHCJTdoXg9HfZ4w3R6mxV1B9tL7DGJX2eq/zqtsFjhm0/RJIMGlh3ag==} + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1840,8 +1704,8 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@1.0.1': - resolution: {integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==} + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1849,12 +1713,8 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.13': - resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} - engines: {node: '>=18'} - - '@inquirer/input@4.2.2': - resolution: {integrity: sha512-hqOvBZj/MhQCpHUuD3MVq18SSoDNHy7wEnQ8mtvs71K8OPZVXJinOzcvQna33dNYLYE4LkA9BlhAhK6MJcsVbw==} + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1862,8 +1722,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.18': - resolution: {integrity: sha512-7exgBm52WXZRczsydCVftozFTrrwbG5ySE0GqUd2zLNSBXyIucs2Wnm7ZKLe/aUu6NUg9dg7Q80QIHCdZJiY4A==} + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1871,8 +1731,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.18': - resolution: {integrity: sha512-zXvzAGxPQTNk/SbT3carAD4Iqi6A2JS2qtcqQjsL22uvD+JfQzUrDEtPjLL7PLn8zlSNyPdY02IiQjzoL9TStA==} + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1880,8 +1740,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.8.2': - resolution: {integrity: sha512-nqhDw2ZcAUrKNPwhjinJny903bRhI0rQhiDz1LksjeRxqa36i3l75+4iXbOy0rlDpLJGxqtgoPavQjmmyS5UJw==} + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1889,8 +1749,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.6': - resolution: {integrity: sha512-KOZqa3QNr3f0pMnufzL7K+nweFFCCBs6LCXZzXDrVGTyssjLeudn5ySktZYv1XiSqobyHRYYK0c6QsOxJEhXKA==} + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1898,26 +1758,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.1.1': - resolution: {integrity: sha512-TkMUY+A2p2EYVY3GCTItYGvqT6LiLzHBnqsU1rJbrpXUijFfM6zvUx0R4civofVwFCmJZcKqOVwwWAjplKkhxA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/select@4.3.2': - resolution: {integrity: sha512-nwous24r31M+WyDEHV+qckXkepvihxhnyIaod2MG7eCE6G0Zm/HUF6jgN8GXgf4U7AU6SLseKdanY195cwvU6w==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/type@3.0.8': - resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==} + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1949,12 +1791,12 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@30.1.2': - resolution: {integrity: sha512-BGMAxj8VRmoD0MoA/jo9alMXSRoqW8KPeqOfEo1ncxnRLatTBCpRoOwlwlEMdudp68Q6WSGwYrrLtTGOh8fLzw==} + '@jest/console@30.2.0': + resolution: {integrity: sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/core@30.1.3': - resolution: {integrity: sha512-LIQz7NEDDO1+eyOA2ZmkiAyYvZuo6s1UxD/e2IHldR6D7UYogVq3arTmli07MkENLq6/3JEQjp0mA8rrHHJ8KQ==} + '@jest/core@30.2.0': + resolution: {integrity: sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -1966,8 +1808,8 @@ packages: resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/environment-jsdom-abstract@30.0.5': - resolution: {integrity: sha512-gpWwiVxZunkoglP8DCnT3As9x5O8H6gveAOpvaJd2ATAoSh7ZSSCWbr9LQtUMvr8WD3VjG9YnDhsmkCK5WN1rQ==} + '@jest/environment-jsdom-abstract@30.2.0': + resolution: {integrity: sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -1976,50 +1818,24 @@ packages: canvas: optional: true - '@jest/environment-jsdom-abstract@30.1.2': - resolution: {integrity: sha512-u8kTh/ZBl97GOmnGJLYK/1GuwAruMC4hoP6xuk/kwltmVWsA9u/6fH1/CsPVGt2O+Wn2yEjs8n1B1zZJ62Cx0w==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - peerDependencies: - canvas: ^3.0.0 - jsdom: '*' - peerDependenciesMeta: - canvas: - optional: true - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/environment@30.0.5': - resolution: {integrity: sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/environment@30.1.2': - resolution: {integrity: sha512-N8t1Ytw4/mr9uN28OnVf0SYE2dGhaIxOVYcwsf9IInBKjvofAjbFRvedvBBlyTYk2knbJTiEjEJ2PyyDIBnd9w==} + '@jest/environment@30.2.0': + resolution: {integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/expect-utils@30.0.5': resolution: {integrity: sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/expect-utils@30.1.2': - resolution: {integrity: sha512-HXy1qT/bfdjCv7iC336ExbqqYtZvljrV8odNdso7dWK9bSeHtLlvwWWC3YSybSPL03Gg5rug6WLCZAZFH72m0A==} + '@jest/expect-utils@30.2.0': + resolution: {integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/expect@30.1.2': - resolution: {integrity: sha512-tyaIExOwQRCxPCGNC05lIjWJztDwk2gPDNSDGg1zitXJJ8dC3++G/CRjE5mb2wQsf89+lsgAgqxxNpDLiCViTA==} + '@jest/expect@30.2.0': + resolution: {integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@30.0.5': - resolution: {integrity: sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/fake-timers@30.1.2': - resolution: {integrity: sha512-Beljfv9AYkr9K+ETX9tvV61rJTY706BhBUtiaepQHeEGfe0DbpvUA5Z3fomwc5Xkhns6NWrcFDZn+72fLieUnA==} + '@jest/fake-timers@30.2.0': + resolution: {integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/get-type@30.0.1': @@ -2030,16 +1846,16 @@ packages: resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/globals@30.1.2': - resolution: {integrity: sha512-teNTPZ8yZe3ahbYnvnVRDeOjr+3pu2uiAtNtrEsiMjVPPj+cXd5E/fr8BL7v/T7F31vYdEHrI5cC/2OoO/vM9A==} + '@jest/globals@30.2.0': + resolution: {integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/pattern@30.0.1': resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/reporters@30.1.3': - resolution: {integrity: sha512-VWEQmJWfXMOrzdFEOyGjUEOuVXllgZsoPtEHZzfdNz18RmzJ5nlR6kp8hDdY8dDS1yGOXAY7DHT+AOHIPSBV0w==} + '@jest/reporters@30.2.0': + resolution: {integrity: sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2055,37 +1871,40 @@ packages: resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/snapshot-utils@30.1.2': - resolution: {integrity: sha512-vHoMTpimcPSR7OxS2S0V1Cpg8eKDRxucHjoWl5u4RQcnxqQrV3avETiFpl8etn4dqxEGarBeHbIBety/f8mLXw==} + '@jest/snapshot-utils@30.2.0': + resolution: {integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/source-map@30.0.1': resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/test-result@30.1.3': - resolution: {integrity: sha512-P9IV8T24D43cNRANPPokn7tZh0FAFnYS2HIfi5vK18CjRkTDR9Y3e1BoEcAJnl4ghZZF4Ecda4M/k41QkvurEQ==} + '@jest/test-result@30.2.0': + resolution: {integrity: sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/test-sequencer@30.1.3': - resolution: {integrity: sha512-82J+hzC0qeQIiiZDThh+YUadvshdBswi5nuyXlEmXzrhw5ZQSRHeQ5LpVMD/xc8B3wPePvs6VMzHnntxL+4E3w==} + '@jest/test-sequencer@30.2.0': + resolution: {integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/transform@30.1.2': - resolution: {integrity: sha512-UYYFGifSgfjujf1Cbd3iU/IQoSd6uwsj8XHj5DSDf5ERDcWMdJOPTkHWXj4U+Z/uMagyOQZ6Vne8C4nRIrCxqA==} + '@jest/transform@30.2.0': + resolution: {integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/types@30.0.5': resolution: {integrity: sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@30.2.0': + resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.1': resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} @@ -2097,14 +1916,11 @@ packages: '@jridgewell/source-map@0.3.11': resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.30': - resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -2115,14 +1931,116 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pack@1.2.0': - resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==} + '@jsonjoy.com/base64@17.65.0': + resolution: {integrity: sha512-Xrh7Fm/M0QAYpekSgmskdZYnFdSGnsxJ/tHaolA4bNwWdG9i65S8m83Meh7FOxyJyQAdo4d4J97NOomBLEfkDQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/util@1.6.0': - resolution: {integrity: sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A==} + '@jsonjoy.com/buffers@1.2.1': + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/buffers@17.65.0': + resolution: {integrity: sha512-eBrIXd0/Ld3p9lpDDlMaMn6IEfWqtHMD+z61u0JrIiPzsV1r7m6xDZFRxJyvIFTEO+SWdYF9EiQbXZGd8BzPfA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@1.0.0': + resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/codegen@17.65.0': + resolution: {integrity: sha512-7MXcRYe7n3BG+fo3jicvjB0+6ypl2Y/bQp79Sp7KeSiiCgLqw4Oled6chVv07/xLVTdo3qa1CD0VCCnPaw+RGA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-core@4.56.10': + resolution: {integrity: sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-fsa@4.56.10': + resolution: {integrity: sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-builtins@4.56.10': + resolution: {integrity: sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-to-fsa@4.56.10': + resolution: {integrity: sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node-utils@4.56.10': + resolution: {integrity: sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-node@4.56.10': + resolution: {integrity: sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-print@4.56.10': + resolution: {integrity: sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/fs-snapshot@4.56.10': + resolution: {integrity: sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.21.0': + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@17.65.0': + resolution: {integrity: sha512-e0SG/6qUCnVhHa0rjDJHgnXnbsacooHVqQHxspjvlYQSkHm+66wkHw6Gql+3u/WxI/b1VsOdUi0M+fOtkgKGdQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@1.0.2': + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pointer@17.65.0': + resolution: {integrity: sha512-uhTe+XhlIZpWOxgPcnO+iSCDgKKBpwkDVTyYiXX9VayGV8HSFVJM67M6pUE71zdnXF1W0Da21AvnhlmdwYPpow==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.9.0': + resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@17.65.0': + resolution: {integrity: sha512-cWiEHZccQORf96q2y6zU3wDeIVPeidmGqd9cNKJRYoVHTV0S1eHPy5JTbHpMnGfDvtvujQwQozOqgO9ABu6h0w==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -2130,86 +2048,57 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@listr2/prompt-adapter-inquirer@3.0.1': - resolution: {integrity: sha512-3XFmGwm3u6ioREG+ynAQB7FoxfajgQnMhIu8wC5eo/Lsih4aKDg0VuIMGaOsYn7hJSJagSeaD4K8yfpkEoDEmA==} + '@listr2/prompt-adapter-inquirer@3.0.5': + resolution: {integrity: sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==} engines: {node: '>=20.0.0'} peerDependencies: '@inquirer/prompts': '>= 3 < 8' - listr2: 9.0.1 + listr2: 9.0.5 - '@lmdb/lmdb-darwin-arm64@3.3.0': - resolution: {integrity: sha512-LipbQobyEfQtu8WixasaFUZZ+JCGlho4OWwWIQ5ol0rB1RKkcZvypu7sS1CBvofBGVAa3vbOh8IOGQMrbmL5dg==} + '@lmdb/lmdb-darwin-arm64@3.4.4': + resolution: {integrity: sha512-XaKL705gDWd6XVls3ATDj13ZdML/LqSIxwgnYpG8xTzH2ifArx8fMMDdvqGE/Emd+W6R90W2fveZcJ0AyS8Y0w==} cpu: [arm64] os: [darwin] - '@lmdb/lmdb-darwin-arm64@3.4.2': - resolution: {integrity: sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==} - cpu: [arm64] - os: [darwin] - - '@lmdb/lmdb-darwin-x64@3.3.0': - resolution: {integrity: sha512-yA+9P+ZeA3vg76BLXWeUomIAjxfmSmR2eg8fueHXDg5Xe1Xmkl9JCKuHXUhtJ+mMVcH12d5k4kJBLbyXTadfGQ==} + '@lmdb/lmdb-darwin-x64@3.4.4': + resolution: {integrity: sha512-GPHGEVcwJlkD01GmIr7B4kvbIcUDS2+kBadVEd7lU4can1RZaZQLDDBJRrrNfS2Kavvl0VLI/cMv7UASAXGrww==} cpu: [x64] os: [darwin] - '@lmdb/lmdb-darwin-x64@3.4.2': - resolution: {integrity: sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==} - cpu: [x64] - os: [darwin] - - '@lmdb/lmdb-linux-arm64@3.3.0': - resolution: {integrity: sha512-OeWvSgjXXZ/zmtLqqL78I3910F6UYpUubmsUU+iBHo6nTtjkpXms95rJtGrjkWQqwswKBD7xSMplbYC4LEsiPA==} + '@lmdb/lmdb-linux-arm64@3.4.4': + resolution: {integrity: sha512-mALqr7DE42HsiwVTKpQWxacjHoJk+e9p00RWIJqTACh/hpucxp/0lK/XMh5XzWnU/TDCZLukq1+vNqnNumTP/Q==} cpu: [arm64] os: [linux] - '@lmdb/lmdb-linux-arm64@3.4.2': - resolution: {integrity: sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==} - cpu: [arm64] - os: [linux] - - '@lmdb/lmdb-linux-arm@3.3.0': - resolution: {integrity: sha512-EDYrW9kle+8wI19JCj/PhRnGoCN9bked5cdOPdo1wdgH/HzjgoLPFTn9DHlZccgTEVhp3O+bpWXdN/rWySVvjw==} + '@lmdb/lmdb-linux-arm@3.4.4': + resolution: {integrity: sha512-cmev5/dZr5ACKri9f6GU6lZCXTjMhV72xujlbOhFCgFXrt4W0TxGsmY8kA1BITvH60JBKE50cSxsiulybAbrrw==} cpu: [arm] os: [linux] - '@lmdb/lmdb-linux-arm@3.4.2': - resolution: {integrity: sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==} - cpu: [arm] - os: [linux] - - '@lmdb/lmdb-linux-x64@3.3.0': - resolution: {integrity: sha512-wDd02mt5ScX4+xd6g78zKBr6ojpgCJCTrllCAabjgap5FzuETqOqaQfKhO+tJuGWv/J5q+GIds6uY7rNFueOxg==} + '@lmdb/lmdb-linux-x64@3.4.4': + resolution: {integrity: sha512-QjLs8OcmCNcraAcLoZyFlo0atzBJniQLLwhtR+ymQqS5kLYpV5RqwriL87BW+ZiR9ZiGgZx3evrz5vnWPtJ1fQ==} cpu: [x64] os: [linux] - '@lmdb/lmdb-linux-x64@3.4.2': - resolution: {integrity: sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==} - cpu: [x64] - os: [linux] - - '@lmdb/lmdb-win32-arm64@3.3.0': - resolution: {integrity: sha512-COotWhHJgzXULLiEjOgWQwqig6PoA+6ji6W+sDl6M1HhMXWIymEVHGs0edsVSNtsNSCAWMxJgR3asv6FNX/2EA==} + '@lmdb/lmdb-win32-arm64@3.4.4': + resolution: {integrity: sha512-tr/pwHDlZ33forLGAr0tI04cRmP4SgF93yHbb+2zvZiDEyln5yMHhbKDySxY66aUOkhvBvTuHq9q/3YmTj6ZHQ==} cpu: [arm64] os: [win32] - '@lmdb/lmdb-win32-arm64@3.4.2': - resolution: {integrity: sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==} - cpu: [arm64] - os: [win32] - - '@lmdb/lmdb-win32-x64@3.3.0': - resolution: {integrity: sha512-kqUgQH+l8HDbkAapx+aoko7Ez4X4DqkIraOqY/k0QY5EN/iialVlFpBUXh4wFXzirdmEVjbIUMrceUh0Kh8LeA==} + '@lmdb/lmdb-win32-x64@3.4.4': + resolution: {integrity: sha512-KRzfocJzB/mgoTCqnMawuLSKheHRVTqWfSmouIgYpFs6Hx4zvZSvsZKSCEb5gHmICy7qsx9l06jk3MFTtiFVAQ==} cpu: [x64] os: [win32] - '@lmdb/lmdb-win32-x64@3.4.2': - resolution: {integrity: sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==} - cpu: [x64] - os: [win32] - - '@modelcontextprotocol/sdk@1.17.3': - resolution: {integrity: sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==} + '@modelcontextprotocol/sdk@1.26.0': + resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==} engines: {node: '>=18'} + peerDependencies: + '@cfworker/json-schema': ^4.1.1 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + '@cfworker/json-schema': + optional: true '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} @@ -2241,6 +2130,76 @@ packages: cpu: [x64] os: [win32] + '@napi-rs/canvas-android-arm64@0.1.90': + resolution: {integrity: sha512-3JBULVF+BIgr7yy7Rf8UjfbkfFx4CtXrkJFD1MDgKJ83b56o0U9ciT8ZGTCNmwWkzu8RbNKlyqPP3KYRG88y7Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/canvas-darwin-arm64@0.1.90': + resolution: {integrity: sha512-L8XVTXl+8vd8u7nPqcX77NyG5RuFdVsJapQrKV9WE3jBayq1aSMht/IH7Dwiz/RNJ86E5ZSg9pyUPFIlx52PZA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/canvas-darwin-x64@0.1.90': + resolution: {integrity: sha512-h0ukhlnGhacbn798VWYTQZpf6JPDzQYaow+vtQ2Fat7j7ImDdpg6tfeqvOTO1r8wS+s+VhBIFITC7aA1Aik0ZQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.90': + resolution: {integrity: sha512-JCvTl99b/RfdBtgftqrf+5UNF7GIbp7c5YBFZ+Bd6++4Y3phaXG/4vD9ZcF1bw1P4VpALagHmxvodHuQ9/TfTg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/canvas-linux-arm64-gnu@0.1.90': + resolution: {integrity: sha512-vbWFp8lrP8NIM5L4zNOwnsqKIkJo0+GIRUDcLFV9XEJCptCc1FY6/tM02PT7GN4PBgochUPB1nBHdji6q3ieyQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/canvas-linux-arm64-musl@0.1.90': + resolution: {integrity: sha512-8Bc0BgGEeOaux4EfIfNzcRRw0JE+lO9v6RWQFCJNM9dJFE4QJffTf88hnmbOaI6TEMpgWOKipbha3dpIdUqb/g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/canvas-linux-riscv64-gnu@0.1.90': + resolution: {integrity: sha512-0iiVDG5IH+gJb/YUrY/pRdbsjcgvwUmeckL/0gShWAA7004ygX2ST69M1wcfyxXrzFYjdF8S/Sn6aCAeBi89XQ==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@napi-rs/canvas-linux-x64-gnu@0.1.90': + resolution: {integrity: sha512-SkKmlHMvA5spXuKfh7p6TsScDf7lp5XlMbiUhjdCtWdOS6Qke/A4qGVOciy6piIUCJibL+YX+IgdGqzm2Mpx/w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/canvas-linux-x64-musl@0.1.90': + resolution: {integrity: sha512-o6QgS10gAS4vvELGDOOWYfmERXtkVRYFWBCjomILWfMgCvBVutn8M97fsMW5CrEuJI8YuxuJ7U+/DQ9oG93vDA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/canvas-win32-arm64-msvc@0.1.90': + resolution: {integrity: sha512-2UHO/DC1oyuSjeCAhHA0bTD9qsg58kknRqjJqRfvIEFtdqdtNTcWXMCT9rQCuJ8Yx5ldhyh2SSp7+UDqD2tXZQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/canvas-win32-x64-msvc@0.1.90': + resolution: {integrity: sha512-48CxEbzua5BP4+OumSZdi3+9fNiRO8cGNBlO2bKwx1PoyD1R2AXzPtqd/no1f1uSl0W2+ihOO1v3pqT3USbmgQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/canvas@0.1.90': + resolution: {integrity: sha512-vO9j7TfwF9qYCoTOPO39yPLreTRslBVOaeIwhDZkizDvBb0MounnTl0yeWUMBxP4Pnkg9Sv+3eQwpxNUmTwt0w==} + engines: {node: '>= 10'} + '@napi-rs/nice-android-arm-eabi@1.1.1': resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==} engines: {node: '>= 10'} @@ -2350,26 +2309,26 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@napi-rs/wasm-runtime@1.0.3': - resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} - '@ng-bootstrap/ng-bootstrap@19.0.1': - resolution: {integrity: sha512-1lErAkwh0F+gWkzpiddViY4GfA9LVXkwLpgBsV9Mb3IC0zo6WNkY8WxCC+LqajirBTu20DCkZSqeRzrwaVLpZw==} + '@ng-bootstrap/ng-bootstrap@20.0.0': + resolution: {integrity: sha512-Jt+GUQ0PdM8VsOUUVr7vTQXhwcGwe2DCe1mmfS21vz9pLSOtGRz41ohZKc1egUevj5Rxm2sHVq5Sve68/nTMfA==} peerDependencies: - '@angular/common': ^20.0.0 - '@angular/core': ^20.0.0 - '@angular/forms': ^20.0.0 - '@angular/localize': ^20.0.0 + '@angular/common': ^21.0.0 + '@angular/core': ^21.0.0 + '@angular/forms': ^21.0.0 + '@angular/localize': ^21.0.0 '@popperjs/core': ^2.11.8 rxjs: ^6.5.3 || ^7.4.0 - '@ng-select/ng-select@20.1.3': - resolution: {integrity: sha512-hksDLWU4sdul7H/FTAFANEQkSZnOUeBYhGsY2EX4jKuBpQ1T7mxefp/v5NxiZVS97Hs0d21KFG4K+JAUmGyU5Q==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + '@ng-select/ng-select@21.2.0': + resolution: {integrity: sha512-cO7pORQK1xs93d35ir3rlUU2eAGfK9xcp6CWMPbv85PqkI+yBca3OSM7YYYkjWFEO+QTi7xRgwh4dBYd5J1ZBA==} + engines: {node: ^20.19.0 || ^22.12.0 || ^24.0.0} peerDependencies: - '@angular/common': ^20.0.0 - '@angular/core': ^20.0.0 - '@angular/forms': ^20.0.0 + '@angular/common': ^21.0.0 + '@angular/core': ^21.0.0 + '@angular/forms': ^21.0.0 '@ngneat/dirty-check-forms@3.0.3': resolution: {integrity: sha512-YGlKrAaqTRO8lfT1xyN9LkYN0GH0crzdnXAxQFNEuNDQpCHv9cQ0j9XPDsonek6X4K7fLug84n0CQ42rSmGBqw==} @@ -2380,62 +2339,50 @@ packages: lodash-es: '>=4.17.0' rxjs: '>=6.0.0' - '@ngtools/webpack@20.0.4': - resolution: {integrity: sha512-GFke8NcaFW62d1KXd4DkKbEw4mSsjJsMGmeHkBe5LPWS6zRIAZULo0fk/qV94IZ8INDbqY2k1WoxvStg7pHTsg==} + '@ngtools/webpack@21.1.2': + resolution: {integrity: sha512-ZNMMD35urDKqYtx1drxPyGAvUPMOoiKjvrH8owpN+mzIO1nYpssCgmAseo1hePAduSvv8tAsY1NLtJfMSNzubw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/compiler-cli': ^20.0.0 - typescript: '>=5.8 <5.9' + '@angular/compiler-cli': ^21.0.0 + typescript: '>=5.9 <6.0' webpack: ^5.54.0 - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@npmcli/agent@4.0.0': + resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==} + engines: {node: ^20.17.0 || >=22.9.0} - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@npmcli/fs@5.0.0': + resolution: {integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==} + engines: {node: ^20.17.0 || >=22.9.0} - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@npmcli/git@7.0.1': + resolution: {integrity: sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==} + engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/agent@3.0.0': - resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/fs@4.0.0': - resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/git@6.0.3': - resolution: {integrity: sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/installed-package-contents@3.0.0': - resolution: {integrity: sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/installed-package-contents@4.0.0': + resolution: {integrity: sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true - '@npmcli/node-gyp@4.0.0': - resolution: {integrity: sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/node-gyp@5.0.0': + resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} + engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/package-json@6.2.0': - resolution: {integrity: sha512-rCNLSB/JzNvot0SEyXqWZ7tX2B5dD2a1br2Dp0vSYVo5jh8Z0EZ7lS9TsZ1UtziddB1UfNUaMCc538/HztnJGA==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/package-json@7.0.4': + resolution: {integrity: sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==} + engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/promise-spawn@8.0.3': - resolution: {integrity: sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/promise-spawn@9.0.1': + resolution: {integrity: sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==} + engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/redact@3.2.2': - resolution: {integrity: sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/redact@4.0.0': + resolution: {integrity: sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==} + engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/run-script@9.1.0': - resolution: {integrity: sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg==} - engines: {node: ^18.17.0 || >=20.5.0} + '@npmcli/run-script@10.0.3': + resolution: {integrity: sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==} + engines: {node: ^20.17.0 || >=22.9.0} '@octokit/auth-token@4.0.0': resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} @@ -2485,93 +2432,89 @@ packages: '@octokit/types@13.10.0': resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} - '@oxc-project/runtime@0.81.0': - resolution: {integrity: sha512-zm/LDVOq9FEmHiuM8zO4DWirv0VP2Tv2VsgaiHby9nvpq+FVrcqNYgv+TysLKOITQXWZj/roluTxFvpkHP0Iuw==} - engines: {node: '>=6.9.0'} + '@oxc-project/types@0.106.0': + resolution: {integrity: sha512-QdsH3rZq480VnOHSHgPYOhjL8O8LBdcnSjM408BpPCCUc0JYYZPG9Gafl9i3OcGk/7137o+gweb4cCv3WAUykg==} - '@oxc-project/types@0.81.0': - resolution: {integrity: sha512-CnOqkybZK8z6Gx7Wb1qF7AEnSzbol1WwcIzxYOr8e91LytGOjo0wCpgoYWZo8sdbpqX+X+TJayIzo4Pv0R/KjA==} - - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} '@pkgjs/parseargs@0.11.0': @@ -2582,338 +2525,261 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.55.0': - resolution: {integrity: sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==} + '@playwright/test@1.58.2': + resolution: {integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==} engines: {node: '>=18'} hasBin: true '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@rolldown/binding-android-arm64@1.0.0-beta.32': - resolution: {integrity: sha512-Gs+313LfR4Ka3hvifdag9r44WrdKQaohya7ZXUXzARF7yx0atzFlVZjsvxtKAw1Vmtr4hB/RjUD1jf73SW7zDw==} + '@rolldown/binding-android-arm64@1.0.0-beta.58': + resolution: {integrity: sha512-mWj5eE4Qc8TbPdGGaaLvBb9XfDPvE1EmZkJQgiGKwchkWH4oAJcRAKMTw7ZHnb1L+t7Ah41sBkAecaIsuUgsug==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.32': - resolution: {integrity: sha512-W8oMqzGcI7wKPXUtS3WJNXzbghHfNiuM1UBAGpVb+XlUCgYRQJd2PRGP7D3WGql3rR3QEhUvSyAuCBAftPQw6Q==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.58': + resolution: {integrity: sha512-wFxUymI/5R8bH8qZFYDfAxAN9CyISEIYke+95oZPiv6EWo88aa5rskjVcCpKA532R+klFmdqjbbaD56GNmTF4Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.32': - resolution: {integrity: sha512-pM4c4sKUk37noJrnnDkJknLhCsfZu7aWyfe67bD0GQHfzAPjV16wPeD9CmQg4/0vv+5IfHYaa4VE536xbA+W0Q==} + '@rolldown/binding-darwin-x64@1.0.0-beta.58': + resolution: {integrity: sha512-ybp3MkPj23VDV9PhtRwdU5qrGhlViWRV5BjKwO6epaSlUD5lW0WyY+roN3ZAzbma/9RrMTgZ/a/gtQq8YXOcqw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.32': - resolution: {integrity: sha512-M8SUgFlYb5kJJWcFC8gUMRiX4WLFxPKMed3SJ2YrxontgIrEcpizPU8nLNVsRYEStoSfKHKExpQw3OP6fm+5bw==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.58': + resolution: {integrity: sha512-Evxj3yh7FWvyklUYZa0qTVT9N2zX9TPDqGF056hl8hlCZ9/ndQ2xMv6uw9PD1VlLpukbsqL+/C6M0qwipL0QMg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.32': - resolution: {integrity: sha512-FuQpbNC/hE//bvv29PFnk0AtpJzdPdYl5CMhlWPovd9g3Kc3lw9TrEPIbL7gRPUdhKAiq6rVaaGvOnXxsa0eww==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': + resolution: {integrity: sha512-tYeXprDOrEgVHUbPXH6MPso4cM/c6RTkmJNICMQlYdki4hGMh92aj3yU6CKs+4X5gfG0yj5kVUw/L4M685SYag==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.32': - resolution: {integrity: sha512-hRZygRlaGCjcNTNY9GV7dDI18sG1dK3cc7ujHq72LoDad23zFDUGMQjiSxHWK+/r92iMV+j2MiHbvzayxqynsg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': + resolution: {integrity: sha512-N78vmZzP6zG967Ohr+MasCjmKtis0geZ1SOVmxrA0/bklTQSzH5kHEjW5Qn+i1taFno6GEre1E40v0wuWsNOQw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.32': - resolution: {integrity: sha512-HzgT6h+CXLs+GKAU0Wvkt3rvcv0CmDBsDjlPhh4GHysOKbG9NjpKYX2zvjx671E9pGbTvcPpwy7gGsy7xpu+8g==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': + resolution: {integrity: sha512-l+p4QVtG72C7wI2SIkNQw/KQtSjuYwS3rV6AKcWrRBF62ClsFUcif5vLaZIEbPrCXu5OFRXigXFJnxYsVVZqdQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.32': - resolution: {integrity: sha512-Ab/wbf6gdzphDbsg51UaxsC93foQ7wxhtg0SVCXd25BrV4MAJ1HoDtKN/f4h0maFmJobkqYub2DlmoasUzkvBg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': + resolution: {integrity: sha512-urzJX0HrXxIh0FfxwWRjfPCMeInU9qsImLQxHBgLp5ivji1EEUnOfux8KxPPnRQthJyneBrN2LeqUix9DYrNaQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.32': - resolution: {integrity: sha512-VoxqGEfh5A1Yx+zBp/FR5QwAbtzbuvky2SVc+ii4g1gLD4zww6mt/hPi5zG+b88zYPFBKHpxMtsz9cWqXU5V5Q==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': + resolution: {integrity: sha512-7ijfVK3GISnXIwq/1FZo+KyAUJjL3kWPJ7rViAL6MWeEBhEgRzJ0yEd9I8N9aut8Y8ab+EKFJyRNMWZuUBwQ0A==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.32': - resolution: {integrity: sha512-qZ1ViyOUDGbiZrSAJ/FIAhYUElDfVxxFW6DLT/w4KeoZN3HsF4jmRP95mXtl51/oGrqzU9l9Q2f7/P4O/o2ZZA==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': + resolution: {integrity: sha512-/m7sKZCS+cUULbzyJTIlv8JbjNohxbpAOA6cM+lgWgqVzPee3U6jpwydrib328JFN/gF9A99IZEnuGYqEDJdww==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.32': - resolution: {integrity: sha512-hEkG3wD+f3wytV0lqwb/uCrXc4r4Ny/DWJFJPfQR3VeMWplhWGgSHNwZc2Q7k86Yi36f9NNzzWmrIuvHI9lCVw==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': + resolution: {integrity: sha512-6SZk7zMgv+y3wFFQ9qE5P9NnRHcRsptL1ypmudD26PDY+PvFCvfHRkJNfclWnvacVGxjowr7JOL3a9fd1wWhUw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.32': - resolution: {integrity: sha512-k3MvDf8SiA7uP2ikP0unNouJ2YCrnwi7xcVW+RDgMp5YXVr3Xu6svmT3HGn0tkCKUuPmf+uy8I5uiHt5qWQbew==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': + resolution: {integrity: sha512-sFqfYPnBZ6xBhMkadB7UD0yjEDRvs7ipR3nCggblN+N4ODCXY6qhg/bKL39+W+dgQybL7ErD4EGERVbW9DAWvg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.32': - resolution: {integrity: sha512-wAi/FxGh7arDOUG45UmnXE1sZUa0hY4cXAO2qWAjFa3f7bTgz/BqwJ7XN5SUezvAJPNkME4fEpInfnBvM25a0w==} - cpu: [ia32] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.32': - resolution: {integrity: sha512-Ej0i4PZk8ltblZtzVK8ouaGUacUtxRmTm5S9794mdyU/tYxXjAJNseOfxrnHpMWKjMDrOKbqkPqJ52T9NR4LQQ==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': + resolution: {integrity: sha512-AnFWJdAqB8+IDPcGrATYs67Kik/6tnndNJV2jGRmwlbeNiQQ8GhRJU8ETRlINfII0pqi9k4WWLnb00p1QCxw/Q==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.32': - resolution: {integrity: sha512-QReCdvxiUZAPkvp1xpAg62IeNzykOFA6syH2CnClif4YmALN1XKpB39XneL80008UbtMShthSVDKmrx05N1q/g==} + '@rolldown/pluginutils@1.0.0-beta.58': + resolution: {integrity: sha512-qWhDs6yFGR5xDfdrwiSa3CWGIHxD597uGE/A9xGqytBjANvh4rLCTTkq7szhMV4+Ygh+PMS90KVJ8xWG/TkX4w==} - '@rollup/rollup-android-arm-eabi@4.40.2': - resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + '@rollup/rollup-android-arm-eabi@4.57.1': + resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.50.0': - resolution: {integrity: sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.40.2': - resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + '@rollup/rollup-android-arm64@4.57.1': + resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.50.0': - resolution: {integrity: sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.40.2': - resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + '@rollup/rollup-darwin-arm64@4.57.1': + resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.50.0': - resolution: {integrity: sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.40.2': - resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + '@rollup/rollup-darwin-x64@4.57.1': + resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.50.0': - resolution: {integrity: sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.40.2': - resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + '@rollup/rollup-freebsd-arm64@4.57.1': + resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.50.0': - resolution: {integrity: sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.40.2': - resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + '@rollup/rollup-freebsd-x64@4.57.1': + resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.50.0': - resolution: {integrity: sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.40.2': - resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': + resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.50.0': - resolution: {integrity: sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w==} + '@rollup/rollup-linux-arm-musleabihf@4.57.1': + resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.2': - resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.50.0': - resolution: {integrity: sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.40.2': - resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + '@rollup/rollup-linux-arm64-gnu@4.57.1': + resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.50.0': - resolution: {integrity: sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g==} + '@rollup/rollup-linux-arm64-musl@4.57.1': + resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.2': - resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.50.0': - resolution: {integrity: sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.40.2': - resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + '@rollup/rollup-linux-loong64-gnu@4.57.1': + resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.50.0': - resolution: {integrity: sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==} + '@rollup/rollup-linux-loong64-musl@4.57.1': + resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': - resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + '@rollup/rollup-linux-ppc64-gnu@4.57.1': + resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.50.0': - resolution: {integrity: sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg==} + '@rollup/rollup-linux-ppc64-musl@4.57.1': + resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.2': - resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + '@rollup/rollup-linux-riscv64-gnu@4.57.1': + resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.50.0': - resolution: {integrity: sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA==} + '@rollup/rollup-linux-riscv64-musl@4.57.1': + resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.2': - resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.50.0': - resolution: {integrity: sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.40.2': - resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + '@rollup/rollup-linux-s390x-gnu@4.57.1': + resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.50.0': - resolution: {integrity: sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.40.2': - resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + '@rollup/rollup-linux-x64-gnu@4.57.1': + resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.50.0': - resolution: {integrity: sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA==} + '@rollup/rollup-linux-x64-musl@4.57.1': + resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.2': - resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + '@rollup/rollup-openbsd-x64@4.57.1': + resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} cpu: [x64] - os: [linux] + os: [openbsd] - '@rollup/rollup-linux-x64-musl@4.50.0': - resolution: {integrity: sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-openharmony-arm64@4.50.0': - resolution: {integrity: sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q==} + '@rollup/rollup-openharmony-arm64@4.57.1': + resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.40.2': - resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + '@rollup/rollup-win32-arm64-msvc@4.57.1': + resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.50.0': - resolution: {integrity: sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.40.2': - resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + '@rollup/rollup-win32-ia32-msvc@4.57.1': + resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.50.0': - resolution: {integrity: sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.40.2': - resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + '@rollup/rollup-win32-x64-gnu@4.57.1': + resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.50.0': - resolution: {integrity: sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg==} + '@rollup/rollup-win32-x64-msvc@4.57.1': + resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} cpu: [x64] os: [win32] - '@schematics/angular@20.2.2': - resolution: {integrity: sha512-VzJsEIiBmHzJAOVaKHn1CwTuOqvI1GwZuneUk/tmyYKkKdWEgxnoNBvz1ql6eHstkLz3S9yt6aUuAgjQC+J2Xw==} + '@schematics/angular@21.1.3': + resolution: {integrity: sha512-obJvWBhzRdsYL2msM4+8bQD21vFl3VxaVsuiq6iIfYsxhU5i2Iar2wM9NaRaIIqAYhZ8ehQQ/moB9BEbWvDCTw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@sigstore/bundle@3.1.0': - resolution: {integrity: sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag==} + '@sigstore/bundle@4.0.0': + resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/core@3.1.0': + resolution: {integrity: sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/protobuf-specs@0.5.0': + resolution: {integrity: sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==} engines: {node: ^18.17.0 || >=20.5.0} - '@sigstore/core@2.0.0': - resolution: {integrity: sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg==} - engines: {node: ^18.17.0 || >=20.5.0} + '@sigstore/sign@4.1.0': + resolution: {integrity: sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==} + engines: {node: ^20.17.0 || >=22.9.0} - '@sigstore/protobuf-specs@0.4.3': - resolution: {integrity: sha512-fk2zjD9117RL9BjqEwF7fwv7Q/P9yGsMV4MUJZ/DocaQJ6+3pKr+syBq1owU5Q5qGw5CUbXzm+4yJ2JVRDQeSA==} - engines: {node: ^18.17.0 || >=20.5.0} + '@sigstore/tuf@4.0.1': + resolution: {integrity: sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==} + engines: {node: ^20.17.0 || >=22.9.0} - '@sigstore/sign@3.1.0': - resolution: {integrity: sha512-knzjmaOHOov1Ur7N/z4B1oPqZ0QX5geUfhrVaqVlu+hl0EAoL4o+l0MSULINcD5GCWe3Z0+YJO8ues6vFlW0Yw==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@sigstore/tuf@3.1.1': - resolution: {integrity: sha512-eFFvlcBIoGwVkkwmTi/vEQFSva3xs5Ot3WmBcjgjVdiaoelBLQaQ/ZBfhlG0MnG0cmTYScPpk7eDdGDWUcFUmg==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@sigstore/verify@2.1.1': - resolution: {integrity: sha512-hVJD77oT67aowHxwT4+M6PGOp+E2LtLdTK3+FC0lBO9T7sYwItDMXZ7Z07IDCvR1M717a4axbIWckrW67KMP/w==} - engines: {node: ^18.17.0 || >=20.5.0} + '@sigstore/verify@3.1.0': + resolution: {integrity: sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==} + engines: {node: ^20.17.0 || >=22.9.0} '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sinclair/typebox@0.34.38': - resolution: {integrity: sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==} + '@sinclair/typebox@0.34.41': + resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@sinonjs/fake-timers@13.0.5': resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@tsconfig/node10@1.0.9': resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} @@ -2931,12 +2797,12 @@ packages: resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} engines: {node: ^16.14.0 || >=18.0.0} - '@tufjs/models@3.0.1': - resolution: {integrity: sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==} - engines: {node: ^18.17.0 || >=20.5.0} + '@tufjs/models@4.1.0': + resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} + engines: {node: ^20.17.0 || >=22.9.0} - '@tybys/wasm-util@0.10.0': - resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -2968,26 +2834,23 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + '@types/express-serve-static-core@4.19.8': + resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==} - '@types/express-serve-static-core@5.0.6': - resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} - - '@types/express@4.17.23': - resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} + '@types/express@4.17.25': + resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/http-proxy@1.17.16': - resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + '@types/http-proxy@1.17.17': + resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -3001,9 +2864,6 @@ packages: '@types/jest@30.0.0': resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} - '@types/jsdom@20.0.1': - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - '@types/jsdom@21.1.7': resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} @@ -3013,11 +2873,11 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@24.3.0': - resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} + '@types/node@25.2.1': + resolution: {integrity: sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==} '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} @@ -3028,14 +2888,17 @@ packages: '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - '@types/send@0.17.5': - resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} + '@types/send@0.17.6': + resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} + + '@types/send@1.2.1': + resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.8': - resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} + '@types/serve-static@1.15.10': + resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -3055,63 +2918,63 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.41.0': - resolution: {integrity: sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==} + '@typescript-eslint/eslint-plugin@8.54.0': + resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.41.0 + '@typescript-eslint/parser': ^8.54.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.41.0': - resolution: {integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==} + '@typescript-eslint/parser@8.54.0': + resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.41.0': - resolution: {integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==} + '@typescript-eslint/project-service@8.54.0': + resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.41.0': - resolution: {integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==} + '@typescript-eslint/scope-manager@8.54.0': + resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.41.0': - resolution: {integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==} + '@typescript-eslint/tsconfig-utils@8.54.0': + resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.41.0': - resolution: {integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==} + '@typescript-eslint/type-utils@8.54.0': + resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.41.0': - resolution: {integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==} + '@typescript-eslint/types@8.54.0': + resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.41.0': - resolution: {integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==} + '@typescript-eslint/typescript-estree@8.54.0': + resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.41.0': - resolution: {integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==} + '@typescript-eslint/utils@8.54.0': + resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.41.0': - resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==} + '@typescript-eslint/visitor-keys@8.54.0': + resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -3212,12 +3075,6 @@ packages: cpu: [x64] os: [win32] - '@vitejs/plugin-basic-ssl@2.0.0': - resolution: {integrity: sha512-gc9Tjg8bUxBVSTzeWT3Njc0Cl3PakHFKdNfABnZWiUgbxqmHDEn7uECv3fHVylxoYgNzAcmU7ZrILz+BwSo3sA==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - peerDependencies: - vite: ^6.0.0 - '@vitejs/plugin-basic-ssl@2.1.0': resolution: {integrity: sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -3278,13 +3135,9 @@ packages: '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - - abbrev@3.0.1: - resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} - engines: {node: ^18.17.0 || >=20.5.0} + abbrev@4.0.0: + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} + engines: {node: ^20.17.0 || >=22.9.0} accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} @@ -3294,9 +3147,6 @@ packages: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} - acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - acorn-import-phases@1.0.4: resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} engines: {node: '>=10.13.0'} @@ -3326,10 +3176,6 @@ packages: resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} engines: {node: '>=8.9'} - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -3361,8 +3207,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.35.0: - resolution: {integrity: sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==} + algoliasearch@5.46.2: + resolution: {integrity: sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==} engines: {node: '>= 14.0.0'} ansi-colors@4.1.3: @@ -3373,8 +3219,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} ansi-html-community@0.0.8: @@ -3386,8 +3232,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.2.0: - resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -3398,14 +3244,10 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - ansis@4.1.0: - resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} - engines: {node: '>=14'} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -3426,14 +3268,8 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + autoprefixer@10.4.23: + resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -3443,11 +3279,11 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - babel-jest@30.1.2: - resolution: {integrity: sha512-IQCus1rt9kaSh7PQxLYRY5NmkNrNlU2TpabzwV7T2jljnpdHOcmnYYv8QmE04Li4S3a2Lj8/yXyET5pBarPr6g==} + babel-jest@30.2.0: + resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - '@babel/core': ^7.11.0 + '@babel/core': ^7.11.0 || ^8.0.0-0 babel-loader@10.0.0: resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} @@ -3456,26 +3292,26 @@ packages: '@babel/core': ^7.12.0 webpack: '>=5.61.0' - babel-plugin-istanbul@7.0.0: - resolution: {integrity: sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==} + babel-plugin-istanbul@7.0.1: + resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} engines: {node: '>=12'} - babel-plugin-jest-hoist@30.0.1: - resolution: {integrity: sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==} + babel-plugin-jest-hoist@30.2.0: + resolution: {integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - babel-plugin-polyfill-corejs2@0.4.13: - resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} + babel-plugin-polyfill-corejs2@0.4.15: + resolution: {integrity: sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.11.1: - resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.4: - resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} + babel-plugin-polyfill-regenerator@0.6.6: + resolution: {integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -3484,11 +3320,11 @@ packages: peerDependencies: '@babel/core': ^7.0.0 || ^8.0.0-0 - babel-preset-jest@30.0.1: - resolution: {integrity: sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==} + babel-preset-jest@30.2.0: + resolution: {integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - '@babel/core': ^7.11.0 + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -3496,13 +3332,13 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.9.19: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + hasBin: true + batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - beasties@0.3.4: - resolution: {integrity: sha512-NmzN1zN1cvGccXFyZ73335+ASXwBlVWcUPssiUDIlFdfyatHPRRufjCd5w8oPaQPvVnf9ELklaCGb1gi9FBwIw==} - engines: {node: '>=14.0.0'} - beasties@0.3.5: resolution: {integrity: sha512-NaWu+f4YrJxEttJSm16AzMIFtVldCvaJ68b1L098KpqXmxt9xOLtKoLkKxb8ekhOrLqEJAbvT6n6SEvB/sac7A==} engines: {node: '>=14.0.0'} @@ -3520,12 +3356,12 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.0: - resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} bonjour-service@1.3.0: @@ -3549,8 +3385,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.25.4: - resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -3575,9 +3411,9 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - cacache@19.0.1: - resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} - engines: {node: ^18.17.0 || >=20.5.0} + cacache@20.0.3: + resolution: {integrity: sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==} + engines: {node: ^20.17.0 || >=22.9.0} call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} @@ -3599,8 +3435,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001739: - resolution: {integrity: sha512-y+j60d6ulelrNSwpPyrHdl+9mJnQzHBr08xm48Qno0nSk4h3Qojh+ziv2qE6rXf4k3tadF4o1J/1tAbVm1NtnA==} + caniuse-lite@1.0.30001768: + resolution: {integrity: sha512-qY3aDRZC5nWPgHUgIB84WL+nySuo19wk0VJpp/XI9T34lrvkyhRvNVOFJOp2kxClQhiFBu+TaUSudf6oa3vkSA==} canvas@3.0.0: resolution: {integrity: sha512-NtcIBY88FjymQy+g2g5qnuP5IslrbWCQ3A6rSr1PeuYxVRapRZ3BZCrDyAakvI6CuDYidgZaf55ygulFVwROdg==} @@ -3610,16 +3446,16 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.6.0: - resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} - chardet@2.1.0: - resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} @@ -3629,13 +3465,13 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -3644,14 +3480,14 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - ci-info@4.3.0: resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} engines: {node: '>=8'} + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} + engines: {node: '>=8'} + cjs-module-lexer@2.1.0: resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} @@ -3659,13 +3495,13 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} + engines: {node: '>=18.20'} - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} + cli-truncate@5.1.1: + resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} + engines: {node: '>=20'} cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} @@ -3700,10 +3536,6 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -3711,8 +3543,8 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression@1.8.0: - resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} engines: {node: '>= 0.8.0'} concat-map@0.0.1: @@ -3726,9 +3558,9 @@ packages: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} - content-disposition@1.0.0: - resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} - engines: {node: '>= 0.6'} + content-disposition@1.0.1: + resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} + engines: {node: '>=18'} content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} @@ -3740,17 +3572,13 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} @@ -3758,20 +3586,20 @@ packages: copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - copy-webpack-plugin@13.0.0: - resolution: {integrity: sha512-FgR/h5a6hzJqATDGd9YG41SeDViH+0bkHn6WNXCi5zKAZkeESeSxLySSsFLHqLEVCh0E+rITmCf0dusXWYukeQ==} + copy-webpack-plugin@13.0.1: + resolution: {integrity: sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.1.0 - core-js-compat@3.43.0: - resolution: {integrity: sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==} + core-js-compat@3.48.0: + resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} cosmiconfig@9.0.0: @@ -3802,16 +3630,9 @@ packages: webpack: optional: true - css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - css-select@6.0.0: resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==} - css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} - css-what@7.0.0: resolution: {integrity: sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==} engines: {node: '>= 6'} @@ -3821,24 +3642,10 @@ packages: engines: {node: '>=4'} hasBin: true - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - - cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - - cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - cssstyle@4.6.0: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} - data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -3851,8 +3658,8 @@ packages: supports-color: optional: true - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -3871,8 +3678,8 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - dedent@1.6.0: - resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + dedent@1.7.0: + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -3890,22 +3697,18 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + default-browser@5.4.0: + resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} engines: {node: '>=18'} define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -3921,13 +3724,8 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} detect-newline@3.1.0: @@ -3955,11 +3753,6 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} @@ -3977,20 +3770,15 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.5.213: - resolution: {integrity: sha512-xr9eRzSLNa4neDO0xVFrkXu3vyIzG4Ay08dApecw42Z1NbmCt+keEpXdvlYGVe0wtvY5dhW0Ay0lY0IOfsCg0Q==} + electron-to-chromium@1.5.286: + resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} - emoji-regex@10.5.0: - resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4002,10 +3790,6 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} @@ -4016,8 +3800,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + enhanced-resolve@5.19.0: + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -4028,6 +3812,10 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -4043,8 +3831,8 @@ packages: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} @@ -4054,35 +3842,30 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - esbuild-wasm@0.25.5: - resolution: {integrity: sha512-V/rbdOws2gDcnCAECfPrajhuafI0WY4WumUgc8ZHwOLnvmM0doLQ+dqvVFI2qkVxQsvo6880aC9IjpyDqcwwTw==} + esbuild-wasm@0.27.0: + resolution: {integrity: sha512-4XpLDOY4sOzqgiezPXDkHTn25cBA1MKN5OTotehoFR7/wTpSYCK76OA8rQfpiuz12G27JpGxxdh+/D9GcNl61w==} engines: {node: '>=18'} hasBin: true - esbuild-wasm@0.25.8: - resolution: {integrity: sha512-VFUDMoZdf/NsyCepv5heZqvNLYj9HL+xEKG5tktsFbx+shR8Dt9MchKBEdu/5the2RfTzgxkO6B/nUfzmsWN9Q==} + esbuild-wasm@0.27.2: + resolution: {integrity: sha512-eUTnl8eh+v8UZIZh4MrMOKDAc8Lm7+NqP3pyuTORGFY1s/o9WoiJgKnwXy+te2J3hX7iRbFSHEyig7GsPeeJyw==} engines: {node: '>=18'} hasBin: true - esbuild@0.25.5: - resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + esbuild@0.27.0: + resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} engines: {node: '>=18'} hasBin: true - esbuild@0.25.8: - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.25.9: - resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} hasBin: true @@ -4101,11 +3884,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -4114,6 +3892,10 @@ packages: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.0: + resolution: {integrity: sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4122,8 +3904,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.34.0: - resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} + eslint@9.39.2: + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -4141,8 +3923,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -4168,8 +3950,8 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} @@ -4199,34 +3981,30 @@ packages: resolution: {integrity: sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - expect@30.1.2: - resolution: {integrity: sha512-xvHszRavo28ejws8FpemjhwswGj4w/BetHIL8cU49u4sGyXDw2+p3YbeDbj6xzlxi6kWTjIRSTJ+9sNXPnF0Zg==} + expect@30.2.0: + resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - exponential-backoff@3.1.2: - resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - express-rate-limit@7.5.1: - resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} + express-rate-limit@8.2.1: + resolution: {integrity: sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + express@4.22.1: + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} - express@5.1.0: - resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -4236,9 +4014,6 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - faye-websocket@0.11.4: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} @@ -4262,20 +4037,17 @@ packages: file-saver@2.0.5: resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} engines: {node: '>= 0.8'} - finalhandler@2.1.0: - resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} - engines: {node: '>= 0.8'} + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} @@ -4296,8 +4068,8 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -4309,16 +4081,12 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} @@ -4331,10 +4099,6 @@ packages: fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs-minipass@3.0.3: resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4363,8 +4127,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.3.1: - resolution: {integrity: sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==} + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -4394,20 +4158,27 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-to-regex.js@1.2.0: + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true + glob@13.0.0: + resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} + engines: {node: 20 || >=22} + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} @@ -4420,12 +4191,14 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -4438,21 +4211,17 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hosted-git-info@8.1.0: - resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} - engines: {node: ^18.17.0 || >=20.5.0} + hono@4.11.7: + resolution: {integrity: sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==} + engines: {node: '>=16.9.0'} - hosted-git-info@9.0.0: - resolution: {integrity: sha512-gEf705MZLrDPkbbhi8PnoO4ZwYgKoNL+ISZ3AjZMht2r3N5tuTwncyDi6Fv2/qDnMmZxgs0yI8WDOyR8q3G+SQ==} + hosted-git-info@9.0.2: + resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} engines: {node: ^20.17.0 || >=22.9.0} hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -4460,8 +4229,8 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} @@ -4469,21 +4238,17 @@ packages: http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} - http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} engines: {node: '>= 0.6'} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} http-parser-js@0.5.10: resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -4505,10 +4270,6 @@ packages: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -4529,6 +4290,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -4555,8 +4320,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - immutable@5.1.3: - resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + immutable@5.1.4: + resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -4575,29 +4340,30 @@ packages: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - ini@5.0.0: - resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} - engines: {node: ^18.17.0 || >=20.5.0} + ini@6.0.0: + resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} + engines: {node: ^20.17.0 || >=22.9.0} ip-address@10.0.1: resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + engines: {node: '>= 12'} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} engines: {node: '>= 10'} is-arrayish@0.2.1: @@ -4624,10 +4390,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - is-fullwidth-code-point@5.1.0: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} @@ -4640,6 +4402,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -4649,8 +4415,8 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} - is-network-error@1.1.0: - resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} + is-network-error@1.3.0: + resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} engines: {node: '>=16'} is-number@7.0.0: @@ -4679,10 +4445,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - is-unicode-supported@2.1.0: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} @@ -4724,28 +4486,23 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - jest-changed-files@30.0.5: - resolution: {integrity: sha512-bGl2Ntdx0eAwXuGpdLdVYVr5YQHnSZlQ0y9HVDu565lCUAe9sj6JOtBbMmBBikGIegne9piDDIOeiLVoqTkz4A==} + jest-changed-files@30.2.0: + resolution: {integrity: sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-circus@30.1.3: - resolution: {integrity: sha512-Yf3dnhRON2GJT4RYzM89t/EXIWNxKTpWTL9BfF3+geFetWP4XSvJjiU1vrWplOiUkmq8cHLiwuhz+XuUp9DscA==} + jest-circus@30.2.0: + resolution: {integrity: sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-cli@30.1.3: - resolution: {integrity: sha512-G8E2Ol3OKch1DEeIBl41NP7OiC6LBhfg25Btv+idcusmoUSpqUkbrneMqbW9lVpI/rCKb/uETidb7DNteheuAQ==} + jest-cli@30.2.0: + resolution: {integrity: sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: @@ -4754,8 +4511,8 @@ packages: node-notifier: optional: true - jest-config@30.1.3: - resolution: {integrity: sha512-M/f7gqdQEPgZNA181Myz+GXCe8jXcJsGjCMXUzRj22FIXsZOyHNte84e0exntOvdPaeh9tA0w+B8qlP2fAezfw==} + jest-config@30.2.0: + resolution: {integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: '@types/node': '*' @@ -4777,29 +4534,20 @@ packages: resolution: {integrity: sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-diff@30.1.2: - resolution: {integrity: sha512-4+prq+9J61mOVXCa4Qp8ZjavdxzrWQXrI80GNxP8f4tkI2syPuPrJgdRPZRrfUTRvIoUwcmNLbqEJy9W800+NQ==} + jest-diff@30.2.0: + resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-docblock@30.0.1: - resolution: {integrity: sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==} + jest-docblock@30.2.0: + resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-each@30.1.0: - resolution: {integrity: sha512-A+9FKzxPluqogNahpCv04UJvcZ9B3HamqpDNWNKDjtxVRYB8xbZLFuCr8JAJFpNp83CA0anGQFlpQna9Me+/tQ==} + jest-each@30.2.0: + resolution: {integrity: sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-environment-jsdom@29.7.0: - resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jest-environment-jsdom@30.1.2: - resolution: {integrity: sha512-LXsfAh5+mDTuXDONGl1ZLYxtJEaS06GOoxJb2arcJTjIfh1adYg8zLD8f6P0df8VmjvCaMrLmc1PgHUI/YUTbg==} + jest-environment-jsdom@30.2.0: + resolution: {integrity: sha512-zbBTiqr2Vl78pKp/laGBREYzbZx9ZtqPjOK4++lL4BNDhxRnahg51HtoDrk9/VjIy9IthNEWdKVd7H5bqBhiWQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 @@ -4807,54 +4555,50 @@ packages: canvas: optional: true - jest-environment-node@30.1.2: - resolution: {integrity: sha512-w8qBiXtqGWJ9xpJIA98M0EIoq079GOQRQUyse5qg1plShUCQ0Ek1VTTcczqKrn3f24TFAgFtT+4q3aOXvjbsuA==} + jest-environment-node@30.2.0: + resolution: {integrity: sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@30.1.0: - resolution: {integrity: sha512-JLeM84kNjpRkggcGpQLsV7B8W4LNUWz7oDNVnY1Vjj22b5/fAb3kk3htiD+4Na8bmJmjJR7rBtS2Rmq/NEcADg==} + jest-haste-map@30.2.0: + resolution: {integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-junit@16.0.0: resolution: {integrity: sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==} engines: {node: '>=10.12.0'} - jest-leak-detector@30.1.0: - resolution: {integrity: sha512-AoFvJzwxK+4KohH60vRuHaqXfWmeBATFZpzpmzNmYTtmRMiyGPVhkXpBqxUQunw+dQB48bDf4NpUs6ivVbRv1g==} + jest-leak-detector@30.2.0: + resolution: {integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-matcher-utils@30.0.5: resolution: {integrity: sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-matcher-utils@30.1.2: - resolution: {integrity: sha512-7ai16hy4rSbDjvPTuUhuV8nyPBd6EX34HkBsBcBX2lENCuAQ0qKCPb/+lt8OSWUa9WWmGYLy41PrEzkwRwoGZQ==} + jest-matcher-utils@30.2.0: + resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-message-util@30.0.5: resolution: {integrity: sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-message-util@30.1.0: - resolution: {integrity: sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==} + jest-message-util@30.2.0: + resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-mock@30.0.5: resolution: {integrity: sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-mock@30.2.0: + resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-pnp-resolver@1.2.3: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} @@ -4864,29 +4608,15 @@ packages: jest-resolve: optional: true - jest-preset-angular@14.6.0: - resolution: {integrity: sha512-LGSKLCsUhtrs2dw6f7ega/HOS8/Ni/1gV+oXmxPHmJDLHFpM6cI78Monmz8Z1P87a/A4OwnKilxgPRr+6Pzmgg==} - engines: {node: ^14.15.0 || >=16.10.0} - peerDependencies: - '@angular/compiler-cli': '>=15.0.0 <21.0.0' - '@angular/core': '>=15.0.0 <21.0.0' - '@angular/platform-browser-dynamic': '>=15.0.0 <21.0.0' - jest: ^29.0.0 - jsdom: '>=20.0.0' - typescript: '>=4.8' - peerDependenciesMeta: - jsdom: - optional: true - - jest-preset-angular@15.0.0: - resolution: {integrity: sha512-sNf5tGwnPALDEI4R3Z10WXbh3jjyHnw5UtQPz306oStCvwy9rCB148nmIEkdll4MltWB+fQccVLHQeX/f0Zy9A==} + jest-preset-angular@16.0.0: + resolution: {integrity: sha512-FVo98EZiJ9cwHeteJozCCIkgJecytt1tu0t8DrAMTyyQ4x/seeZmctkWXP0J9uGyARS0Kcwd+f2YeKqKQOB2yA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} peerDependencies: - '@angular/compiler-cli': '>=18.0.0 <21.0.0' - '@angular/core': '>=18.0.0 <21.0.0' - '@angular/platform-browser-dynamic': '>=18.0.0 <21.0.0' + '@angular/compiler-cli': '>=19.0.0 <22.0.0' + '@angular/core': '>=19.0.0 <22.0.0' + '@angular/platform-browser': '>=19.0.0 <22.0.0' + '@angular/platform-browser-dynamic': '>=19.0.0 <22.0.0' jest: ^30.0.0 - jest-environment-jsdom: ^30.0.0 jsdom: '>=26.0.0' typescript: '>=5.5' @@ -4894,40 +4624,40 @@ packages: resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-resolve-dependencies@30.1.3: - resolution: {integrity: sha512-DNfq3WGmuRyHRHfEet+Zm3QOmVFtIarUOQHHryKPc0YL9ROfgWZxl4+aZq/VAzok2SS3gZdniP+dO4zgo59hBg==} + jest-resolve-dependencies@30.2.0: + resolution: {integrity: sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-resolve@30.1.3: - resolution: {integrity: sha512-DI4PtTqzw9GwELFS41sdMK32Ajp3XZQ8iygeDMWkxlRhm7uUTOFSZFVZABFuxr0jvspn8MAYy54NxZCsuCTSOw==} + jest-resolve@30.2.0: + resolution: {integrity: sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runner@30.1.3: - resolution: {integrity: sha512-dd1ORcxQraW44Uz029TtXj85W11yvLpDuIzNOlofrC8GN+SgDlgY4BvyxJiVeuabA1t6idjNbX59jLd2oplOGQ==} + jest-runner@30.2.0: + resolution: {integrity: sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runtime@30.1.3: - resolution: {integrity: sha512-WS8xgjuNSphdIGnleQcJ3AKE4tBKOVP+tKhCD0u+Tb2sBmsU8DxfbBpZX7//+XOz81zVs4eFpJQwBNji2Y07DA==} + jest-runtime@30.2.0: + resolution: {integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-snapshot@30.1.2: - resolution: {integrity: sha512-4q4+6+1c8B6Cy5pGgFvjDy/Pa6VYRiGu0yQafKkJ9u6wQx4G5PqI2QR6nxTl43yy7IWsINwz6oT4o6tD12a8Dg==} + jest-snapshot@30.2.0: + resolution: {integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-util@30.0.5: resolution: {integrity: sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-validate@30.1.0: - resolution: {integrity: sha512-7P3ZlCFW/vhfQ8pE7zW6Oi4EzvuB4sgR72Q1INfW9m0FGo0GADYlPwIkf4CyPq7wq85g+kPMtPOHNAdWHeBOaA==} + jest-util@30.2.0: + resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-watcher@30.1.3: - resolution: {integrity: sha512-6jQUZCP1BTL2gvG9E4YF06Ytq4yMb4If6YoQGRR6PpjtqOXSP3sKe2kqwB6SQ+H9DezOfZaSLnmka1NtGm3fCQ==} + jest-validate@30.2.0: + resolution: {integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-watcher@30.2.0: + resolution: {integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-websocket-mock@2.5.0: @@ -4937,12 +4667,12 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jest-worker@30.1.0: - resolution: {integrity: sha512-uvWcSjlwAAgIu133Tt77A05H7RIk3Ho8tZL50bQM2AkvLdluw9NG48lRCl3Dt+MOH719n/0nnb5YxUwcuJiKRA==} + jest-worker@30.2.0: + resolution: {integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest@30.1.3: - resolution: {integrity: sha512-Ry+p2+NLk6u8Agh5yVqELfUJvRfV51hhVBRIB5yZPY7mU0DGBmOuFG5GebZbMbm86cdQNK0fhJuDX8/1YorISQ==} + jest@30.2.0: + resolution: {integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: @@ -4951,30 +4681,24 @@ packages: node-notifier: optional: true - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jose@6.1.3: + resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - jsdom@26.1.0: resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} engines: {node: '>=18'} @@ -4984,11 +4708,6 @@ packages: canvas: optional: true - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -5000,9 +4719,9 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@4.0.0: - resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} - engines: {node: ^18.17.0 || >=20.5.0} + json-parse-even-better-errors@5.0.0: + resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} + engines: {node: ^20.17.0 || >=22.9.0} json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -5010,6 +4729,9 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-schema-typed@8.0.2: + resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -5035,8 +4757,8 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - launch-editor@2.10.0: - resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} + launch-editor@2.12.0: + resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==} less-loader@12.3.0: resolution: {integrity: sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==} @@ -5051,8 +4773,8 @@ packages: webpack: optional: true - less@4.3.0: - resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==} + less@4.4.2: + resolution: {integrity: sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==} engines: {node: '>=14'} hasBin: true @@ -5075,24 +4797,16 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listr2@8.3.3: - resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} - engines: {node: '>=18.0.0'} - - listr2@9.0.1: - resolution: {integrity: sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==} + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} - lmdb@3.3.0: - resolution: {integrity: sha512-MgJocUI6QEiSXQBFWLeyo1R7eQj8Rke5dlPxX0KFwli8/bsCxpM/KbXO5y0qmV/5llQ3wpneDWcTYxa+4vn8iQ==} + lmdb@3.4.4: + resolution: {integrity: sha512-+Y2DqovevLkb6DrSQ6SXTYLEd6kvlRbhsxzgJrk7BUfOVA/mt21ak6pFDZDKxiAczHMWxrb02kXBTSTIA0O94A==} hasBin: true - lmdb@3.4.2: - resolution: {integrity: sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==} - hasBin: true - - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} loader-utils@2.0.4: @@ -5123,11 +4837,11 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} engines: {node: '>=18'} log-update@6.1.0: @@ -5137,15 +4851,15 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.1: - resolution: {integrity: sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==} + lru-cache@11.2.5: + resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} engines: {node: 20 || >=22} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -5158,9 +4872,9 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - make-fetch-happen@14.0.3: - resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} - engines: {node: ^18.17.0 || >=20.5.0} + make-fetch-happen@15.0.3: + resolution: {integrity: sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==} + engines: {node: ^20.17.0 || >=22.9.0} makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} @@ -5180,9 +4894,10 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memfs@4.17.2: - resolution: {integrity: sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==} - engines: {node: '>= 4.0.0'} + memfs@4.56.10: + resolution: {integrity: sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==} + peerDependencies: + tslib: '2' merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -5194,10 +4909,6 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} @@ -5221,9 +4932,9 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime-types@3.0.1: - resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} - engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} @@ -5246,8 +4957,8 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - mini-css-extract-plugin@2.9.2: - resolution: {integrity: sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==} + mini-css-extract-plugin@2.9.4: + resolution: {integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 @@ -5255,17 +4966,13 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.0.3: - resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -5277,9 +4984,9 @@ packages: resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} engines: {node: '>=16 || 14 >=14.17'} - minipass-fetch@4.0.1: - resolution: {integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==} - engines: {node: ^18.17.0 || >=20.5.0} + minipass-fetch@5.0.0: + resolution: {integrity: sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==} + engines: {node: ^20.17.0 || >=22.9.0} minipass-flush@1.0.5: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} @@ -5297,20 +5004,12 @@ packages: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} mkdirp-classic@0.5.3: @@ -5321,11 +5020,6 @@ packages: engines: {node: '>=10'} hasBin: true - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - mock-socket@9.3.1: resolution: {integrity: sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==} engines: {node: '>= 8'} @@ -5344,8 +5038,8 @@ packages: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.5: - resolution: {integrity: sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==} + msgpackr@1.11.8: + resolution: {integrity: sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==} multicast-dns@7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} @@ -5363,8 +5057,8 @@ packages: napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - napi-postinstall@0.3.2: - resolution: {integrity: sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw==} + napi-postinstall@0.3.3: + resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -5391,9 +5085,6 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - ng2-pdf-viewer@10.4.0: - resolution: {integrity: sha512-TPh1oLZoeARggreTG60Sl3ikSn+Z3+At9pLZ0o/vxPjc7mW2ok2XPyl2Oqz7VyP80ipVorldm1hsLPBmNe2zzA==} - ngx-bootstrap-icons@1.9.3: resolution: {integrity: sha512-UsFqJ/cn0u5W39hVMIDbm+ze1dCF9fDV839scqeimi70Efcmg41zOx6GgR6i2gWAVFR0OBso1cdqb4E75XhTSw==} engines: {node: '>= 16.18.1', npm: '>= 8.11.0'} @@ -5401,38 +5092,38 @@ packages: '@angular/common': '>= 13.3.8' '@angular/core': '>= 13.3.8' - ngx-color@10.0.0: - resolution: {integrity: sha512-WYNB/JWE8DzedJz7CuI9ewKFbRngeeTESXQKvHhdgymhil5enhlVFdufNTE6LMctAW5gZAmt/meNVtjNhZknlw==} + ngx-color@10.1.0: + resolution: {integrity: sha512-yuxlE1LfN+PABIO4hv0Gw5ksq8g9XkMJKrGPn2SWbrre/gsH+kkyyn3rwSCurinnLCnw7czqenwQUtnBJm8yww==} peerDependencies: '@angular/common': '>=19.0.0-0' '@angular/core': '>=19.0.0-0' - ngx-cookie-service@20.1.0: - resolution: {integrity: sha512-g7Ddq8097qujmJfoEK27H12KLEpuO4SBPhoOYQ2kmLMSvz65vRrSKVwzOxdc75cFLQPW45Jfyyg3LoMTjKW0uA==} + ngx-cookie-service@21.1.0: + resolution: {integrity: sha512-W3IsoMImUVNt0ZuMesEuQJUGrEgKJaPkQGGfCg7zjUGM/EaeAIbIkfNktNIgUDmeUYapZQJa2pSg4YuK4v1gVQ==} peerDependencies: - '@angular/common': ^20.0.0 - '@angular/core': ^20.0.0 + '@angular/common': ^21.0.0 + '@angular/core': ^21.0.0 - ngx-device-detector@10.1.0: - resolution: {integrity: sha512-+MrJReetLq9Flp/IoncJYvmnOP8X6vEFK/qR+2PghoqUXwDlyNjh8ujX/nx2SK/5khK2Yr0bj7ICowhXjhgC/w==} + ngx-device-detector@11.0.0: + resolution: {integrity: sha512-vQ07MpUvVKgxGMPmNvbZ9mUcgH4cH0KMVCj9skMOciPh4sBUKNsorWE/FUs2eSYiLbtu7oq1JcPMcRuEWZ1rug==} peerDependencies: - '@angular/common': ^20.0.0 - '@angular/core': ^20.0.0 + '@angular/common': ^21.0.0 + '@angular/core': ^21.0.0 - ngx-ui-tour-core@15.0.0: - resolution: {integrity: sha512-ECFU+aELgXpltveC7rtoQn72bzhmQB/bpqPUcfr2G+WjT2nUPMsbRRDbK5RfngslM0cNl5JJ1N0Z/KR39FJ7oA==} + ngx-ui-tour-core@16.0.0: + resolution: {integrity: sha512-pfIUsYwZ0x5hHZTewxHT8V/mOFUnXLM8w+3m0UlYvH0ikFMtY8WaDK4YGnAyf4ASPEx/14jtgU5VyEf9aTgcJA==} peerDependencies: - '@angular/common': ^20.0.0 - '@angular/core': ^20.0.0 - '@angular/router': ^20.0.0 + '@angular/common': ^21.1.0 + '@angular/core': ^21.1.0 + '@angular/router': ^21.1.0 rxjs: ^7.4.0 - ngx-ui-tour-ng-bootstrap@17.0.1: - resolution: {integrity: sha512-JgKiMnYHuvTDQfo0XknRiSvyZZWGsyYyD5z7J5SEerQ4K6jp1RDrQYlkSvSN30qUKJ0WrO1QTEZ4hoIElrr7gQ==} + ngx-ui-tour-ng-bootstrap@18.0.0: + resolution: {integrity: sha512-2yfpyRPRnxXd407yI8uU1MpZr4430JbDIgR7aRVsE7QGrC4FiRtYQdGAQx+gf/iazcpWTxK4mK9oouJB3M/acQ==} peerDependencies: - '@angular/common': ^20.0.0 - '@angular/core': ^20.0.0 - '@ng-bootstrap/ng-bootstrap': ^19.0.0 + '@angular/common': ^21.1.0 + '@angular/core': ^21.1.0 + '@ng-bootstrap/ng-bootstrap': ^20.0.0 node-abi@3.71.0: resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} @@ -5444,69 +5135,64 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + node-forge@1.3.3: + resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} engines: {node: '>= 6.13.0'} node-gyp-build-optional-packages@5.2.2: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true - node-gyp@11.4.2: - resolution: {integrity: sha512-3gD+6zsrLQH7DyYOUIutaauuXrcyxeTPyQuZQCQoNPZMHMMS5m4y0xclNpvYzoK3VNzuyxT6eF4mkIL4WSZ1eQ==} - engines: {node: ^18.17.0 || >=20.5.0} + node-gyp@12.2.0: + resolution: {integrity: sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-readable-to-web-readable-stream@0.4.2: + resolution: {integrity: sha512-/cMZNI34v//jUTrI+UIo4ieHAB5EZRY/+7OmXZgBxaWBMcW2tGdceIw06RFxWxrKZ5Jp3sI2i5TsRo+CBhtVLQ==} - nopt@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + + nopt@9.0.0: + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - npm-bundled@4.0.0: - resolution: {integrity: sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==} - engines: {node: ^18.17.0 || >=20.5.0} - - npm-install-checks@7.1.2: - resolution: {integrity: sha512-z9HJBCYw9Zr8BqXcllKIs5nI+QggAImbBdHphOzVYrz2CB4iQ6FzWyKmlqDZua+51nAu7FcemlbTc9VgQN5XDQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - npm-normalize-package-bin@4.0.0: - resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} - engines: {node: ^18.17.0 || >=20.5.0} - - npm-package-arg@12.0.2: - resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} - engines: {node: ^18.17.0 || >=20.5.0} - - npm-package-arg@13.0.0: - resolution: {integrity: sha512-+t2etZAGcB7TbbLHfDwooV9ppB2LhhcT6A+L9cahsf9mEUAoQ6CktLEVvEnpD0N5CkX7zJqnPGaFtoQDy9EkHQ==} + npm-bundled@5.0.0: + resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} engines: {node: ^20.17.0 || >=22.9.0} - npm-packlist@10.0.1: - resolution: {integrity: sha512-vaC03b2PqJA6QqmwHi1jNU8fAPXEnnyv4j/W4PVfgm24C4/zZGSVut3z0YUeN0WIFCo1oGOL02+6LbvFK7JL4Q==} + npm-install-checks@8.0.0: + resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==} engines: {node: ^20.17.0 || >=22.9.0} - npm-pick-manifest@10.0.0: - resolution: {integrity: sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==} - engines: {node: ^18.17.0 || >=20.5.0} + npm-normalize-package-bin@5.0.0: + resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} + engines: {node: ^20.17.0 || >=22.9.0} - npm-registry-fetch@18.0.2: - resolution: {integrity: sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==} - engines: {node: ^18.17.0 || >=20.5.0} + npm-package-arg@13.0.2: + resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-packlist@10.0.3: + resolution: {integrity: sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-pick-manifest@11.0.3: + resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-registry-fetch@19.1.1: + resolution: {integrity: sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==} + engines: {node: ^20.17.0 || >=22.9.0} npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -5515,8 +5201,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.21: - resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} + nwsapi@2.2.22: + resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -5533,8 +5219,8 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} engines: {node: '>= 0.8'} once@1.4.0: @@ -5548,20 +5234,24 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - open@10.1.2: - resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@8.2.0: - resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} - engines: {node: '>=18'} + ora@9.0.0: + resolution: {integrity: sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==} + engines: {node: '>=20'} - ordered-binary@1.6.0: - resolution: {integrity: sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==} + ordered-binary@1.6.1: + resolution: {integrity: sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==} p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -5579,8 +5269,8 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + p-map@7.0.4: + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} p-retry@6.2.1: @@ -5594,8 +5284,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - pacote@21.0.0: - resolution: {integrity: sha512-lcqexq73AMv6QNLo7SOpz0JJoaGdS3rBFgF122NZVl1bApo2mfu+XzUBU/X/XsiJu+iUmKpekRayqQYAs+PhkA==} + pacote@21.0.4: + resolution: {integrity: sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true @@ -5614,15 +5304,9 @@ packages: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} - parse5-html-rewriting-stream@7.1.0: - resolution: {integrity: sha512-2ifK6Jb+ONoqOy5f+cYHsqvx1obHQdvIk13Jmt/5ezxP0U9p+fqd+R6O73KblGswyuzBYfetmsfK9ThMgnuPPg==} - parse5-html-rewriting-stream@8.0.0: resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==} - parse5-sax-parser@7.0.0: - resolution: {integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==} - parse5-sax-parser@8.0.0: resolution: {integrity: sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==} @@ -5655,19 +5339,19 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} + engines: {node: 20 || >=22} + path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} path-to-regexp@8.3.0: resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} - path2d@0.2.2: - resolution: {integrity: sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==} - engines: {node: '>=6'} - - pdfjs-dist@4.8.69: - resolution: {integrity: sha512-IHZsA4T7YElCKNNXtiLgqScw4zPd3pG9do8UrznC757gMd7UPeHSL2qwNNMJo4r79fl8oj1Xx+1nh2YkzdMpLQ==} - engines: {node: '>=18'} + pdfjs-dist@5.4.624: + resolution: {integrity: sha512-sm6TxKTtWv1Oh6n3C6J6a8odejb5uO4A4zo/2dgkHuC0iu8ZMAXOezEODkVaoVp8nX1Xzr+0WxFJJmUr45hQzg==} + engines: {node: '>=20.16.0 || >=22.3.0'} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -5676,10 +5360,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -5692,34 +5372,30 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} - piscina@5.1.1: - resolution: {integrity: sha512-9rPDIPsCwOivatEZGM8+apgM7AiTDLSnpwMmLaSmdm2PeND8bFJzZLZZxyrJjLH8Xx/MpKoVaKf+vZOWALNHbw==} + piscina@5.1.4: + resolution: {integrity: sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==} engines: {node: '>=20.x'} - piscina@5.1.3: - resolution: {integrity: sha512-0u3N7H4+hbr40KjuVn2uNhOcthu/9usKhnw5vT3J7ply79v3D3M8naI00el9Klcy16x557VsEkkUQaHCWFXC/g==} - engines: {node: '>=20.x'} - - pkce-challenge@5.0.0: - resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + pkce-challenge@5.0.1: + resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - playwright-core@1.55.0: - resolution: {integrity: sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==} + playwright-core@1.58.2: + resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} engines: {node: '>=18'} hasBin: true - playwright@1.55.0: - resolution: {integrity: sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==} + playwright@1.58.2: + resolution: {integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==} engines: {node: '>=18'} hasBin: true - postcss-loader@8.1.1: - resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} + postcss-loader@8.2.0: + resolution: {integrity: sha512-tHX+RkpsXVcc7st4dSdDGliI+r4aAQDuv+v3vFYHixb6YgjreG5AG4SEB0kDK8u2s6htqEEpKlkhSBUTvWKYnA==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -5758,21 +5434,21 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + prebuild-install@7.1.2: resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} engines: {node: '>=10'} @@ -5782,8 +5458,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-organize-imports@4.2.0: - resolution: {integrity: sha512-Zdy27UhlmyvATZi67BTnLcKTo8fm6Oik59Sz6H64PgZJVs6NJpPD1mT240mmJn62c98/QaL+r3kx9Q3gRpDajg==} + prettier-plugin-organize-imports@4.3.0: + resolution: {integrity: sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw==} peerDependencies: prettier: '>=2.0' typescript: '>=2.9' @@ -5805,9 +5481,13 @@ packages: resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - proc-log@5.0.0: - resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} - engines: {node: ^18.17.0 || >=20.5.0} + pretty-format@30.2.0: + resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + proc-log@6.1.0: + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} + engines: {node: ^20.17.0 || >=22.9.0} process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -5823,9 +5503,6 @@ packages: prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -5836,20 +5513,10 @@ packages: pure-rand@7.0.1: resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} - engines: {node: '>=0.6'} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -5857,13 +5524,13 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} - raw-body@3.0.0: - resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} - engines: {node: '>= 0.8'} + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} @@ -5887,11 +5554,15 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} engines: {node: '>=4'} regenerate@1.4.2: @@ -5900,15 +5571,15 @@ packages: regex-parser@2.3.1: resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true require-directory@2.1.1: @@ -5938,8 +5609,8 @@ packages: resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} engines: {node: '>=12'} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -5955,24 +5626,16 @@ packages: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rolldown@1.0.0-beta.32: - resolution: {integrity: sha512-vxI2sPN07MMaoYKlFrVva5qZ1Y7DAZkgp7MQwTnyHt4FUMz9Sh+YeCzNFV9JYHI6ZNwoGWLCfCViE3XVsRC1cg==} + rolldown@1.0.0-beta.58: + resolution: {integrity: sha512-v1FCjMZCan7f+xGAHBi+mqiE4MlH7I+SXEHSQSJoMOGNNB2UYtvMiejsq9YuUOiZjNeUeV/a21nSFbrUR+4ZCQ==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.40.2: - resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.50.0: - resolution: {integrity: sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw==} + rollup@4.57.1: + resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5983,13 +5646,10 @@ packages: rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} @@ -6002,8 +5662,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-loader@16.0.5: - resolution: {integrity: sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==} + sass-loader@16.0.6: + resolution: {integrity: sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -6023,25 +5683,21 @@ packages: webpack: optional: true - sass@1.88.0: - resolution: {integrity: sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==} + sass@1.97.1: + resolution: {integrity: sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==} engines: {node: '>=14.0.0'} hasBin: true - sass@1.90.0: - resolution: {integrity: sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==} - engines: {node: '>=14.0.0'} - hasBin: true - - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - schema-utils@4.3.2: - resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} select-hose@2.0.0: @@ -6059,37 +5715,34 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} - send@1.2.0: - resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + serve-index@1.9.2: + resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} engines: {node: '>= 0.8.0'} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} engines: {node: '>= 0.8.0'} - serve-static@2.2.0: - resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} engines: {node: '>= 18'} - setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -6132,9 +5785,9 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sigstore@3.1.0: - resolution: {integrity: sha512-ZpzWAFHIFqyFE56dXqgX/DkDRZdz+rRcjoIk/RQU4IX0wiCv1l8S7ZrXDHcCc+uaf+6o7w3h2l3g6GYG5TKN9Q==} - engines: {node: ^18.17.0 || >=20.5.0} + sigstore@4.1.0: + resolution: {integrity: sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==} + engines: {node: ^20.17.0 || >=22.9.0} simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} @@ -6149,12 +5802,8 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} smart-buffer@4.2.0: @@ -6192,10 +5841,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} @@ -6222,9 +5867,9 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - ssri@12.0.0: - resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} - engines: {node: ^18.17.0 || >=20.5.0} + ssri@13.0.0: + resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} + engines: {node: ^20.17.0 || >=22.9.0} stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} @@ -6234,10 +5879,6 @@ packages: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -6262,6 +5903,10 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string-width@8.1.1: + resolution: {integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==} + engines: {node: '>=20'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -6272,8 +5917,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -6315,8 +5960,8 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} - tapable@2.2.3: - resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} tar-fs@2.1.1: @@ -6326,16 +5971,12 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + tar@7.5.7: + resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==} engines: {node: '>=18'} - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + terser-webpack-plugin@5.3.16: + resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -6350,13 +5991,13 @@ packages: uglify-js: optional: true - terser@5.39.1: - resolution: {integrity: sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==} + terser@5.44.1: + resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} hasBin: true - terser@5.44.0: - resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true @@ -6364,8 +6005,8 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - thingies@1.21.0: - resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + thingies@2.5.0: + resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} engines: {node: '>=10.18'} peerDependencies: tslib: ^2 @@ -6373,12 +6014,8 @@ packages: thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - tinyglobby@0.2.13: - resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} - engines: {node: '>=12.0.0'} - - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tldts-core@6.1.86: @@ -6399,24 +6036,16 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - tough-cookie@5.1.2: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} - tree-dump@1.0.3: - resolution: {integrity: sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==} + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -6425,14 +6054,14 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' - ts-jest@29.4.0: - resolution: {integrity: sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==} + ts-jest@29.4.5: + resolution: {integrity: sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6479,9 +6108,9 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tuf-js@3.1.0: - resolution: {integrity: sha512-3T3T04WzowbwV2FDiGXBbr81t64g1MUGGJRgT4x5o97N+8ArdhVCAF9IxFrxuSJmM3E5Asn7nKHkao0ibcZXAg==} - engines: {node: ^18.17.0 || >=20.5.0} + tuf-js@4.1.0: + resolution: {integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==} + engines: {node: ^20.17.0 || >=22.9.0} tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -6517,18 +6146,31 @@ packages: typed-assert@1.0.9: resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true - undici-types@7.10.0: - resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} + undici@7.18.2: + resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} + engines: {node: '>=20.18.1'} + + undici@7.20.0: + resolution: {integrity: sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==} + engines: {node: '>=20.18.1'} + unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -6537,29 +6179,25 @@ packages: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} engines: {node: '>=4'} - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} - unique-filename@4.0.0: - resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} - engines: {node: ^18.17.0 || >=20.5.0} + unique-filename@5.0.0: + resolution: {integrity: sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==} + engines: {node: ^20.17.0 || >=22.9.0} - unique-slug@5.0.0: - resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} - engines: {node: ^18.17.0 || >=20.5.0} + unique-slug@6.0.0: + resolution: {integrity: sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==} + engines: {node: ^20.17.0 || >=22.9.0} universal-user-agent@6.0.1: resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -6571,8 +6209,8 @@ packages: unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -6580,9 +6218,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - utif@3.1.0: resolution: {integrity: sha512-WEo4D/xOvFW53K5f5QTaTbbiORcm2/pCL9P6qmJnup+17eYfKaEhDeX9PeQkuyEoIxlbGklDuGl8xwuXYMrrXQ==} @@ -6593,8 +6228,8 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + uuid@13.0.0: + resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} hasBin: true uuid@8.3.2: @@ -6611,56 +6246,16 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@6.0.2: - resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} - engines: {node: ^18.17.0 || >=20.5.0} + validate-npm-package-name@7.0.2: + resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} + engines: {node: ^20.17.0 || >=22.9.0} vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@6.3.5: - resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vite@7.1.2: - resolution: {integrity: sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==} + vite@7.3.0: + resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -6699,10 +6294,6 @@ packages: yaml: optional: true - w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} - w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -6710,12 +6301,12 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + watchpack@2.5.0: + resolution: {integrity: sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==} engines: {node: '>=10.13.0'} - watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + watchpack@2.5.1: + resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} wbuf@1.7.3: @@ -6728,8 +6319,8 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - webpack-dev-middleware@7.4.2: - resolution: {integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==} + webpack-dev-middleware@7.4.5: + resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.0.0 @@ -6737,8 +6328,8 @@ packages: webpack: optional: true - webpack-dev-server@5.2.1: - resolution: {integrity: sha512-ml/0HIj9NLpVKOMq+SuBPLHcmbG+TGIjXRHsYfZwocUBIqEvws8NnS/V9AFQ5FKP+tgn5adwVwRrTEpGL33QFQ==} + webpack-dev-server@5.2.2: + resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: @@ -6771,8 +6362,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.101.3: - resolution: {integrity: sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==} + webpack@5.104.1: + resolution: {integrity: sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -6781,8 +6372,8 @@ packages: webpack-cli: optional: true - webpack@5.99.8: - resolution: {integrity: sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==} + webpack@5.105.0: + resolution: {integrity: sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -6799,26 +6390,15 @@ packages: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} - - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - whatwg-url@14.2.0: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} @@ -6828,9 +6408,9 @@ packages: engines: {node: '>= 8'} hasBin: true - which@5.0.0: - resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} - engines: {node: ^18.17.0 || >=20.5.0} + which@6.0.0: + resolution: {integrity: sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true wildcard@2.0.1: @@ -6840,6 +6420,9 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -6852,8 +6435,8 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} wrappy@1.0.2: @@ -6875,9 +6458,25 @@ packages: utf-8-validate: optional: true - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} @@ -6936,16 +6535,23 @@ packages: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} - zod-to-json-schema@3.24.6: - resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + zod-to-json-schema@3.25.1: + resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} peerDependencies: - zod: ^3.24.1 + zod: ^3.25 || ^4 zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zone.js@0.15.1: - resolution: {integrity: sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==} + zod@4.3.5: + resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==} + + zone.js@0.16.0: + resolution: {integrity: sha512-LqLPpIQANebrlxY6jKcYKdgN5DTXyyHAKnnWWjE5pPfEQ4n7j5zn7mOEEpwNZVKGqx3kKKmvplEmoBrvpgROTA==} snapshots: @@ -6975,99 +6581,99 @@ snapshots: '@actions/io@1.1.3': {} - '@algolia/abtesting@1.1.0': + '@algolia/abtesting@1.12.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-abtesting@5.35.0': + '@algolia/client-abtesting@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-analytics@5.35.0': + '@algolia/client-analytics@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-common@5.35.0': {} + '@algolia/client-common@5.46.2': {} - '@algolia/client-insights@5.35.0': + '@algolia/client-insights@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-personalization@5.35.0': + '@algolia/client-personalization@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-query-suggestions@5.35.0': + '@algolia/client-query-suggestions@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-search@5.35.0': + '@algolia/client-search@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/ingestion@1.35.0': + '@algolia/ingestion@1.46.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/monitoring@1.35.0': + '@algolia/monitoring@1.46.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/recommend@5.35.0': + '@algolia/recommend@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/requester-browser-xhr@5.35.0': + '@algolia/requester-browser-xhr@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 + '@algolia/client-common': 5.46.2 - '@algolia/requester-fetch@5.35.0': + '@algolia/requester-fetch@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 + '@algolia/client-common': 5.46.2 - '@algolia/requester-node-http@5.35.0': + '@algolia/requester-node-http@5.46.2': dependencies: - '@algolia/client-common': 5.35.0 + '@algolia/client-common': 5.46.2 '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 - '@angular-builders/common@4.0.0(@types/node@24.3.0)(chokidar@4.0.3)(typescript@5.8.3)': + '@angular-builders/common@5.0.3(@types/node@25.2.1)(chokidar@5.0.0)(typescript@5.9.3)': dependencies: - '@angular-devkit/core': 20.2.2(chokidar@4.0.3) - ts-node: 10.9.2(@types/node@24.3.0)(typescript@5.8.3) + '@angular-devkit/core': 21.1.3(chokidar@5.0.0) + ts-node: 10.9.2(@types/node@25.2.1)(typescript@5.9.3) tsconfig-paths: 4.2.0 transitivePeerDependencies: - '@swc/core' @@ -7076,15 +6682,15 @@ snapshots: - chokidar - typescript - '@angular-builders/custom-webpack@20.0.0(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jest-environment-jsdom@30.1.2(canvas@3.0.0))(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0)': + '@angular-builders/custom-webpack@21.0.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jest-environment-jsdom@30.2.0(canvas@3.0.0))(jest@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)))(jiti@2.6.1)(less@4.4.2)(postcss@8.5.6)(terser@5.44.1)(tslib@2.8.1)(typescript@5.9.3)(yaml@2.7.0)': dependencies: - '@angular-builders/common': 4.0.0(@types/node@24.3.0)(chokidar@4.0.3)(typescript@5.8.3) - '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) - '@angular-devkit/build-angular': 20.0.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jest-environment-jsdom@30.1.2(canvas@3.0.0))(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(jiti@1.21.7)(typescript@5.8.3)(vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0) - '@angular-devkit/core': 20.2.2(chokidar@4.0.3) - '@angular/build': 20.2.2(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(yaml@2.7.0) - '@angular/compiler-cli': 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) - lodash: 4.17.21 + '@angular-builders/common': 5.0.3(@types/node@25.2.1)(chokidar@5.0.0)(typescript@5.9.3) + '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) + '@angular-devkit/build-angular': 21.1.2(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jest-environment-jsdom@30.2.0(canvas@3.0.0))(jest@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)))(jiti@2.6.1)(typescript@5.9.3)(yaml@2.7.0) + '@angular-devkit/core': 21.1.3(chokidar@5.0.0) + '@angular/build': 21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jiti@2.6.1)(less@4.4.2)(postcss@8.5.6)(terser@5.44.1)(tslib@2.8.1)(typescript@5.9.3)(yaml@2.7.0) + '@angular/compiler-cli': 21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3) + lodash: 4.17.23 webpack-merge: 6.0.1 transitivePeerDependencies: - '@angular/compiler' @@ -7125,24 +6731,24 @@ snapshots: - typescript - uglify-js - utf-8-validate - - vite - vitest - webpack-cli - yaml - '@angular-builders/jest@20.0.0(56c75f145b0896aaaed75da1af9e9b5c)': + '@angular-builders/jest@21.0.3(98333f6b0a4c9466a4a761dd7742f14e)': dependencies: - '@angular-builders/common': 4.0.0(@types/node@24.3.0)(chokidar@4.0.3)(typescript@5.8.3) - '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) - '@angular-devkit/build-angular': 20.0.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jest-environment-jsdom@30.1.2(canvas@3.0.0))(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(jiti@1.21.7)(typescript@5.8.3)(vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0) - '@angular-devkit/core': 20.2.2(chokidar@4.0.3) - '@angular/compiler-cli': 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser-dynamic': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))) - jest: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) - jest-preset-angular: 14.6.0(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(canvas@3.0.0)(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(jsdom@26.1.0(canvas@3.0.0))(typescript@5.8.3) - lodash: 4.17.21 + '@angular-builders/common': 5.0.3(@types/node@25.2.1)(chokidar@5.0.0)(typescript@5.9.3) + '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) + '@angular-devkit/build-angular': 21.1.2(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jest-environment-jsdom@30.2.0(canvas@3.0.0))(jest@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)))(jiti@2.6.1)(typescript@5.9.3)(yaml@2.7.0) + '@angular-devkit/core': 21.1.3(chokidar@5.0.0) + '@angular/compiler-cli': 21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser-dynamic': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))) + jest: 30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) + jest-preset-angular: 16.0.0(971a0c6079454b11fc8a813370660bc6) + lodash: 4.17.23 transitivePeerDependencies: + - '@angular/platform-browser' - '@babel/core' - '@jest/transform' - '@jest/types' @@ -7150,94 +6756,90 @@ snapshots: - '@swc/wasm' - '@types/node' - babel-jest - - bufferutil - canvas - chokidar - jsdom - - supports-color - typescript - - utf-8-validate - '@angular-devkit/architect@0.2000.4(chokidar@4.0.3)': + '@angular-devkit/architect@0.2101.2(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 20.0.4(chokidar@4.0.3) + '@angular-devkit/core': 21.1.2(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/architect@0.2002.2(chokidar@4.0.3)': + '@angular-devkit/architect@0.2101.3(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 20.2.2(chokidar@4.0.3) + '@angular-devkit/core': 21.1.3(chokidar@5.0.0) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.0.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jest-environment-jsdom@30.1.2(canvas@3.0.0))(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(jiti@1.21.7)(typescript@5.8.3)(vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0)': + '@angular-devkit/build-angular@21.1.2(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jest-environment-jsdom@30.2.0(canvas@3.0.0))(jest@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)))(jiti@2.6.1)(typescript@5.9.3)(yaml@2.7.0)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2000.4(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.101.3))(webpack@5.99.8(esbuild@0.25.5)) - '@angular-devkit/core': 20.0.4(chokidar@4.0.3) - '@angular/build': 20.0.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(yaml@2.7.0) - '@angular/compiler-cli': 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) - '@babel/core': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 + '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) + '@angular-devkit/build-webpack': 0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.105.0))(webpack@5.104.1(esbuild@0.27.2)) + '@angular-devkit/core': 21.1.2(chokidar@5.0.0) + '@angular/build': 21.1.2(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jiti@2.6.1)(less@4.4.2)(postcss@8.5.6)(terser@5.44.1)(tslib@2.8.1)(typescript@5.9.3)(yaml@2.7.0) + '@angular/compiler-cli': 21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3) + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-runtime': 7.27.1(@babel/core@7.27.1) - '@babel/preset-env': 7.27.2(@babel/core@7.27.1) - '@babel/runtime': 7.27.1 + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5) + '@babel/preset-env': 7.28.5(@babel/core@7.28.5) + '@babel/runtime': 7.28.4 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.0.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.5)) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0)) + '@ngtools/webpack': 21.1.2(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)) ansi-colors: 4.1.3 - autoprefixer: 10.4.21(postcss@8.5.3) - babel-loader: 10.0.0(@babel/core@7.27.1)(webpack@5.99.8(esbuild@0.25.5)) - browserslist: 4.25.4 - copy-webpack-plugin: 13.0.0(webpack@5.99.8(esbuild@0.25.5)) - css-loader: 7.1.2(webpack@5.99.8(esbuild@0.25.5)) - esbuild-wasm: 0.25.5 - fast-glob: 3.3.3 + autoprefixer: 10.4.23(postcss@8.5.6) + babel-loader: 10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)) + browserslist: 4.28.1 + copy-webpack-plugin: 13.0.1(webpack@5.104.1(esbuild@0.27.2)) + css-loader: 7.1.2(webpack@5.104.1(esbuild@0.27.2)) + esbuild-wasm: 0.27.2 http-proxy-middleware: 3.0.5 istanbul-lib-instrument: 6.0.3 jsonc-parser: 3.3.1 karma-source-map-support: 1.4.0 - less: 4.3.0 - less-loader: 12.3.0(less@4.3.0)(webpack@5.99.8(esbuild@0.25.5)) - license-webpack-plugin: 4.0.2(webpack@5.99.8(esbuild@0.25.5)) + less: 4.4.2 + less-loader: 12.3.0(less@4.4.2)(webpack@5.104.1(esbuild@0.27.2)) + license-webpack-plugin: 4.0.2(webpack@5.104.1(esbuild@0.27.2)) loader-utils: 3.3.1 - mini-css-extract-plugin: 2.9.2(webpack@5.99.8(esbuild@0.25.5)) - open: 10.1.2 - ora: 8.2.0 - picomatch: 4.0.2 - piscina: 5.1.1 - postcss: 8.5.3 - postcss-loader: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.5)) + mini-css-extract-plugin: 2.9.4(webpack@5.104.1(esbuild@0.27.2)) + open: 11.0.0 + ora: 9.0.0 + picomatch: 4.0.3 + piscina: 5.1.4 + postcss: 8.5.6 + postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)) resolve-url-loader: 5.0.0 rxjs: 7.8.2 - sass: 1.88.0 - sass-loader: 16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.5)) - semver: 7.7.2 - source-map-loader: 5.0.0(webpack@5.99.8(esbuild@0.25.5)) + sass: 1.97.1 + sass-loader: 16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)) + semver: 7.7.3 + source-map-loader: 5.0.0(webpack@5.104.1(esbuild@0.27.2)) source-map-support: 0.5.21 - terser: 5.39.1 + terser: 5.44.1 + tinyglobby: 0.2.15 tree-kill: 1.2.2 tslib: 2.8.1 - typescript: 5.8.3 - webpack: 5.99.8(esbuild@0.25.5) - webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.5)) - webpack-dev-server: 5.2.1(webpack@5.99.8(esbuild@0.25.5)) + typescript: 5.9.3 + webpack: 5.104.1(esbuild@0.27.2) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1(esbuild@0.27.2)) + webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.104.1(esbuild@0.27.2)) webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(webpack@5.99.8(esbuild@0.25.5)) + webpack-subresource-integrity: 5.1.0(webpack@5.104.1(esbuild@0.27.2)) optionalDependencies: - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/localize': 20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4) - '@angular/platform-browser': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) - esbuild: 0.25.5 - jest: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) - jest-environment-jsdom: 30.1.2(canvas@3.0.0) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/localize': 21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3) + '@angular/platform-browser': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) + esbuild: 0.27.2 + jest: 30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) + jest-environment-jsdom: 30.2.0(canvas@3.0.0) transitivePeerDependencies: - '@angular/compiler' - '@rspack/core' @@ -7257,32 +6859,20 @@ snapshots: - tsx - uglify-js - utf-8-validate - - vite - vitest - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2000.4(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.101.3))(webpack@5.99.8(esbuild@0.25.5))': + '@angular-devkit/build-webpack@0.2101.2(chokidar@5.0.0)(webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.105.0))(webpack@5.104.1(esbuild@0.27.2))': dependencies: - '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) + '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) rxjs: 7.8.2 - webpack: 5.99.8(esbuild@0.25.5) - webpack-dev-server: 5.2.1(webpack@5.101.3) + webpack: 5.104.1(esbuild@0.27.2) + webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.105.0) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.0.4(chokidar@4.0.3)': - dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - jsonc-parser: 3.3.1 - picomatch: 4.0.2 - rxjs: 7.8.2 - source-map: 0.7.4 - optionalDependencies: - chokidar: 4.0.3 - - '@angular-devkit/core@20.2.2(chokidar@4.0.3)': + '@angular-devkit/core@21.1.2(chokidar@5.0.0)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -7291,58 +6881,71 @@ snapshots: rxjs: 7.8.2 source-map: 0.7.6 optionalDependencies: - chokidar: 4.0.3 + chokidar: 5.0.0 - '@angular-devkit/schematics@20.2.2(chokidar@4.0.3)': + '@angular-devkit/core@21.1.3(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 20.2.2(chokidar@4.0.3) + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) jsonc-parser: 3.3.1 - magic-string: 0.30.17 - ora: 8.2.0 + picomatch: 4.0.3 + rxjs: 7.8.2 + source-map: 0.7.6 + optionalDependencies: + chokidar: 5.0.0 + + '@angular-devkit/schematics@21.1.3(chokidar@5.0.0)': + dependencies: + '@angular-devkit/core': 21.1.3(chokidar@5.0.0) + jsonc-parser: 3.3.1 + magic-string: 0.30.21 + ora: 9.0.0 rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-eslint/builder@20.2.0(chokidar@4.0.3)(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@angular-eslint/builder@21.2.0(@angular/cli@21.1.3(@types/node@25.2.1)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@angular-devkit/architect': 0.2002.2(chokidar@4.0.3) - '@angular-devkit/core': 20.2.2(chokidar@4.0.3) - eslint: 9.34.0(jiti@1.21.7) - typescript: 5.8.3 + '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) + '@angular-devkit/core': 21.1.3(chokidar@5.0.0) + '@angular/cli': 21.1.3(@types/node@25.2.1)(chokidar@5.0.0) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - chokidar - '@angular-eslint/bundled-angular-compiler@20.2.0': {} + '@angular-eslint/bundled-angular-compiler@21.2.0': {} - '@angular-eslint/eslint-plugin-template@20.2.0(@angular-eslint/template-parser@20.2.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.41.0)(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@angular-eslint/eslint-plugin-template@21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/types@8.54.0)(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 20.2.0 - '@angular-eslint/template-parser': 20.2.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - '@angular-eslint/utils': 20.2.0(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + '@angular-eslint/bundled-angular-compiler': 21.2.0 + '@angular-eslint/template-parser': 21.2.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@angular-eslint/utils': 21.2.0(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) aria-query: 5.3.2 axobject-query: 4.1.0 - eslint: 9.34.0(jiti@1.21.7) - typescript: 5.8.3 + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 - '@angular-eslint/eslint-plugin@20.2.0(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@angular-eslint/eslint-plugin@21.2.0(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 20.2.0 - '@angular-eslint/utils': 20.2.0(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - eslint: 9.34.0(jiti@1.21.7) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + '@angular-eslint/bundled-angular-compiler': 21.2.0 + '@angular-eslint/utils': 21.2.0(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 - '@angular-eslint/schematics@20.2.0(@angular-eslint/template-parser@20.2.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.41.0)(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(chokidar@4.0.3)(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@angular-eslint/schematics@21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(@angular/cli@21.1.3(@types/node@25.2.1)(chokidar@5.0.0))(@typescript-eslint/types@8.54.0)(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(chokidar@5.0.0)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@angular-devkit/core': 20.2.2(chokidar@4.0.3) - '@angular-devkit/schematics': 20.2.2(chokidar@4.0.3) - '@angular-eslint/eslint-plugin': 20.2.0(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - '@angular-eslint/eslint-plugin-template': 20.2.0(@angular-eslint/template-parser@20.2.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.41.0)(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) + '@angular-devkit/core': 21.1.3(chokidar@5.0.0) + '@angular-devkit/schematics': 21.1.3(chokidar@5.0.0) + '@angular-eslint/eslint-plugin': 21.2.0(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@angular-eslint/eslint-plugin-template': 21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/types@8.54.0)(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@angular/cli': 21.1.3(@types/node@25.2.1)(chokidar@5.0.0) ignore: 7.0.5 - semver: 7.7.2 + semver: 7.7.3 strip-json-comments: 3.1.1 transitivePeerDependencies: - '@angular-eslint/template-parser' @@ -7352,111 +6955,60 @@ snapshots: - eslint - typescript - '@angular-eslint/template-parser@20.2.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@angular-eslint/template-parser@21.2.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 20.2.0 - eslint: 9.34.0(jiti@1.21.7) - eslint-scope: 8.4.0 - typescript: 5.8.3 + '@angular-eslint/bundled-angular-compiler': 21.2.0 + eslint: 9.39.2(jiti@2.6.1) + eslint-scope: 9.1.0 + typescript: 5.9.3 - '@angular-eslint/utils@20.2.0(@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@angular-eslint/utils@21.2.0(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 20.2.0 - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - eslint: 9.34.0(jiti@1.21.7) - typescript: 5.8.3 + '@angular-eslint/bundled-angular-compiler': 21.2.0 + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 - '@angular/build@20.0.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(yaml@2.7.0)': + '@angular/build@21.1.2(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jiti@2.6.1)(less@4.4.2)(postcss@8.5.6)(terser@5.44.1)(tslib@2.8.1)(typescript@5.9.3)(yaml@2.7.0)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) - '@angular/compiler': 20.2.4 - '@angular/compiler-cli': 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.10(@types/node@24.3.0) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0)) - beasties: 0.3.4 - browserslist: 4.25.4 - esbuild: 0.25.5 - https-proxy-agent: 7.0.6 - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - listr2: 8.3.3 - magic-string: 0.30.17 - mrmime: 2.0.1 - parse5-html-rewriting-stream: 7.1.0 - picomatch: 4.0.2 - piscina: 5.1.1 - rollup: 4.40.2 - sass: 1.88.0 - semver: 7.7.2 - source-map-support: 0.5.21 - tinyglobby: 0.2.13 - tslib: 2.8.1 - typescript: 5.8.3 - vite: 6.3.5(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0) - watchpack: 2.4.2 - optionalDependencies: - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/localize': 20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4) - '@angular/platform-browser': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) - less: 4.3.0 - lmdb: 3.3.0 - postcss: 8.5.3 - transitivePeerDependencies: - - '@types/node' - - chokidar - - jiti - - lightningcss - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - '@angular/build@20.2.2(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.3.0)(chokidar@4.0.3)(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(yaml@2.7.0)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2002.2(chokidar@4.0.3) - '@angular/compiler': 20.2.4 - '@angular/compiler-cli': 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) - '@babel/core': 7.28.3 + '@angular-devkit/architect': 0.2101.2(chokidar@5.0.0) + '@angular/compiler': 21.1.3 + '@angular/compiler-cli': 21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3) + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.14(@types/node@24.3.0) - '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0)) + '@inquirer/confirm': 5.1.21(@types/node@25.2.1) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(yaml@2.7.0)) beasties: 0.3.5 - browserslist: 4.25.4 - esbuild: 0.25.9 + browserslist: 4.28.1 + esbuild: 0.27.2 https-proxy-agent: 7.0.6 istanbul-lib-instrument: 6.0.3 jsonc-parser: 3.3.1 - listr2: 9.0.1 - magic-string: 0.30.17 + listr2: 9.0.5 + magic-string: 0.30.21 mrmime: 2.0.1 parse5-html-rewriting-stream: 8.0.0 picomatch: 4.0.3 - piscina: 5.1.3 - rolldown: 1.0.0-beta.32 - sass: 1.90.0 - semver: 7.7.2 + piscina: 5.1.4 + rolldown: 1.0.0-beta.58 + sass: 1.97.1 + semver: 7.7.3 source-map-support: 0.5.21 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tslib: 2.8.1 - typescript: 5.8.3 - vite: 7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0) - watchpack: 2.4.4 + typescript: 5.9.3 + undici: 7.18.2 + vite: 7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(yaml@2.7.0) + watchpack: 2.5.0 optionalDependencies: - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/localize': 20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4) - '@angular/platform-browser': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) - less: 4.3.0 - lmdb: 3.4.2 - postcss: 8.5.3 + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/localize': 21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3) + '@angular/platform-browser': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) + less: 4.4.2 + lmdb: 3.4.4 + postcss: 8.5.6 transitivePeerDependencies: - '@types/node' - chokidar @@ -7470,910 +7022,970 @@ snapshots: - tsx - yaml - '@angular/cdk@20.2.2(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/build@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@25.2.1)(chokidar@5.0.0)(jiti@2.6.1)(less@4.4.2)(postcss@8.5.6)(terser@5.44.1)(tslib@2.8.1)(typescript@5.9.3)(yaml@2.7.0)': dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@ampproject/remapping': 2.3.0 + '@angular-devkit/architect': 0.2101.3(chokidar@5.0.0) + '@angular/compiler': 21.1.3 + '@angular/compiler-cli': 21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3) + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-split-export-declaration': 7.24.7 + '@inquirer/confirm': 5.1.21(@types/node@25.2.1) + '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(yaml@2.7.0)) + beasties: 0.3.5 + browserslist: 4.28.1 + esbuild: 0.27.2 + https-proxy-agent: 7.0.6 + istanbul-lib-instrument: 6.0.3 + jsonc-parser: 3.3.1 + listr2: 9.0.5 + magic-string: 0.30.21 + mrmime: 2.0.1 + parse5-html-rewriting-stream: 8.0.0 + picomatch: 4.0.3 + piscina: 5.1.4 + rolldown: 1.0.0-beta.58 + sass: 1.97.1 + semver: 7.7.3 + source-map-support: 0.5.21 + tinyglobby: 0.2.15 + tslib: 2.8.1 + typescript: 5.9.3 + undici: 7.20.0 + vite: 7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(yaml@2.7.0) + watchpack: 2.5.0 + optionalDependencies: + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/localize': 21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3) + '@angular/platform-browser': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) + less: 4.4.2 + lmdb: 3.4.4 + postcss: 8.5.6 + transitivePeerDependencies: + - '@types/node' + - chokidar + - jiti + - lightningcss + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + '@angular/cdk@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': + dependencies: + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@20.2.2(@types/node@24.3.0)(chokidar@4.0.3)': + '@angular/cli@21.1.3(@types/node@25.2.1)(chokidar@5.0.0)': dependencies: - '@angular-devkit/architect': 0.2002.2(chokidar@4.0.3) - '@angular-devkit/core': 20.2.2(chokidar@4.0.3) - '@angular-devkit/schematics': 20.2.2(chokidar@4.0.3) - '@inquirer/prompts': 7.8.2(@types/node@24.3.0) - '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@24.3.0))(@types/node@24.3.0)(listr2@9.0.1) - '@modelcontextprotocol/sdk': 1.17.3 - '@schematics/angular': 20.2.2(chokidar@4.0.3) + '@angular-devkit/architect': 0.2101.3(chokidar@5.0.0) + '@angular-devkit/core': 21.1.3(chokidar@5.0.0) + '@angular-devkit/schematics': 21.1.3(chokidar@5.0.0) + '@inquirer/prompts': 7.10.1(@types/node@25.2.1) + '@listr2/prompt-adapter-inquirer': 3.0.5(@inquirer/prompts@7.10.1(@types/node@25.2.1))(@types/node@25.2.1)(listr2@9.0.5) + '@modelcontextprotocol/sdk': 1.26.0(zod@4.3.5) + '@schematics/angular': 21.1.3(chokidar@5.0.0) '@yarnpkg/lockfile': 1.1.0 - algoliasearch: 5.35.0 - ini: 5.0.0 + algoliasearch: 5.46.2 + ini: 6.0.0 jsonc-parser: 3.3.1 - listr2: 9.0.1 - npm-package-arg: 13.0.0 - pacote: 21.0.0 - resolve: 1.22.10 - semver: 7.7.2 + listr2: 9.0.5 + npm-package-arg: 13.0.2 + pacote: 21.0.4 + parse5-html-rewriting-stream: 8.0.0 + resolve: 1.22.11 + semver: 7.7.3 yargs: 18.0.0 - zod: 3.25.76 + zod: 4.3.5 transitivePeerDependencies: + - '@cfworker/json-schema' - '@types/node' - chokidar - supports-color - '@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3)': + '@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3)': dependencies: - '@angular/compiler': 20.2.4 - '@babel/core': 7.28.3 + '@angular/compiler': 21.1.3 + '@babel/core': 7.28.5 '@jridgewell/sourcemap-codec': 1.5.5 - chokidar: 4.0.3 + chokidar: 5.0.0 convert-source-map: 1.9.0 reflect-metadata: 0.2.2 - semver: 7.7.2 + semver: 7.7.3 tslib: 2.8.1 yargs: 18.0.0 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@angular/compiler@20.2.4': + '@angular/compiler@21.1.3': dependencies: tslib: 2.8.1 - '@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 20.2.4 - zone.js: 0.15.1 + '@angular/compiler': 21.1.3 + zone.js: 0.16.0 - '@angular/forms@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) + '@standard-schema/spec': 1.1.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4)': + '@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3)': dependencies: - '@angular/compiler': 20.2.4 - '@angular/compiler-cli': 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) - '@babel/core': 7.28.3 + '@angular/compiler': 21.1.3 + '@angular/compiler-cli': 21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3) + '@babel/core': 7.28.5 '@types/babel__core': 7.20.5 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 yargs: 18.0.0 transitivePeerDependencies: - supports-color - '@angular/platform-browser-dynamic@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))': + '@angular/platform-browser-dynamic@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))': dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 20.2.4 - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/compiler': 21.1.3 + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) tslib: 2.8.1 - '@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))': dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - '@angular/router@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) rxjs: 7.8.2 tslib: 2.8.1 '@asamuzakjp/css-color@3.2.0': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 - '@babel/code-frame@7.27.1': + '@babel/code-frame@7.29.0': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.27.7': {} + '@babel/compat-data@7.29.0': {} - '@babel/compat-data@7.28.0': {} - - '@babel/core@7.27.1': + '@babel/core@7.28.5': dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.1 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.1) - '@babel/helpers': 7.28.3 - '@babel/parser': 7.28.3 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/core@7.28.3': + '@babel/core@7.29.0': dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) - '@babel/helpers': 7.28.3 - '@babel/parser': 7.28.3 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.27.1': + '@babel/generator@7.28.5': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/generator@7.28.3': + '@babel/generator@7.29.0': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.27.1': - dependencies: - '@babel/types': 7.28.2 - '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.29.0 - '@babel/helper-compilation-targets@7.27.2': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.29.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.4 + browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.1)': + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.29.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - regexpu-core: 6.2.0 + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': + '@babel/helper-define-polyfill-provider@0.6.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.1 + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + debug: 4.4.3 lodash.debounce: 4.0.8 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.27.1': + '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.27.1)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.29.0 - '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.1)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.1)': + '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.29.0 '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.27.1': + '@babel/helper-wrap-function@7.28.6': dependencies: - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.3 - '@babel/types': 7.28.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.3': + '@babel/helpers@7.28.6': dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.2 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 - '@babel/parser@7.28.3': + '@babel/parser@7.29.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.29.0 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.28.5 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.3)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.3)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.3)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.3)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.3)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.3)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.3)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.3)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.3)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) - '@babel/traverse': 7.28.3 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoping@7.27.5(@babel/core@7.27.1)': + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.27.7(@babel/core@7.27.1)': + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) - '@babel/traverse': 7.28.3 - globals: 11.12.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 - '@babel/plugin-transform-destructuring@7.27.7(@babel/core@7.27.1)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.3 + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-object-rest-spread@7.27.7(@babel/core@7.27.1)': + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.27.7(@babel/core@7.27.1) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.1) - '@babel/traverse': 7.28.3 + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.27.1)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.27.5(@babel/core@7.27.1)': + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-runtime@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.1) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.1) + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.28.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 - '@babel/preset-env@7.27.2(@babel/core@7.27.1)': + '@babel/preset-env@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/compat-data': 7.27.7 - '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/compat-data': 7.29.0 + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.1) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.1) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-classes': 7.27.7(@babel/core@7.27.1) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-destructuring': 7.27.7(@babel/core@7.27.1) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-object-rest-spread': 7.27.7(@babel/core@7.27.1) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.1) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-regenerator': 7.27.5(@babel/core@7.27.1) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.1) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.1) - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.1) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.1) - core-js-compat: 3.43.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.28.5) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.28.5) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.28.5) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.28.5) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.28.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5) + babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.28.5) + core-js-compat: 3.48.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.1)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.28.2 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/types': 7.29.0 esutils: 2.0.3 - '@babel/runtime@7.27.1': {} + '@babel/runtime@7.28.4': {} - '@babel/template@7.27.2': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 - '@babel/traverse@7.28.3': + '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.0 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.3 - '@babel/template': 7.27.2 - '@babel/types': 7.28.2 - debug: 4.4.1 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.2': + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@bcoe/v8-coverage@0.2.3': {} @@ -8382,30 +7994,30 @@ snapshots: '@actions/core': 1.11.1 '@actions/github': 6.0.1 chalk: 4.1.2 - semver: 7.7.2 + semver: 7.7.3 unplugin: 1.16.1 zod: 3.25.76 - '@codecov/webpack-plugin@1.9.1(webpack@5.101.3)': + '@codecov/webpack-plugin@1.9.1(webpack@5.105.0)': dependencies: '@codecov/bundler-plugin-core': 1.9.1 unplugin: 1.16.1 - webpack: 5.101.3 + webpack: 5.105.0 '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@5.0.2': {} + '@csstools/color-helpers@5.1.0': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/color-helpers': 5.0.2 + '@csstools/color-helpers': 5.1.0 '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -8416,17 +8028,17 @@ snapshots: '@csstools/css-tokenizer@3.0.4': {} - '@ctrl/tinycolor@4.1.0': {} + '@ctrl/tinycolor@4.2.0': {} '@discoveryjs/json-ext@0.6.3': {} - '@emnapi/core@1.5.0': + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.5.0': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true @@ -8436,432 +8048,349 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.5': + '@esbuild/aix-ppc64@0.27.0': optional: true - '@esbuild/aix-ppc64@0.25.8': + '@esbuild/aix-ppc64@0.27.2': optional: true - '@esbuild/aix-ppc64@0.25.9': + '@esbuild/android-arm64@0.27.0': optional: true - '@esbuild/android-arm64@0.25.5': + '@esbuild/android-arm64@0.27.2': optional: true - '@esbuild/android-arm64@0.25.8': + '@esbuild/android-arm@0.27.0': optional: true - '@esbuild/android-arm64@0.25.9': + '@esbuild/android-arm@0.27.2': optional: true - '@esbuild/android-arm@0.25.5': + '@esbuild/android-x64@0.27.0': optional: true - '@esbuild/android-arm@0.25.8': + '@esbuild/android-x64@0.27.2': optional: true - '@esbuild/android-arm@0.25.9': + '@esbuild/darwin-arm64@0.27.0': optional: true - '@esbuild/android-x64@0.25.5': + '@esbuild/darwin-arm64@0.27.2': optional: true - '@esbuild/android-x64@0.25.8': + '@esbuild/darwin-x64@0.27.0': optional: true - '@esbuild/android-x64@0.25.9': + '@esbuild/darwin-x64@0.27.2': optional: true - '@esbuild/darwin-arm64@0.25.5': + '@esbuild/freebsd-arm64@0.27.0': optional: true - '@esbuild/darwin-arm64@0.25.8': + '@esbuild/freebsd-arm64@0.27.2': optional: true - '@esbuild/darwin-arm64@0.25.9': + '@esbuild/freebsd-x64@0.27.0': optional: true - '@esbuild/darwin-x64@0.25.5': + '@esbuild/freebsd-x64@0.27.2': optional: true - '@esbuild/darwin-x64@0.25.8': + '@esbuild/linux-arm64@0.27.0': optional: true - '@esbuild/darwin-x64@0.25.9': + '@esbuild/linux-arm64@0.27.2': optional: true - '@esbuild/freebsd-arm64@0.25.5': + '@esbuild/linux-arm@0.27.0': optional: true - '@esbuild/freebsd-arm64@0.25.8': + '@esbuild/linux-arm@0.27.2': optional: true - '@esbuild/freebsd-arm64@0.25.9': + '@esbuild/linux-ia32@0.27.0': optional: true - '@esbuild/freebsd-x64@0.25.5': + '@esbuild/linux-ia32@0.27.2': optional: true - '@esbuild/freebsd-x64@0.25.8': + '@esbuild/linux-loong64@0.27.0': optional: true - '@esbuild/freebsd-x64@0.25.9': + '@esbuild/linux-loong64@0.27.2': optional: true - '@esbuild/linux-arm64@0.25.5': + '@esbuild/linux-mips64el@0.27.0': optional: true - '@esbuild/linux-arm64@0.25.8': + '@esbuild/linux-mips64el@0.27.2': optional: true - '@esbuild/linux-arm64@0.25.9': + '@esbuild/linux-ppc64@0.27.0': optional: true - '@esbuild/linux-arm@0.25.5': + '@esbuild/linux-ppc64@0.27.2': optional: true - '@esbuild/linux-arm@0.25.8': + '@esbuild/linux-riscv64@0.27.0': optional: true - '@esbuild/linux-arm@0.25.9': + '@esbuild/linux-riscv64@0.27.2': optional: true - '@esbuild/linux-ia32@0.25.5': + '@esbuild/linux-s390x@0.27.0': optional: true - '@esbuild/linux-ia32@0.25.8': + '@esbuild/linux-s390x@0.27.2': optional: true - '@esbuild/linux-ia32@0.25.9': + '@esbuild/linux-x64@0.27.0': optional: true - '@esbuild/linux-loong64@0.25.5': + '@esbuild/linux-x64@0.27.2': optional: true - '@esbuild/linux-loong64@0.25.8': + '@esbuild/netbsd-arm64@0.27.0': optional: true - '@esbuild/linux-loong64@0.25.9': + '@esbuild/netbsd-arm64@0.27.2': optional: true - '@esbuild/linux-mips64el@0.25.5': + '@esbuild/netbsd-x64@0.27.0': optional: true - '@esbuild/linux-mips64el@0.25.8': + '@esbuild/netbsd-x64@0.27.2': optional: true - '@esbuild/linux-mips64el@0.25.9': + '@esbuild/openbsd-arm64@0.27.0': optional: true - '@esbuild/linux-ppc64@0.25.5': + '@esbuild/openbsd-arm64@0.27.2': optional: true - '@esbuild/linux-ppc64@0.25.8': + '@esbuild/openbsd-x64@0.27.0': optional: true - '@esbuild/linux-ppc64@0.25.9': + '@esbuild/openbsd-x64@0.27.2': optional: true - '@esbuild/linux-riscv64@0.25.5': + '@esbuild/openharmony-arm64@0.27.0': optional: true - '@esbuild/linux-riscv64@0.25.8': + '@esbuild/openharmony-arm64@0.27.2': optional: true - '@esbuild/linux-riscv64@0.25.9': + '@esbuild/sunos-x64@0.27.0': optional: true - '@esbuild/linux-s390x@0.25.5': + '@esbuild/sunos-x64@0.27.2': optional: true - '@esbuild/linux-s390x@0.25.8': + '@esbuild/win32-arm64@0.27.0': optional: true - '@esbuild/linux-s390x@0.25.9': + '@esbuild/win32-arm64@0.27.2': optional: true - '@esbuild/linux-x64@0.25.5': + '@esbuild/win32-ia32@0.27.0': optional: true - '@esbuild/linux-x64@0.25.8': + '@esbuild/win32-ia32@0.27.2': optional: true - '@esbuild/linux-x64@0.25.9': + '@esbuild/win32-x64@0.27.0': optional: true - '@esbuild/netbsd-arm64@0.25.5': + '@esbuild/win32-x64@0.27.2': optional: true - '@esbuild/netbsd-arm64@0.25.8': - optional: true - - '@esbuild/netbsd-arm64@0.25.9': - optional: true - - '@esbuild/netbsd-x64@0.25.5': - optional: true - - '@esbuild/netbsd-x64@0.25.8': - optional: true - - '@esbuild/netbsd-x64@0.25.9': - optional: true - - '@esbuild/openbsd-arm64@0.25.5': - optional: true - - '@esbuild/openbsd-arm64@0.25.8': - optional: true - - '@esbuild/openbsd-arm64@0.25.9': - optional: true - - '@esbuild/openbsd-x64@0.25.5': - optional: true - - '@esbuild/openbsd-x64@0.25.8': - optional: true - - '@esbuild/openbsd-x64@0.25.9': - optional: true - - '@esbuild/openharmony-arm64@0.25.8': - optional: true - - '@esbuild/openharmony-arm64@0.25.9': - optional: true - - '@esbuild/sunos-x64@0.25.5': - optional: true - - '@esbuild/sunos-x64@0.25.8': - optional: true - - '@esbuild/sunos-x64@0.25.9': - optional: true - - '@esbuild/win32-arm64@0.25.5': - optional: true - - '@esbuild/win32-arm64@0.25.8': - optional: true - - '@esbuild/win32-arm64@0.25.9': - optional: true - - '@esbuild/win32-ia32@0.25.5': - optional: true - - '@esbuild/win32-ia32@0.25.8': - optional: true - - '@esbuild/win32-ia32@0.25.9': - optional: true - - '@esbuild/win32-x64@0.25.5': - optional: true - - '@esbuild/win32-x64@0.25.8': - optional: true - - '@esbuild/win32-x64@0.25.9': - optional: true - - '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: - eslint: 9.34.0(jiti@1.21.7) + eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.0': + '@eslint/config-array@0.21.1': dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.1 + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.3.1': {} + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 - '@eslint/core@0.15.2': + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 - debug: 4.4.1 + debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@9.34.0': {} + '@eslint/js@9.39.2': {} - '@eslint/object-schema@2.1.6': {} + '@eslint/object-schema@2.1.7': {} - '@eslint/plugin-kit@0.3.5': + '@eslint/plugin-kit@0.4.1': dependencies: - '@eslint/core': 0.15.2 + '@eslint/core': 0.17.0 levn: 0.4.1 '@fastify/busboy@2.1.1': {} + '@hono/node-server@1.19.9(hono@4.11.7)': + dependencies: + hono: 4.11.7 + '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.7': dependencies: '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.3 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.3': {} - '@inquirer/checkbox@4.2.2(@types/node@24.3.0)': + '@inquirer/ansi@1.0.2': {} + + '@inquirer/checkbox@4.3.2(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.3.0) - ansi-escapes: 4.3.2 + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.2.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/confirm@5.1.10(@types/node@24.3.0)': + '@inquirer/confirm@5.1.21(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/type': 3.0.10(@types/node@25.2.1) optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/confirm@5.1.14(@types/node@24.3.0)': + '@inquirer/core@10.3.2(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) - optionalDependencies: - '@types/node': 24.3.0 - - '@inquirer/confirm@5.1.16(@types/node@24.3.0)': - dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) - optionalDependencies: - '@types/node': 24.3.0 - - '@inquirer/core@10.2.0(@types/node@24.3.0)': - dependencies: - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.3.0) - ansi-escapes: 4.3.2 + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.2.1) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/editor@4.2.18(@types/node@24.3.0)': + '@inquirer/editor@4.2.23(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/external-editor': 1.0.1(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/external-editor': 1.0.3(@types/node@25.2.1) + '@inquirer/type': 3.0.10(@types/node@25.2.1) optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/expand@4.0.18(@types/node@24.3.0)': + '@inquirer/expand@4.0.23(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/type': 3.0.10(@types/node@25.2.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/external-editor@1.0.1(@types/node@24.3.0)': + '@inquirer/external-editor@1.0.3(@types/node@25.2.1)': dependencies: - chardet: 2.1.0 - iconv-lite: 0.6.3 + chardet: 2.1.1 + iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/figures@1.0.13': {} + '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.2.2(@types/node@24.3.0)': + '@inquirer/input@4.3.1(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/type': 3.0.10(@types/node@25.2.1) optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/number@3.0.18(@types/node@24.3.0)': + '@inquirer/number@3.0.23(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/type': 3.0.10(@types/node@25.2.1) optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/password@4.0.18(@types/node@24.3.0)': + '@inquirer/password@4.0.23(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) - ansi-escapes: 4.3.2 + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/type': 3.0.10(@types/node@25.2.1) optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/prompts@7.8.2(@types/node@24.3.0)': + '@inquirer/prompts@7.10.1(@types/node@25.2.1)': dependencies: - '@inquirer/checkbox': 4.2.2(@types/node@24.3.0) - '@inquirer/confirm': 5.1.16(@types/node@24.3.0) - '@inquirer/editor': 4.2.18(@types/node@24.3.0) - '@inquirer/expand': 4.0.18(@types/node@24.3.0) - '@inquirer/input': 4.2.2(@types/node@24.3.0) - '@inquirer/number': 3.0.18(@types/node@24.3.0) - '@inquirer/password': 4.0.18(@types/node@24.3.0) - '@inquirer/rawlist': 4.1.6(@types/node@24.3.0) - '@inquirer/search': 3.1.1(@types/node@24.3.0) - '@inquirer/select': 4.3.2(@types/node@24.3.0) + '@inquirer/checkbox': 4.3.2(@types/node@25.2.1) + '@inquirer/confirm': 5.1.21(@types/node@25.2.1) + '@inquirer/editor': 4.2.23(@types/node@25.2.1) + '@inquirer/expand': 4.0.23(@types/node@25.2.1) + '@inquirer/input': 4.3.1(@types/node@25.2.1) + '@inquirer/number': 3.0.23(@types/node@25.2.1) + '@inquirer/password': 4.0.23(@types/node@25.2.1) + '@inquirer/rawlist': 4.1.11(@types/node@25.2.1) + '@inquirer/search': 3.2.2(@types/node@25.2.1) + '@inquirer/select': 4.4.2(@types/node@25.2.1) optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/rawlist@4.1.6(@types/node@24.3.0)': + '@inquirer/rawlist@4.1.11(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/type': 3.0.10(@types/node@25.2.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/search@3.1.1(@types/node@24.3.0)': + '@inquirer/search@3.2.2(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.3.0) + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.2.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/select@4.3.2(@types/node@24.3.0)': + '@inquirer/select@4.4.2(@types/node@25.2.1)': dependencies: - '@inquirer/core': 10.2.0(@types/node@24.3.0) - '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@24.3.0) - ansi-escapes: 4.3.2 + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.2.1) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.2.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@inquirer/type@3.0.8(@types/node@24.3.0)': + '@inquirer/type@3.0.10(@types/node@25.2.1)': optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@isaacs/balanced-match@4.0.1': {} @@ -8873,7 +8402,7 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -8887,49 +8416,49 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} - '@jest/console@30.1.2': + '@jest/console@30.2.0': dependencies: - '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@jest/types': 30.2.0 + '@types/node': 25.2.1 chalk: 4.1.2 - jest-message-util: 30.1.0 - jest-util: 30.0.5 + jest-message-util: 30.2.0 + jest-util: 30.2.0 slash: 3.0.0 - '@jest/core@30.1.3(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3))': + '@jest/core@30.2.0(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3))': dependencies: - '@jest/console': 30.1.2 + '@jest/console': 30.2.0 '@jest/pattern': 30.0.1 - '@jest/reporters': 30.1.3 - '@jest/test-result': 30.1.3 - '@jest/transform': 30.1.2 - '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@jest/reporters': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 25.2.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.3.0 exit-x: 0.2.2 graceful-fs: 4.2.11 - jest-changed-files: 30.0.5 - jest-config: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) - jest-haste-map: 30.1.0 - jest-message-util: 30.1.0 + jest-changed-files: 30.2.0 + jest-config: 30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) + jest-haste-map: 30.2.0 + jest-message-util: 30.2.0 jest-regex-util: 30.0.1 - jest-resolve: 30.1.3 - jest-resolve-dependencies: 30.1.3 - jest-runner: 30.1.3 - jest-runtime: 30.1.3 - jest-snapshot: 30.1.2 - jest-util: 30.0.5 - jest-validate: 30.1.0 - jest-watcher: 30.1.3 + jest-resolve: 30.2.0 + jest-resolve-dependencies: 30.2.0 + jest-runner: 30.2.0 + jest-runtime: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 + jest-watcher: 30.2.0 micromatch: 4.0.8 - pretty-format: 30.0.5 + pretty-format: 30.2.0 slash: 3.0.0 transitivePeerDependencies: - babel-plugin-macros @@ -8939,122 +8468,77 @@ snapshots: '@jest/diff-sequences@30.0.1': {} - '@jest/environment-jsdom-abstract@30.0.5(canvas@3.0.0)(jsdom@26.1.0(canvas@3.0.0))': + '@jest/environment-jsdom-abstract@30.2.0(canvas@3.0.0)(jsdom@26.1.0(canvas@3.0.0))': dependencies: - '@jest/environment': 30.0.5 - '@jest/fake-timers': 30.0.5 - '@jest/types': 30.0.5 + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 '@types/jsdom': 21.1.7 - '@types/node': 24.3.0 - jest-mock: 30.0.5 - jest-util: 30.0.5 + '@types/node': 25.2.1 + jest-mock: 30.2.0 + jest-util: 30.2.0 jsdom: 26.1.0(canvas@3.0.0) optionalDependencies: canvas: 3.0.0 - '@jest/environment-jsdom-abstract@30.1.2(canvas@3.0.0)(jsdom@26.1.0(canvas@3.0.0))': + '@jest/environment@30.2.0': dependencies: - '@jest/environment': 30.1.2 - '@jest/fake-timers': 30.1.2 - '@jest/types': 30.0.5 - '@types/jsdom': 21.1.7 - '@types/node': 24.3.0 - jest-mock: 30.0.5 - jest-util: 30.0.5 - jsdom: 26.1.0(canvas@3.0.0) - optionalDependencies: - canvas: 3.0.0 - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 24.3.0 - jest-mock: 29.7.0 - - '@jest/environment@30.0.5': - dependencies: - '@jest/fake-timers': 30.0.5 - '@jest/types': 30.0.5 - '@types/node': 24.3.0 - jest-mock: 30.0.5 - - '@jest/environment@30.1.2': - dependencies: - '@jest/fake-timers': 30.1.2 - '@jest/types': 30.0.5 - '@types/node': 24.3.0 - jest-mock: 30.0.5 + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 25.2.1 + jest-mock: 30.2.0 '@jest/expect-utils@30.0.5': dependencies: '@jest/get-type': 30.0.1 - '@jest/expect-utils@30.1.2': + '@jest/expect-utils@30.2.0': dependencies: '@jest/get-type': 30.1.0 - '@jest/expect@30.1.2': + '@jest/expect@30.2.0': dependencies: - expect: 30.1.2 - jest-snapshot: 30.1.2 + expect: 30.2.0 + jest-snapshot: 30.2.0 transitivePeerDependencies: - supports-color - '@jest/fake-timers@29.7.0': + '@jest/fake-timers@30.2.0': dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 24.3.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/fake-timers@30.0.5': - dependencies: - '@jest/types': 30.0.5 + '@jest/types': 30.2.0 '@sinonjs/fake-timers': 13.0.5 - '@types/node': 24.3.0 - jest-message-util: 30.0.5 - jest-mock: 30.0.5 - jest-util: 30.0.5 - - '@jest/fake-timers@30.1.2': - dependencies: - '@jest/types': 30.0.5 - '@sinonjs/fake-timers': 13.0.5 - '@types/node': 24.3.0 - jest-message-util: 30.1.0 - jest-mock: 30.0.5 - jest-util: 30.0.5 + '@types/node': 25.2.1 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 + jest-util: 30.2.0 '@jest/get-type@30.0.1': {} '@jest/get-type@30.1.0': {} - '@jest/globals@30.1.2': + '@jest/globals@30.2.0': dependencies: - '@jest/environment': 30.1.2 - '@jest/expect': 30.1.2 - '@jest/types': 30.0.5 - jest-mock: 30.0.5 + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/types': 30.2.0 + jest-mock: 30.2.0 transitivePeerDependencies: - supports-color '@jest/pattern@30.0.1': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 jest-regex-util: 30.0.1 - '@jest/reporters@30.1.3': + '@jest/reporters@30.2.0': dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 30.1.2 - '@jest/test-result': 30.1.3 - '@jest/transform': 30.1.2 - '@jest/types': 30.0.5 - '@jridgewell/trace-mapping': 0.3.30 - '@types/node': 24.3.0 + '@jest/console': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 25.2.1 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit-x: 0.2.2 @@ -9064,10 +8548,10 @@ snapshots: istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - jest-message-util: 30.1.0 - jest-util: 30.0.5 - jest-worker: 30.1.0 + istanbul-reports: 3.2.0 + jest-message-util: 30.2.0 + jest-util: 30.2.0 + jest-worker: 30.2.0 slash: 3.0.0 string-length: 4.0.2 v8-to-istanbul: 9.3.0 @@ -9080,48 +8564,48 @@ snapshots: '@jest/schemas@30.0.5': dependencies: - '@sinclair/typebox': 0.34.38 + '@sinclair/typebox': 0.34.41 - '@jest/snapshot-utils@30.1.2': + '@jest/snapshot-utils@30.2.0': dependencies: - '@jest/types': 30.0.5 + '@jest/types': 30.2.0 chalk: 4.1.2 graceful-fs: 4.2.11 natural-compare: 1.4.0 '@jest/source-map@30.0.1': dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 - '@jest/test-result@30.1.3': + '@jest/test-result@30.2.0': dependencies: - '@jest/console': 30.1.2 - '@jest/types': 30.0.5 + '@jest/console': 30.2.0 + '@jest/types': 30.2.0 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - '@jest/test-sequencer@30.1.3': + '@jest/test-sequencer@30.2.0': dependencies: - '@jest/test-result': 30.1.3 + '@jest/test-result': 30.2.0 graceful-fs: 4.2.11 - jest-haste-map: 30.1.0 + jest-haste-map: 30.2.0 slash: 3.0.0 - '@jest/transform@30.1.2': + '@jest/transform@30.2.0': dependencies: - '@babel/core': 7.28.3 - '@jest/types': 30.0.5 - '@jridgewell/trace-mapping': 0.3.30 - babel-plugin-istanbul: 7.0.0 + '@babel/core': 7.29.0 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 7.0.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 30.1.0 + jest-haste-map: 30.2.0 jest-regex-util: 30.0.1 - jest-util: 30.0.5 + jest-util: 30.2.0 micromatch: 4.0.8 pirates: 4.0.7 slash: 3.0.0 @@ -9129,29 +8613,35 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 24.3.0 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - '@jest/types@30.0.5': dependencies: '@jest/pattern': 30.0.1 '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.3.0 + '@types/node': 25.2.1 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jest/types@30.2.0': + dependencies: + '@jest/pattern': 30.0.1 + '@jest/schemas': 30.0.5 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 25.2.1 '@types/yargs': 17.0.33 chalk: 4.1.2 '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.1': {} @@ -9160,16 +8650,11 @@ snapshots: '@jridgewell/source-map@0.3.11': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.30': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 @@ -9183,84 +8668,179 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)': + '@jsonjoy.com/base64@17.65.0(tslib@2.8.1)': dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.6.0(tslib@2.8.1) - hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/util@1.6.0(tslib@2.8.1)': + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': dependencies: tslib: 2.8.1 + '@jsonjoy.com/buffers@17.65.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@17.65.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.56.10(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.56.10(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.65.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@17.65.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.65.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@17.65.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/util': 17.65.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@17.65.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.65.0(tslib@2.8.1) + tslib: 2.8.1 + '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@3.0.1(@inquirer/prompts@7.8.2(@types/node@24.3.0))(@types/node@24.3.0)(listr2@9.0.1)': + '@listr2/prompt-adapter-inquirer@3.0.5(@inquirer/prompts@7.10.1(@types/node@25.2.1))(@types/node@25.2.1)(listr2@9.0.5)': dependencies: - '@inquirer/prompts': 7.8.2(@types/node@24.3.0) - '@inquirer/type': 3.0.8(@types/node@24.3.0) - listr2: 9.0.1 + '@inquirer/prompts': 7.10.1(@types/node@25.2.1) + '@inquirer/type': 3.0.10(@types/node@25.2.1) + listr2: 9.0.5 transitivePeerDependencies: - '@types/node' - '@lmdb/lmdb-darwin-arm64@3.3.0': + '@lmdb/lmdb-darwin-arm64@3.4.4': optional: true - '@lmdb/lmdb-darwin-arm64@3.4.2': + '@lmdb/lmdb-darwin-x64@3.4.4': optional: true - '@lmdb/lmdb-darwin-x64@3.3.0': + '@lmdb/lmdb-linux-arm64@3.4.4': optional: true - '@lmdb/lmdb-darwin-x64@3.4.2': + '@lmdb/lmdb-linux-arm@3.4.4': optional: true - '@lmdb/lmdb-linux-arm64@3.3.0': + '@lmdb/lmdb-linux-x64@3.4.4': optional: true - '@lmdb/lmdb-linux-arm64@3.4.2': + '@lmdb/lmdb-win32-arm64@3.4.4': optional: true - '@lmdb/lmdb-linux-arm@3.3.0': + '@lmdb/lmdb-win32-x64@3.4.4': optional: true - '@lmdb/lmdb-linux-arm@3.4.2': - optional: true - - '@lmdb/lmdb-linux-x64@3.3.0': - optional: true - - '@lmdb/lmdb-linux-x64@3.4.2': - optional: true - - '@lmdb/lmdb-win32-arm64@3.3.0': - optional: true - - '@lmdb/lmdb-win32-arm64@3.4.2': - optional: true - - '@lmdb/lmdb-win32-x64@3.3.0': - optional: true - - '@lmdb/lmdb-win32-x64@3.4.2': - optional: true - - '@modelcontextprotocol/sdk@1.17.3': + '@modelcontextprotocol/sdk@1.26.0(zod@4.3.5)': dependencies: - ajv: 6.12.6 + '@hono/node-server': 1.19.9(hono@4.11.7) + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) content-type: 1.0.5 - cors: 2.8.5 + cors: 2.8.6 cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.0.6 - express: 5.1.0 - express-rate-limit: 7.5.1(express@5.1.0) - pkce-challenge: 5.0.0 - raw-body: 3.0.0 - zod: 3.25.76 - zod-to-json-schema: 3.24.6(zod@3.25.76) + express: 5.2.1 + express-rate-limit: 8.2.1(express@5.2.1) + hono: 4.11.7 + jose: 6.1.3 + json-schema-typed: 8.0.2 + pkce-challenge: 5.0.1 + raw-body: 3.0.2 + zod: 4.3.5 + zod-to-json-schema: 3.25.1(zod@4.3.5) transitivePeerDependencies: - supports-color @@ -9282,6 +8862,54 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true + '@napi-rs/canvas-android-arm64@0.1.90': + optional: true + + '@napi-rs/canvas-darwin-arm64@0.1.90': + optional: true + + '@napi-rs/canvas-darwin-x64@0.1.90': + optional: true + + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.90': + optional: true + + '@napi-rs/canvas-linux-arm64-gnu@0.1.90': + optional: true + + '@napi-rs/canvas-linux-arm64-musl@0.1.90': + optional: true + + '@napi-rs/canvas-linux-riscv64-gnu@0.1.90': + optional: true + + '@napi-rs/canvas-linux-x64-gnu@0.1.90': + optional: true + + '@napi-rs/canvas-linux-x64-musl@0.1.90': + optional: true + + '@napi-rs/canvas-win32-arm64-msvc@0.1.90': + optional: true + + '@napi-rs/canvas-win32-x64-msvc@0.1.90': + optional: true + + '@napi-rs/canvas@0.1.90': + optionalDependencies: + '@napi-rs/canvas-android-arm64': 0.1.90 + '@napi-rs/canvas-darwin-arm64': 0.1.90 + '@napi-rs/canvas-darwin-x64': 0.1.90 + '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.90 + '@napi-rs/canvas-linux-arm64-gnu': 0.1.90 + '@napi-rs/canvas-linux-arm64-musl': 0.1.90 + '@napi-rs/canvas-linux-riscv64-gnu': 0.1.90 + '@napi-rs/canvas-linux-x64-gnu': 0.1.90 + '@napi-rs/canvas-linux-x64-musl': 0.1.90 + '@napi-rs/canvas-win32-arm64-msvc': 0.1.90 + '@napi-rs/canvas-win32-x64-msvc': 0.1.90 + optional: true + '@napi-rs/nice-android-arm-eabi@1.1.1': optional: true @@ -9356,118 +8984,106 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.5.0 - '@emnapi/runtime': 1.5.0 - '@tybys/wasm-util': 0.10.0 + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 optional: true - '@napi-rs/wasm-runtime@1.0.3': + '@napi-rs/wasm-runtime@1.1.1': dependencies: - '@emnapi/core': 1.5.0 - '@emnapi/runtime': 1.5.0 - '@tybys/wasm-util': 0.10.0 + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 + '@tybys/wasm-util': 0.10.1 optional: true - '@ng-bootstrap/ng-bootstrap@19.0.1(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@popperjs/core@2.11.8)(rxjs@7.8.2)': + '@ng-bootstrap/ng-bootstrap@20.0.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/forms@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@popperjs/core@2.11.8)(rxjs@7.8.2)': dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/localize': 20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/localize': 21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3) '@popperjs/core': 2.11.8 rxjs: 7.8.2 tslib: 2.8.1 - '@ng-select/ng-select@20.1.3(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))': + '@ng-select/ng-select@21.2.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/forms@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))': dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) tslib: 2.8.1 - ? '@ngneat/dirty-check-forms@3.0.3(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/router@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(lodash-es@4.17.21)(rxjs@7.8.2)' + ? '@ngneat/dirty-check-forms@3.0.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/forms@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))(@angular/router@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))(lodash-es@4.17.21)(rxjs@7.8.2)' : dependencies: - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/router': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/forms': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) + '@angular/router': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) lodash-es: 4.17.21 rxjs: 7.8.2 tslib: 2.8.1 - '@ngtools/webpack@20.0.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.5))': + '@ngtools/webpack@21.1.2(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2))': dependencies: - '@angular/compiler-cli': 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) - typescript: 5.8.3 - webpack: 5.99.8(esbuild@0.25.5) + '@angular/compiler-cli': 21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3) + typescript: 5.9.3 + webpack: 5.104.1(esbuild@0.27.2) - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - - '@npmcli/agent@3.0.0': + '@npmcli/agent@4.0.0': dependencies: agent-base: 7.1.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 - lru-cache: 10.4.3 + lru-cache: 11.2.5 socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color - '@npmcli/fs@4.0.0': + '@npmcli/fs@5.0.0': dependencies: - semver: 7.7.2 + semver: 7.7.3 - '@npmcli/git@6.0.3': + '@npmcli/git@7.0.1': dependencies: - '@npmcli/promise-spawn': 8.0.3 - ini: 5.0.0 - lru-cache: 10.4.3 - npm-pick-manifest: 10.0.0 - proc-log: 5.0.0 + '@npmcli/promise-spawn': 9.0.1 + ini: 6.0.0 + lru-cache: 11.2.5 + npm-pick-manifest: 11.0.3 + proc-log: 6.1.0 promise-retry: 2.0.1 - semver: 7.7.2 - which: 5.0.0 + semver: 7.7.3 + which: 6.0.0 - '@npmcli/installed-package-contents@3.0.0': + '@npmcli/installed-package-contents@4.0.0': dependencies: - npm-bundled: 4.0.0 - npm-normalize-package-bin: 4.0.0 + npm-bundled: 5.0.0 + npm-normalize-package-bin: 5.0.0 - '@npmcli/node-gyp@4.0.0': {} + '@npmcli/node-gyp@5.0.0': {} - '@npmcli/package-json@6.2.0': + '@npmcli/package-json@7.0.4': dependencies: - '@npmcli/git': 6.0.3 - glob: 10.4.5 - hosted-git-info: 8.1.0 - json-parse-even-better-errors: 4.0.0 - proc-log: 5.0.0 - semver: 7.7.2 + '@npmcli/git': 7.0.1 + glob: 13.0.0 + hosted-git-info: 9.0.2 + json-parse-even-better-errors: 5.0.0 + proc-log: 6.1.0 + semver: 7.7.3 validate-npm-package-license: 3.0.4 - '@npmcli/promise-spawn@8.0.3': + '@npmcli/promise-spawn@9.0.1': dependencies: - which: 5.0.0 + which: 6.0.0 - '@npmcli/redact@3.2.2': {} + '@npmcli/redact@4.0.0': {} - '@npmcli/run-script@9.1.0': + '@npmcli/run-script@10.0.3': dependencies: - '@npmcli/node-gyp': 4.0.0 - '@npmcli/package-json': 6.2.0 - '@npmcli/promise-spawn': 8.0.3 - node-gyp: 11.4.2 - proc-log: 5.0.0 - which: 5.0.0 + '@npmcli/node-gyp': 5.0.0 + '@npmcli/package-json': 7.0.4 + '@npmcli/promise-spawn': 9.0.1 + node-gyp: 12.2.0 + proc-log: 6.1.0 + which: 6.0.0 transitivePeerDependencies: - supports-color @@ -9529,69 +9145,67 @@ snapshots: dependencies: '@octokit/openapi-types': 24.2.0 - '@oxc-project/runtime@0.81.0': {} + '@oxc-project/types@0.106.0': {} - '@oxc-project/types@0.81.0': {} - - '@parcel/watcher-android-arm64@2.5.1': + '@parcel/watcher-android-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-arm64@2.5.1': + '@parcel/watcher-darwin-arm64@2.5.6': optional: true - '@parcel/watcher-darwin-x64@2.5.1': + '@parcel/watcher-darwin-x64@2.5.6': optional: true - '@parcel/watcher-freebsd-x64@2.5.1': + '@parcel/watcher-freebsd-x64@2.5.6': optional: true - '@parcel/watcher-linux-arm-glibc@2.5.1': + '@parcel/watcher-linux-arm-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm-musl@2.5.1': + '@parcel/watcher-linux-arm-musl@2.5.6': optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.1': + '@parcel/watcher-linux-arm64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-arm64-musl@2.5.1': + '@parcel/watcher-linux-arm64-musl@2.5.6': optional: true - '@parcel/watcher-linux-x64-glibc@2.5.1': + '@parcel/watcher-linux-x64-glibc@2.5.6': optional: true - '@parcel/watcher-linux-x64-musl@2.5.1': + '@parcel/watcher-linux-x64-musl@2.5.6': optional: true - '@parcel/watcher-win32-arm64@2.5.1': + '@parcel/watcher-win32-arm64@2.5.6': optional: true - '@parcel/watcher-win32-ia32@2.5.1': + '@parcel/watcher-win32-ia32@2.5.6': optional: true - '@parcel/watcher-win32-x64@2.5.1': + '@parcel/watcher-win32-x64@2.5.6': optional: true - '@parcel/watcher@2.5.1': + '@parcel/watcher@2.5.6': dependencies: - detect-libc: 1.0.3 + detect-libc: 2.1.2 is-glob: 4.0.3 - micromatch: 4.0.8 node-addon-api: 7.1.1 + picomatch: 4.0.3 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 optional: true '@pkgjs/parseargs@0.11.0': @@ -9599,238 +9213,183 @@ snapshots: '@pkgr/core@0.2.9': {} - '@playwright/test@1.55.0': + '@playwright/test@1.58.2': dependencies: - playwright: 1.55.0 + playwright: 1.58.2 '@popperjs/core@2.11.8': {} - '@rolldown/binding-android-arm64@1.0.0-beta.32': + '@rolldown/binding-android-arm64@1.0.0-beta.58': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.32': + '@rolldown/binding-darwin-arm64@1.0.0-beta.58': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.32': + '@rolldown/binding-darwin-x64@1.0.0-beta.58': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.32': + '@rolldown/binding-freebsd-x64@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.32': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.32': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.32': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.32': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.32': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.58': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.32': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.58': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.32': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.58': dependencies: - '@napi-rs/wasm-runtime': 1.0.3 + '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.32': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.32': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.32': + '@rolldown/pluginutils@1.0.0-beta.58': {} + + '@rollup/rollup-android-arm-eabi@4.57.1': optional: true - '@rolldown/pluginutils@1.0.0-beta.32': {} - - '@rollup/rollup-android-arm-eabi@4.40.2': + '@rollup/rollup-android-arm64@4.57.1': optional: true - '@rollup/rollup-android-arm-eabi@4.50.0': + '@rollup/rollup-darwin-arm64@4.57.1': optional: true - '@rollup/rollup-android-arm64@4.40.2': + '@rollup/rollup-darwin-x64@4.57.1': optional: true - '@rollup/rollup-android-arm64@4.50.0': + '@rollup/rollup-freebsd-arm64@4.57.1': optional: true - '@rollup/rollup-darwin-arm64@4.40.2': + '@rollup/rollup-freebsd-x64@4.57.1': optional: true - '@rollup/rollup-darwin-arm64@4.50.0': + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': optional: true - '@rollup/rollup-darwin-x64@4.40.2': + '@rollup/rollup-linux-arm-musleabihf@4.57.1': optional: true - '@rollup/rollup-darwin-x64@4.50.0': + '@rollup/rollup-linux-arm64-gnu@4.57.1': optional: true - '@rollup/rollup-freebsd-arm64@4.40.2': + '@rollup/rollup-linux-arm64-musl@4.57.1': optional: true - '@rollup/rollup-freebsd-arm64@4.50.0': + '@rollup/rollup-linux-loong64-gnu@4.57.1': optional: true - '@rollup/rollup-freebsd-x64@4.40.2': + '@rollup/rollup-linux-loong64-musl@4.57.1': optional: true - '@rollup/rollup-freebsd-x64@4.50.0': + '@rollup/rollup-linux-ppc64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + '@rollup/rollup-linux-ppc64-musl@4.57.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.50.0': + '@rollup/rollup-linux-riscv64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.2': + '@rollup/rollup-linux-riscv64-musl@4.57.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.50.0': + '@rollup/rollup-linux-s390x-gnu@4.57.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.2': + '@rollup/rollup-linux-x64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.50.0': + '@rollup/rollup-linux-x64-musl@4.57.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.2': + '@rollup/rollup-openbsd-x64@4.57.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.50.0': + '@rollup/rollup-openharmony-arm64@4.57.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + '@rollup/rollup-win32-arm64-msvc@4.57.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.50.0': + '@rollup/rollup-win32-ia32-msvc@4.57.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + '@rollup/rollup-win32-x64-gnu@4.57.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.50.0': + '@rollup/rollup-win32-x64-msvc@4.57.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.50.0': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.40.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.50.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.40.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.50.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.40.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.50.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.40.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.50.0': - optional: true - - '@rollup/rollup-openharmony-arm64@4.50.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.40.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.50.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.40.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.50.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.40.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.50.0': - optional: true - - '@schematics/angular@20.2.2(chokidar@4.0.3)': + '@schematics/angular@21.1.3(chokidar@5.0.0)': dependencies: - '@angular-devkit/core': 20.2.2(chokidar@4.0.3) - '@angular-devkit/schematics': 20.2.2(chokidar@4.0.3) + '@angular-devkit/core': 21.1.3(chokidar@5.0.0) + '@angular-devkit/schematics': 21.1.3(chokidar@5.0.0) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar - '@sigstore/bundle@3.1.0': + '@sigstore/bundle@4.0.0': dependencies: - '@sigstore/protobuf-specs': 0.4.3 + '@sigstore/protobuf-specs': 0.5.0 - '@sigstore/core@2.0.0': {} + '@sigstore/core@3.1.0': {} - '@sigstore/protobuf-specs@0.4.3': {} + '@sigstore/protobuf-specs@0.5.0': {} - '@sigstore/sign@3.1.0': + '@sigstore/sign@4.1.0': dependencies: - '@sigstore/bundle': 3.1.0 - '@sigstore/core': 2.0.0 - '@sigstore/protobuf-specs': 0.4.3 - make-fetch-happen: 14.0.3 - proc-log: 5.0.0 + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.1.0 + '@sigstore/protobuf-specs': 0.5.0 + make-fetch-happen: 15.0.3 + proc-log: 6.1.0 promise-retry: 2.0.1 transitivePeerDependencies: - supports-color - '@sigstore/tuf@3.1.1': + '@sigstore/tuf@4.0.1': dependencies: - '@sigstore/protobuf-specs': 0.4.3 - tuf-js: 3.1.0 + '@sigstore/protobuf-specs': 0.5.0 + tuf-js: 4.1.0 transitivePeerDependencies: - supports-color - '@sigstore/verify@2.1.1': + '@sigstore/verify@3.1.0': dependencies: - '@sigstore/bundle': 3.1.0 - '@sigstore/core': 2.0.0 - '@sigstore/protobuf-specs': 0.4.3 + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.1.0 + '@sigstore/protobuf-specs': 0.5.0 '@sinclair/typebox@0.27.8': {} - '@sinclair/typebox@0.34.38': {} + '@sinclair/typebox@0.34.41': {} '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers@13.0.5': dependencies: '@sinonjs/commons': 3.0.1 - '@tootallnate/once@2.0.0': {} + '@standard-schema/spec@1.1.0': {} '@tsconfig/node10@1.0.9': {} @@ -9842,54 +9401,54 @@ snapshots: '@tufjs/canonical-json@2.0.0': {} - '@tufjs/models@3.0.1': + '@tufjs/models@4.1.0': dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.5 + minimatch: 10.1.1 - '@tybys/wasm-util@0.10.0': + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.3 - '@babel/types': 7.28.2 + '@babel/parser': 7.29.0 + '@babel/types': 7.29.0 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.29.0 '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@types/bonjour@3.5.13': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.0.6 - '@types/node': 24.3.0 + '@types/express-serve-static-core': 4.19.8 + '@types/node': 25.2.1 '@types/connect@3.4.38': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@types/eslint-scope@3.7.7': dependencies: @@ -9901,36 +9460,29 @@ snapshots: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 - '@types/estree@1.0.7': {} + '@types/esrecurse@4.3.1': {} '@types/estree@1.0.8': {} - '@types/express-serve-static-core@4.19.6': + '@types/express-serve-static-core@4.19.8': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 + '@types/send': 1.2.1 - '@types/express-serve-static-core@5.0.6': - dependencies: - '@types/node': 24.3.0 - '@types/qs': 6.14.0 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 - - '@types/express@4.17.23': + '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.6 + '@types/express-serve-static-core': 4.19.8 '@types/qs': 6.14.0 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/http-errors@2.0.5': {} - '@types/http-proxy@1.17.16': + '@types/http-proxy@1.17.17': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@types/istanbul-lib-coverage@2.0.6': {} @@ -9947,15 +9499,9 @@ snapshots: expect: 30.0.5 pretty-format: 30.0.5 - '@types/jsdom@20.0.1': - dependencies: - '@types/node': 24.3.0 - '@types/tough-cookie': 4.0.5 - parse5: 7.3.0 - '@types/jsdom@21.1.7': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 @@ -9963,13 +9509,13 @@ snapshots: '@types/mime@1.3.5': {} - '@types/node-forge@1.3.11': + '@types/node-forge@1.3.14': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 - '@types/node@24.3.0': + '@types/node@25.2.1': dependencies: - undici-types: 7.10.0 + undici-types: 7.16.0 '@types/qs@6.14.0': {} @@ -9977,24 +9523,28 @@ snapshots: '@types/retry@0.12.2': {} - '@types/send@0.17.5': + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.3.0 + '@types/node': 25.2.1 + + '@types/send@1.2.1': + dependencies: + '@types/node': 25.2.1 '@types/serve-index@1.9.4': dependencies: - '@types/express': 4.17.23 + '@types/express': 4.17.25 - '@types/serve-static@1.15.8': + '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.3.0 - '@types/send': 0.17.5 + '@types/node': 25.2.1 + '@types/send': 0.17.6 '@types/sockjs@0.3.36': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@types/stack-utils@2.0.3': {} @@ -10002,7 +9552,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@types/yargs-parser@21.0.3': {} @@ -10010,97 +9560,95 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.41.0 - eslint: 9.34.0(jiti@1.21.7) - graphemer: 1.4.0 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.1 - eslint: 9.34.0(jiti@1.21.7) - typescript: 5.8.3 + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.41.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.8.3) - '@typescript-eslint/types': 8.41.0 - debug: 4.4.1 - typescript: 5.8.3 + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + debug: 4.4.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.41.0': + '@typescript-eslint/scope-manager@8.54.0': dependencies: - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/visitor-keys': 8.41.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 - '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': dependencies: - typescript: 5.8.3 + typescript: 5.9.3 - '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3) - debug: 4.4.1 - eslint: 9.34.0(jiti@1.21.7) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.41.0': {} + '@typescript-eslint/types@8.54.0': {} - '@typescript-eslint/typescript-estree@8.41.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.41.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.8.3) - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.1 - fast-glob: 3.3.3 - is-glob: 4.0.3 + '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3 minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.8.3) - eslint: 9.34.0(jiti@1.21.7) - typescript: 5.8.3 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.41.0': + '@typescript-eslint/visitor-keys@8.54.0': dependencies: - '@typescript-eslint/types': 8.41.0 + '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -10164,17 +9712,9 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0))': + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(yaml@2.7.0))': dependencies: - vite: 6.3.5(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0) - - '@vitejs/plugin-basic-ssl@2.0.0(vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0))': - dependencies: - vite: 7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0) - - '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0))': - dependencies: - vite: 7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0) + vite: 7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(yaml@2.7.0) '@webassemblyjs/ast@1.14.1': dependencies: @@ -10258,9 +9798,7 @@ snapshots: '@yarnpkg/lockfile@1.1.0': {} - abab@2.0.6: {} - - abbrev@3.0.1: {} + abbrev@4.0.0: {} accepts@1.3.8: dependencies: @@ -10269,14 +9807,9 @@ snapshots: accepts@2.0.0: dependencies: - mime-types: 3.0.1 + mime-types: 3.0.2 negotiator: 1.0.0 - acorn-globals@7.0.1: - dependencies: - acorn: 8.15.0 - acorn-walk: 8.3.1 - acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -10296,12 +9829,6 @@ snapshots: loader-utils: 2.0.4 regex-parser: 2.3.1 - agent-base@6.0.2: - dependencies: - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - agent-base@7.1.4: {} ajv-formats@2.1.1(ajv@8.17.1): @@ -10331,22 +9858,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.35.0: + algoliasearch@5.46.2: dependencies: - '@algolia/abtesting': 1.1.0 - '@algolia/client-abtesting': 5.35.0 - '@algolia/client-analytics': 5.35.0 - '@algolia/client-common': 5.35.0 - '@algolia/client-insights': 5.35.0 - '@algolia/client-personalization': 5.35.0 - '@algolia/client-query-suggestions': 5.35.0 - '@algolia/client-search': 5.35.0 - '@algolia/ingestion': 1.35.0 - '@algolia/monitoring': 1.35.0 - '@algolia/recommend': 5.35.0 - '@algolia/requester-browser-xhr': 5.35.0 - '@algolia/requester-fetch': 5.35.0 - '@algolia/requester-node-http': 5.35.0 + '@algolia/abtesting': 1.12.2 + '@algolia/client-abtesting': 5.46.2 + '@algolia/client-analytics': 5.46.2 + '@algolia/client-common': 5.46.2 + '@algolia/client-insights': 5.46.2 + '@algolia/client-personalization': 5.46.2 + '@algolia/client-query-suggestions': 5.46.2 + '@algolia/client-search': 5.46.2 + '@algolia/ingestion': 1.46.2 + '@algolia/monitoring': 1.46.2 + '@algolia/recommend': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 ansi-colors@4.1.3: {} @@ -10354,7 +9881,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.0.0: + ansi-escapes@7.2.0: dependencies: environment: 1.1.0 @@ -10362,7 +9889,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.2.0: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: @@ -10370,9 +9897,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} - - ansis@4.1.0: {} + ansi-styles@6.2.3: {} anymatch@3.1.3: dependencies: @@ -10391,44 +9916,39 @@ snapshots: array-flatten@1.1.1: {} - async@3.2.6: {} - - asynckit@0.4.0: {} - - autoprefixer@10.4.21(postcss@8.5.3): + autoprefixer@10.4.23(postcss@8.5.6): dependencies: - browserslist: 4.25.4 - caniuse-lite: 1.0.30001739 - fraction.js: 4.3.7 - normalize-range: 0.1.2 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001768 + fraction.js: 5.3.4 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 axobject-query@4.1.0: {} - babel-jest@30.1.2(@babel/core@7.28.3): + babel-jest@30.2.0(@babel/core@7.29.0): dependencies: - '@babel/core': 7.28.3 - '@jest/transform': 30.1.2 + '@babel/core': 7.29.0 + '@jest/transform': 30.2.0 '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 7.0.0 - babel-preset-jest: 30.0.1(@babel/core@7.28.3) + babel-plugin-istanbul: 7.0.1 + babel-preset-jest: 30.2.0(@babel/core@7.29.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-loader@10.0.0(@babel/core@7.27.1)(webpack@5.99.8(esbuild@0.25.5)): + babel-loader@10.0.0(@babel/core@7.28.5)(webpack@5.104.1(esbuild@0.27.2)): dependencies: - '@babel/core': 7.27.1 + '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.99.8(esbuild@0.25.5) + webpack: 5.104.1(esbuild@0.27.2) - babel-plugin-istanbul@7.0.0: + babel-plugin-istanbul@7.0.1: dependencies: - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 6.0.3 @@ -10436,78 +9956,67 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@30.0.1: + babel-plugin-jest-hoist@30.2.0: dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.2 '@types/babel__core': 7.20.5 - babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1): + babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.28.5): dependencies: - '@babel/compat-data': 7.27.7 - '@babel/core': 7.27.1 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + '@babel/compat-data': 7.29.0 + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.28.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.1): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5): dependencies: - '@babel/core': 7.27.1 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) - core-js-compat: 3.43.0 + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.28.5) + core-js-compat: 3.48.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.27.1): + babel-plugin-polyfill-regenerator@0.6.6(@babel/core@7.28.5): dependencies: - '@babel/core': 7.27.1 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.3): + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): dependencies: - '@babel/core': 7.28.3 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.3) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.3) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.3) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.3) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.3) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.3) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.3) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.3) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.3) + '@babel/core': 7.29.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) - babel-preset-jest@30.0.1(@babel/core@7.28.3): + babel-preset-jest@30.2.0(@babel/core@7.29.0): dependencies: - '@babel/core': 7.28.3 - babel-plugin-jest-hoist: 30.0.1 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.3) + '@babel/core': 7.29.0 + babel-plugin-jest-hoist: 30.2.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) balanced-match@1.0.2: {} base64-js@1.5.1: optional: true - batch@0.6.1: {} + baseline-browser-mapping@2.9.19: {} - beasties@0.3.4: - dependencies: - css-select: 5.2.2 - css-what: 6.2.2 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - htmlparser2: 10.0.0 - picocolors: 1.1.1 - postcss: 8.5.3 - postcss-media-query-parser: 0.2.3 + batch@0.6.1: {} beasties@0.3.5: dependencies: @@ -10515,7 +10024,7 @@ snapshots: css-what: 7.0.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - htmlparser2: 10.0.0 + htmlparser2: 10.1.0 picocolors: 1.1.1 postcss: 8.5.6 postcss-media-query-parser: 0.2.3 @@ -10533,33 +10042,33 @@ snapshots: readable-stream: 3.6.2 optional: true - body-parser@1.20.3: + body-parser@1.20.4: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 + qs: 6.14.1 + raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: - supports-color - body-parser@2.2.0: + body-parser@2.2.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.1 - http-errors: 2.0.0 - iconv-lite: 0.6.3 + debug: 4.4.3 + http-errors: 2.0.1 + iconv-lite: 0.7.2 on-finished: 2.4.1 - qs: 6.14.0 - raw-body: 3.0.0 + qs: 6.14.1 + raw-body: 3.0.2 type-is: 2.0.1 transitivePeerDependencies: - supports-color @@ -10588,12 +10097,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.4: + browserslist@4.28.1: dependencies: - caniuse-lite: 1.0.30001739 - electron-to-chromium: 1.5.213 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.4) + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001768 + electron-to-chromium: 1.5.286 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) bs-logger@0.2.6: dependencies: @@ -10613,24 +10123,23 @@ snapshots: bundle-name@4.1.0: dependencies: - run-applescript: 7.0.0 + run-applescript: 7.1.0 bytes@3.1.2: {} - cacache@19.0.1: + cacache@20.0.3: dependencies: - '@npmcli/fs': 4.0.0 + '@npmcli/fs': 5.0.0 fs-minipass: 3.0.3 - glob: 10.4.5 - lru-cache: 10.4.3 + glob: 13.0.0 + lru-cache: 11.2.5 minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - p-map: 7.0.3 - ssri: 12.0.0 - tar: 7.4.3 - unique-filename: 4.0.0 + p-map: 7.0.4 + ssri: 13.0.0 + unique-filename: 5.0.0 call-bind-apply-helpers@1.0.2: dependencies: @@ -10648,7 +10157,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001739: {} + caniuse-lite@1.0.30001768: {} canvas@3.0.0: dependencies: @@ -10662,11 +10171,11 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.6.0: {} + chalk@5.6.2: {} char-regex@1.0.2: {} - chardet@2.1.0: {} + chardet@2.1.1: {} chokidar@3.6.0: dependencies: @@ -10684,31 +10193,33 @@ snapshots: dependencies: readdirp: 4.1.2 + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + chownr@1.1.4: optional: true - chownr@2.0.0: {} - chownr@3.0.0: {} chrome-trace-event@1.0.4: {} - ci-info@3.9.0: {} - ci-info@4.3.0: {} + ci-info@4.3.1: {} + cjs-module-lexer@2.1.0: {} cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 - cli-spinners@2.9.2: {} + cli-spinners@3.4.0: {} - cli-truncate@4.0.0: + cli-truncate@5.1.1: dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 + slice-ansi: 7.1.2 + string-width: 8.1.1 cli-width@4.1.0: {} @@ -10721,8 +10232,8 @@ snapshots: cliui@9.0.1: dependencies: string-width: 7.2.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 clone-deep@4.0.1: dependencies: @@ -10742,23 +10253,19 @@ snapshots: colorette@2.0.20: {} - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - commander@2.20.3: {} compressible@2.0.18: dependencies: mime-db: 1.54.0 - compression@1.8.0: + compression@1.8.1: dependencies: bytes: 3.1.2 compressible: 2.0.18 debug: 2.6.9 negotiator: 0.6.4 - on-headers: 1.0.2 + on-headers: 1.1.0 safe-buffer: 5.2.1 vary: 1.1.2 transitivePeerDependencies: @@ -10772,9 +10279,7 @@ snapshots: dependencies: safe-buffer: 5.2.1 - content-disposition@1.0.0: - dependencies: - safe-buffer: 5.2.1 + content-disposition@1.0.1: {} content-type@1.0.5: {} @@ -10782,46 +10287,44 @@ snapshots: convert-source-map@2.0.0: {} - cookie-signature@1.0.6: {} + cookie-signature@1.0.7: {} cookie-signature@1.2.2: {} - cookie@0.7.1: {} - cookie@0.7.2: {} copy-anything@2.0.6: dependencies: is-what: 3.14.1 - copy-webpack-plugin@13.0.0(webpack@5.99.8(esbuild@0.25.5)): + copy-webpack-plugin@13.0.1(webpack@5.104.1(esbuild@0.27.2)): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - tinyglobby: 0.2.14 - webpack: 5.99.8(esbuild@0.25.5) + tinyglobby: 0.2.15 + webpack: 5.104.1(esbuild@0.27.2) - core-js-compat@3.43.0: + core-js-compat@3.48.0: dependencies: - browserslist: 4.25.4 + browserslist: 4.28.1 core-util-is@1.0.3: {} - cors@2.8.5: + cors@2.8.6: dependencies: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@9.0.0(typescript@5.8.3): + cosmiconfig@9.0.0(typescript@5.9.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 create-require@1.1.1: {} @@ -10831,26 +10334,18 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.99.8(esbuild@0.25.5)): + css-loader@7.1.2(webpack@5.104.1(esbuild@0.27.2)): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) - postcss-modules-scope: 3.2.1(postcss@8.5.3) - postcss-modules-values: 4.0.0(postcss@8.5.3) + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 optionalDependencies: - webpack: 5.99.8(esbuild@0.25.5) - - css-select@5.2.2: - dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 + webpack: 5.104.1(esbuild@0.27.2) css-select@6.0.0: dependencies: @@ -10860,31 +10355,15 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 - css-what@6.2.2: {} - css-what@7.0.0: {} cssesc@3.0.0: {} - cssom@0.3.8: {} - - cssom@0.5.0: {} - - cssstyle@2.3.0: - dependencies: - cssom: 0.3.8 - cssstyle@4.6.0: dependencies: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 - data-urls@3.0.2: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -10894,7 +10373,7 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.4.1: + debug@4.4.3: dependencies: ms: 2.1.3 @@ -10910,7 +10389,7 @@ snapshots: mimic-response: 3.1.0 optional: true - dedent@1.6.0: {} + dedent@1.7.0: {} deep-extend@0.6.0: optional: true @@ -10919,17 +10398,15 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@5.0.0: {} + default-browser-id@5.0.1: {} - default-browser@5.2.1: + default-browser@5.4.0: dependencies: bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id: 5.0.1 define-lazy-prop@3.0.0: {} - delayed-stream@1.0.0: {} - depd@1.1.2: {} depd@2.0.0: {} @@ -10938,10 +10415,7 @@ snapshots: destroy@1.2.0: {} - detect-libc@1.0.3: - optional: true - - detect-libc@2.0.4: + detect-libc@2.1.2: optional: true detect-newline@3.1.0: {} @@ -10964,10 +10438,6 @@ snapshots: domelementtype@2.3.0: {} - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 - domhandler@5.0.3: dependencies: domelementtype: 2.3.0 @@ -10988,15 +10458,11 @@ snapshots: ee-first@1.1.1: {} - ejs@3.1.10: - dependencies: - jake: 10.9.2 - - electron-to-chromium@1.5.213: {} + electron-to-chromium@1.5.286: {} emittery@0.13.1: {} - emoji-regex@10.5.0: {} + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -11004,8 +10470,6 @@ snapshots: emojis-list@3.0.0: {} - encodeurl@1.0.2: {} - encodeurl@2.0.0: {} encoding@0.1.13: @@ -11018,15 +10482,17 @@ snapshots: once: 1.4.0 optional: true - enhanced-resolve@5.18.3: + enhanced-resolve@5.19.0: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.3 + tapable: 2.3.0 entities@4.5.0: {} entities@6.0.1: {} + entities@7.0.1: {} + env-paths@2.2.1: {} environment@1.1.0: {} @@ -11038,7 +10504,7 @@ snapshots: prr: 1.0.1 optional: true - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -11046,102 +10512,74 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 - esbuild-wasm@0.25.5: {} + esbuild-wasm@0.27.0: {} - esbuild-wasm@0.25.8: {} + esbuild-wasm@0.27.2: {} - esbuild@0.25.5: + esbuild@0.27.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.5 - '@esbuild/android-arm': 0.25.5 - '@esbuild/android-arm64': 0.25.5 - '@esbuild/android-x64': 0.25.5 - '@esbuild/darwin-arm64': 0.25.5 - '@esbuild/darwin-x64': 0.25.5 - '@esbuild/freebsd-arm64': 0.25.5 - '@esbuild/freebsd-x64': 0.25.5 - '@esbuild/linux-arm': 0.25.5 - '@esbuild/linux-arm64': 0.25.5 - '@esbuild/linux-ia32': 0.25.5 - '@esbuild/linux-loong64': 0.25.5 - '@esbuild/linux-mips64el': 0.25.5 - '@esbuild/linux-ppc64': 0.25.5 - '@esbuild/linux-riscv64': 0.25.5 - '@esbuild/linux-s390x': 0.25.5 - '@esbuild/linux-x64': 0.25.5 - '@esbuild/netbsd-arm64': 0.25.5 - '@esbuild/netbsd-x64': 0.25.5 - '@esbuild/openbsd-arm64': 0.25.5 - '@esbuild/openbsd-x64': 0.25.5 - '@esbuild/sunos-x64': 0.25.5 - '@esbuild/win32-arm64': 0.25.5 - '@esbuild/win32-ia32': 0.25.5 - '@esbuild/win32-x64': 0.25.5 - - esbuild@0.25.8: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.8 - '@esbuild/android-arm': 0.25.8 - '@esbuild/android-arm64': 0.25.8 - '@esbuild/android-x64': 0.25.8 - '@esbuild/darwin-arm64': 0.25.8 - '@esbuild/darwin-x64': 0.25.8 - '@esbuild/freebsd-arm64': 0.25.8 - '@esbuild/freebsd-x64': 0.25.8 - '@esbuild/linux-arm': 0.25.8 - '@esbuild/linux-arm64': 0.25.8 - '@esbuild/linux-ia32': 0.25.8 - '@esbuild/linux-loong64': 0.25.8 - '@esbuild/linux-mips64el': 0.25.8 - '@esbuild/linux-ppc64': 0.25.8 - '@esbuild/linux-riscv64': 0.25.8 - '@esbuild/linux-s390x': 0.25.8 - '@esbuild/linux-x64': 0.25.8 - '@esbuild/netbsd-arm64': 0.25.8 - '@esbuild/netbsd-x64': 0.25.8 - '@esbuild/openbsd-arm64': 0.25.8 - '@esbuild/openbsd-x64': 0.25.8 - '@esbuild/openharmony-arm64': 0.25.8 - '@esbuild/sunos-x64': 0.25.8 - '@esbuild/win32-arm64': 0.25.8 - '@esbuild/win32-ia32': 0.25.8 - '@esbuild/win32-x64': 0.25.8 + '@esbuild/aix-ppc64': 0.27.0 + '@esbuild/android-arm': 0.27.0 + '@esbuild/android-arm64': 0.27.0 + '@esbuild/android-x64': 0.27.0 + '@esbuild/darwin-arm64': 0.27.0 + '@esbuild/darwin-x64': 0.27.0 + '@esbuild/freebsd-arm64': 0.27.0 + '@esbuild/freebsd-x64': 0.27.0 + '@esbuild/linux-arm': 0.27.0 + '@esbuild/linux-arm64': 0.27.0 + '@esbuild/linux-ia32': 0.27.0 + '@esbuild/linux-loong64': 0.27.0 + '@esbuild/linux-mips64el': 0.27.0 + '@esbuild/linux-ppc64': 0.27.0 + '@esbuild/linux-riscv64': 0.27.0 + '@esbuild/linux-s390x': 0.27.0 + '@esbuild/linux-x64': 0.27.0 + '@esbuild/netbsd-arm64': 0.27.0 + '@esbuild/netbsd-x64': 0.27.0 + '@esbuild/openbsd-arm64': 0.27.0 + '@esbuild/openbsd-x64': 0.27.0 + '@esbuild/openharmony-arm64': 0.27.0 + '@esbuild/sunos-x64': 0.27.0 + '@esbuild/win32-arm64': 0.27.0 + '@esbuild/win32-ia32': 0.27.0 + '@esbuild/win32-x64': 0.27.0 optional: true - esbuild@0.25.9: + esbuild@0.27.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.9 - '@esbuild/android-arm': 0.25.9 - '@esbuild/android-arm64': 0.25.9 - '@esbuild/android-x64': 0.25.9 - '@esbuild/darwin-arm64': 0.25.9 - '@esbuild/darwin-x64': 0.25.9 - '@esbuild/freebsd-arm64': 0.25.9 - '@esbuild/freebsd-x64': 0.25.9 - '@esbuild/linux-arm': 0.25.9 - '@esbuild/linux-arm64': 0.25.9 - '@esbuild/linux-ia32': 0.25.9 - '@esbuild/linux-loong64': 0.25.9 - '@esbuild/linux-mips64el': 0.25.9 - '@esbuild/linux-ppc64': 0.25.9 - '@esbuild/linux-riscv64': 0.25.9 - '@esbuild/linux-s390x': 0.25.9 - '@esbuild/linux-x64': 0.25.9 - '@esbuild/netbsd-arm64': 0.25.9 - '@esbuild/netbsd-x64': 0.25.9 - '@esbuild/openbsd-arm64': 0.25.9 - '@esbuild/openbsd-x64': 0.25.9 - '@esbuild/openharmony-arm64': 0.25.9 - '@esbuild/sunos-x64': 0.25.9 - '@esbuild/win32-arm64': 0.25.9 - '@esbuild/win32-ia32': 0.25.9 - '@esbuild/win32-x64': 0.25.9 + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 escalade@3.2.0: {} @@ -11151,14 +10589,6 @@ snapshots: escape-string-regexp@4.0.0: {} - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -11169,34 +10599,40 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-scope@9.1.0: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.1: {} - eslint@9.34.0(jiti@1.21.7): + eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@1.21.7)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.1 - '@eslint/core': 0.15.2 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.34.0 - '@eslint/plugin-kit': 0.3.5 - '@humanfs/node': 0.16.6 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.3 + '@eslint/js': 9.39.2 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + debug: 4.4.3 escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -11211,7 +10647,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 1.21.7 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -11223,7 +10659,7 @@ snapshots: esprima@4.0.1: {} - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -11241,7 +10677,7 @@ snapshots: eventemitter3@4.0.7: {} - eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} events@3.3.0: {} @@ -11277,83 +10713,85 @@ snapshots: jest-mock: 30.0.5 jest-util: 30.0.5 - expect@30.1.2: + expect@30.2.0: dependencies: - '@jest/expect-utils': 30.1.2 + '@jest/expect-utils': 30.2.0 '@jest/get-type': 30.1.0 - jest-matcher-utils: 30.1.2 - jest-message-util: 30.1.0 - jest-mock: 30.0.5 - jest-util: 30.0.5 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 + jest-util: 30.2.0 - exponential-backoff@3.1.2: {} + exponential-backoff@3.1.3: {} - express-rate-limit@7.5.1(express@5.1.0): + express-rate-limit@8.2.1(express@5.2.1): dependencies: - express: 5.1.0 + express: 5.2.1 + ip-address: 10.0.1 - express@4.21.2: + express@4.22.1: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.3 + body-parser: 1.20.4 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 + cookie: 0.7.2 + cookie-signature: 1.0.7 debug: 2.6.9 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.3.1 + finalhandler: 1.3.2 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.13.0 + qs: 6.14.1 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 + send: 0.19.2 + serve-static: 1.16.3 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 transitivePeerDependencies: - supports-color - express@5.1.0: + express@5.2.1: dependencies: accepts: 2.0.0 - body-parser: 2.2.0 - content-disposition: 1.0.0 + body-parser: 2.2.2 + content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.1 + debug: 4.4.3 + depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.0 + finalhandler: 2.1.1 fresh: 2.0.0 - http-errors: 2.0.0 + http-errors: 2.0.1 merge-descriptors: 2.0.0 - mime-types: 3.0.1 + mime-types: 3.0.2 on-finished: 2.4.1 once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.14.0 + qs: 6.14.1 range-parser: 1.2.1 router: 2.2.0 - send: 1.2.0 - serve-static: 2.2.0 + send: 1.2.1 + serve-static: 2.2.1 statuses: 2.0.2 type-is: 2.0.1 vary: 1.1.2 @@ -11362,24 +10800,12 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} fast-uri@3.1.0: {} - fastq@1.19.1: - dependencies: - reusify: 1.1.0 - faye-websocket@0.11.4: dependencies: websocket-driver: 0.7.4 @@ -11388,10 +10814,6 @@ snapshots: dependencies: bser: 2.1.1 - fdir@6.5.0(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -11402,29 +10824,25 @@ snapshots: file-saver@2.0.5: {} - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: + finalhandler@1.3.2: dependencies: debug: 2.6.9 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 - statuses: 2.0.1 + statuses: 2.0.2 unpipe: 1.0.0 transitivePeerDependencies: - supports-color - finalhandler@2.1.0: + finalhandler@2.1.1: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -11452,24 +10870,18 @@ snapshots: flatted@3.3.3: {} - follow-redirects@1.15.9(debug@4.4.1): + follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: - debug: 4.4.1 + debug: 4.4.3 foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.0: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - forwarded@0.2.0: {} - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} fresh@0.5.2: {} @@ -11478,10 +10890,6 @@ snapshots: fs-constants@1.0.0: optional: true - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fs-minipass@3.0.3: dependencies: minipass: 7.1.2 @@ -11500,7 +10908,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.3.1: {} + get-east-asian-width@1.4.0: {} get-intrinsic@1.3.0: dependencies: @@ -11535,6 +10943,10 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regex.js@1.2.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + glob-to-regexp@0.4.1: {} glob@10.4.5: @@ -11546,6 +10958,12 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@13.0.0: + dependencies: + minimatch: 10.1.1 + minipass: 7.1.2 + path-scurry: 2.0.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -11555,18 +10973,23 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@11.12.0: {} - globals@14.0.0: {} gopd@1.2.0: {} graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - handle-thing@2.0.1: {} + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + has-flag@4.0.0: {} has-symbols@1.1.0: {} @@ -11575,13 +10998,11 @@ snapshots: dependencies: function-bind: 1.1.2 - hosted-git-info@8.1.0: - dependencies: - lru-cache: 10.4.3 + hono@4.11.7: {} - hosted-git-info@9.0.0: + hosted-git-info@9.0.2: dependencies: - lru-cache: 11.2.1 + lru-cache: 11.2.5 hpack.js@2.1.6: dependencies: @@ -11590,101 +11011,83 @@ snapshots: readable-stream: 2.3.8 wbuf: 1.7.3 - html-encoding-sniffer@3.0.0: - dependencies: - whatwg-encoding: 2.0.0 - html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 html-escaper@2.0.2: {} - htmlparser2@10.0.0: + htmlparser2@10.1.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - entities: 6.0.1 + entities: 7.0.1 http-cache-semantics@4.2.0: {} http-deceiver@1.2.7: {} - http-errors@1.6.3: + http-errors@1.8.1: dependencies: depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 statuses: 1.5.0 + toidentifier: 1.0.1 - http-errors@2.0.0: + http-errors@2.0.1: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 toidentifier: 1.0.1 http-parser-js@0.5.10: {} - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.23): + http-proxy-middleware@2.0.9(@types/express@4.17.25): dependencies: - '@types/http-proxy': 1.17.16 - http-proxy: 1.18.1(debug@4.4.1) + '@types/http-proxy': 1.17.17 + http-proxy: 1.18.1(debug@4.4.3) is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 optionalDependencies: - '@types/express': 4.17.23 + '@types/express': 4.17.25 transitivePeerDependencies: - debug http-proxy-middleware@3.0.5: dependencies: - '@types/http-proxy': 1.17.16 - debug: 4.4.1 - http-proxy: 1.18.1(debug@4.4.1) + '@types/http-proxy': 1.17.17 + debug: 4.4.3 + http-proxy: 1.18.1(debug@4.4.3) is-glob: 4.0.3 is-plain-object: 5.0.0 micromatch: 4.0.8 transitivePeerDependencies: - supports-color - http-proxy@1.18.1(debug@4.4.1): + http-proxy@1.18.1(debug@4.4.3): dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.9(debug@4.4.1) + follow-redirects: 1.15.11(debug@4.4.3) requires-port: 1.0.0 transitivePeerDependencies: - debug - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -11700,16 +11103,20 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.3): + iconv-lite@0.7.2: dependencies: - postcss: 8.5.3 + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 ieee754@1.2.1: optional: true ignore-walk@8.0.0: dependencies: - minimatch: 10.0.3 + minimatch: 10.1.1 ignore@5.3.2: {} @@ -11718,7 +11125,7 @@ snapshots: image-size@0.5.5: optional: true - immutable@5.1.3: {} + immutable@5.1.4: {} import-fresh@3.3.1: dependencies: @@ -11737,20 +11144,20 @@ snapshots: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.3: {} - inherits@2.0.4: {} ini@1.3.8: optional: true - ini@5.0.0: {} + ini@6.0.0: {} ip-address@10.0.1: {} + ip-address@10.1.0: {} + ipaddr.js@1.9.1: {} - ipaddr.js@2.2.0: {} + ipaddr.js@2.3.0: {} is-arrayish@0.2.1: {} @@ -11768,11 +11175,9 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@4.0.0: {} - is-fullwidth-code-point@5.1.0: dependencies: - get-east-asian-width: 1.3.1 + get-east-asian-width: 1.4.0 is-generator-fn@2.1.0: {} @@ -11780,13 +11185,15 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-in-ssh@1.0.0: {} + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 is-interactive@2.0.0: {} - is-network-error@1.1.0: {} + is-network-error@1.3.0: {} is-number@7.0.0: {} @@ -11804,8 +11211,6 @@ snapshots: is-stream@2.0.1: {} - is-unicode-supported@1.3.0: {} - is-unicode-supported@2.1.0: {} is-what@3.14.1: {} @@ -11826,11 +11231,11 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.28.3 - '@babel/parser': 7.28.3 + '@babel/core': 7.29.0 + '@babel/parser': 7.29.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -11842,13 +11247,13 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.30 - debug: 4.4.1 + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -11859,38 +11264,31 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jake@10.9.2: - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jest-changed-files@30.0.5: + jest-changed-files@30.2.0: dependencies: execa: 5.1.1 - jest-util: 30.0.5 + jest-util: 30.2.0 p-limit: 3.1.0 - jest-circus@30.1.3: + jest-circus@30.2.0: dependencies: - '@jest/environment': 30.1.2 - '@jest/expect': 30.1.2 - '@jest/test-result': 30.1.3 - '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 25.2.1 chalk: 4.1.2 co: 4.6.0 - dedent: 1.6.0 + dedent: 1.7.0 is-generator-fn: 2.1.0 - jest-each: 30.1.0 - jest-matcher-utils: 30.1.2 - jest-message-util: 30.1.0 - jest-runtime: 30.1.3 - jest-snapshot: 30.1.2 - jest-util: 30.0.5 + jest-each: 30.2.0 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-runtime: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 p-limit: 3.1.0 - pretty-format: 30.0.5 + pretty-format: 30.2.0 pure-rand: 7.0.1 slash: 3.0.0 stack-utils: 2.0.6 @@ -11898,17 +11296,17 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)): + jest-cli@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)): dependencies: - '@jest/core': 30.1.3(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) - '@jest/test-result': 30.1.3 - '@jest/types': 30.0.5 + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) - jest-util: 30.0.5 - jest-validate: 30.1.0 + jest-config: 30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) + jest-util: 30.2.0 + jest-validate: 30.2.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' @@ -11917,35 +11315,35 @@ snapshots: - supports-color - ts-node - jest-config@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)): + jest-config@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)): dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.29.0 '@jest/get-type': 30.1.0 '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.1.3 - '@jest/types': 30.0.5 - babel-jest: 30.1.2(@babel/core@7.28.3) + '@jest/test-sequencer': 30.2.0 + '@jest/types': 30.2.0 + babel-jest: 30.2.0(@babel/core@7.29.0) chalk: 4.1.2 ci-info: 4.3.0 deepmerge: 4.3.1 glob: 10.4.5 graceful-fs: 4.2.11 - jest-circus: 30.1.3 - jest-docblock: 30.0.1 - jest-environment-node: 30.1.2 + jest-circus: 30.2.0 + jest-docblock: 30.2.0 + jest-environment-node: 30.2.0 jest-regex-util: 30.0.1 - jest-resolve: 30.1.3 - jest-runner: 30.1.3 - jest-util: 30.0.5 - jest-validate: 30.1.0 + jest-resolve: 30.2.0 + jest-runner: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 micromatch: 4.0.8 parse-json: 5.2.0 - pretty-format: 30.0.5 + pretty-format: 30.2.0 slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.3.0 - ts-node: 10.9.2(@types/node@24.3.0)(typescript@5.8.3) + '@types/node': 25.2.1 + ts-node: 10.9.2(@types/node@25.2.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -11964,48 +11362,31 @@ snapshots: chalk: 4.1.2 pretty-format: 30.0.5 - jest-diff@30.1.2: + jest-diff@30.2.0: dependencies: '@jest/diff-sequences': 30.0.1 '@jest/get-type': 30.1.0 chalk: 4.1.2 - pretty-format: 30.0.5 + pretty-format: 30.2.0 - jest-docblock@30.0.1: + jest-docblock@30.2.0: dependencies: detect-newline: 3.1.0 - jest-each@30.1.0: + jest-each@30.2.0: dependencies: '@jest/get-type': 30.1.0 - '@jest/types': 30.0.5 + '@jest/types': 30.2.0 chalk: 4.1.2 - jest-util: 30.0.5 - pretty-format: 30.0.5 + jest-util: 30.2.0 + pretty-format: 30.2.0 - jest-environment-jsdom@29.7.0(canvas@3.0.0): + jest-environment-jsdom@30.2.0(canvas@3.0.0): dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/jsdom': 20.0.1 - '@types/node': 24.3.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jsdom: 20.0.3(canvas@3.0.0) - optionalDependencies: - canvas: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jest-environment-jsdom@30.1.2(canvas@3.0.0): - dependencies: - '@jest/environment': 30.1.2 - '@jest/environment-jsdom-abstract': 30.1.2(canvas@3.0.0)(jsdom@26.1.0(canvas@3.0.0)) + '@jest/environment': 30.2.0 + '@jest/environment-jsdom-abstract': 30.2.0(canvas@3.0.0)(jsdom@26.1.0(canvas@3.0.0)) '@types/jsdom': 21.1.7 - '@types/node': 24.3.0 + '@types/node': 25.2.1 jsdom: 26.1.0(canvas@3.0.0) optionalDependencies: canvas: 3.0.0 @@ -12014,28 +11395,28 @@ snapshots: - supports-color - utf-8-validate - jest-environment-node@30.1.2: + jest-environment-node@30.2.0: dependencies: - '@jest/environment': 30.1.2 - '@jest/fake-timers': 30.1.2 - '@jest/types': 30.0.5 - '@types/node': 24.3.0 - jest-mock: 30.0.5 - jest-util: 30.0.5 - jest-validate: 30.1.0 + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 25.2.1 + jest-mock: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 jest-get-type@29.6.3: {} - jest-haste-map@30.1.0: + jest-haste-map@30.2.0: dependencies: - '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@jest/types': 30.2.0 + '@types/node': 25.2.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 jest-regex-util: 30.0.1 - jest-util: 30.0.5 - jest-worker: 30.1.0 + jest-util: 30.2.0 + jest-worker: 30.2.0 micromatch: 4.0.8 walker: 1.0.8 optionalDependencies: @@ -12048,10 +11429,10 @@ snapshots: uuid: 8.3.2 xml: 1.0.1 - jest-leak-detector@30.1.0: + jest-leak-detector@30.2.0: dependencies: '@jest/get-type': 30.1.0 - pretty-format: 30.0.5 + pretty-format: 30.2.0 jest-matcher-utils@30.0.5: dependencies: @@ -12060,28 +11441,16 @@ snapshots: jest-diff: 30.0.5 pretty-format: 30.0.5 - jest-matcher-utils@30.1.2: + jest-matcher-utils@30.2.0: dependencies: '@jest/get-type': 30.1.0 chalk: 4.1.2 - jest-diff: 30.1.2 - pretty-format: 30.0.5 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 + jest-diff: 30.2.0 + pretty-format: 30.2.0 jest-message-util@30.0.5: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.0 '@jest/types': 30.0.5 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -12091,77 +11460,51 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-message-util@30.1.0: + jest-message-util@30.2.0: dependencies: - '@babel/code-frame': 7.27.1 - '@jest/types': 30.0.5 + '@babel/code-frame': 7.29.0 + '@jest/types': 30.2.0 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.8 - pretty-format: 30.0.5 + pretty-format: 30.2.0 slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 24.3.0 - jest-util: 29.7.0 - jest-mock@30.0.5: dependencies: '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.2.1 jest-util: 30.0.5 - jest-pnp-resolver@1.2.3(jest-resolve@30.1.3): - optionalDependencies: - jest-resolve: 30.1.3 - - jest-preset-angular@14.6.0(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(canvas@3.0.0)(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(jsdom@26.1.0(canvas@3.0.0))(typescript@5.8.3): + jest-mock@30.2.0: dependencies: - '@angular/compiler-cli': 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser-dynamic': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))) - bs-logger: 0.2.6 - esbuild-wasm: 0.25.8 - jest: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) - jest-environment-jsdom: 29.7.0(canvas@3.0.0) - jest-util: 29.7.0 - pretty-format: 29.7.0 - ts-jest: 29.4.0(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(esbuild@0.25.9)(jest-util@29.7.0)(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(typescript@5.8.3) - typescript: 5.8.3 - optionalDependencies: - esbuild: 0.25.9 - jsdom: 26.1.0(canvas@3.0.0) - transitivePeerDependencies: - - '@babel/core' - - '@jest/transform' - - '@jest/types' - - babel-jest - - bufferutil - - canvas - - supports-color - - utf-8-validate + '@jest/types': 30.2.0 + '@types/node': 25.2.1 + jest-util: 30.2.0 - jest-preset-angular@15.0.0(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(canvas@3.0.0)(jest-environment-jsdom@30.1.2(canvas@3.0.0))(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(jsdom@26.1.0(canvas@3.0.0))(typescript@5.8.3): - dependencies: - '@angular/compiler-cli': 20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser-dynamic': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.2.4)(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))) - '@jest/environment-jsdom-abstract': 30.0.5(canvas@3.0.0)(jsdom@26.1.0(canvas@3.0.0)) - bs-logger: 0.2.6 - esbuild-wasm: 0.25.8 - jest: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) - jest-environment-jsdom: 30.1.2(canvas@3.0.0) - jest-util: 30.0.5 - jsdom: 26.1.0(canvas@3.0.0) - pretty-format: 30.0.5 - ts-jest: 29.4.0(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(esbuild@0.25.8)(jest-util@30.0.5)(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(typescript@5.8.3) - typescript: 5.8.3 + jest-pnp-resolver@1.2.3(jest-resolve@30.2.0): optionalDependencies: - esbuild: 0.25.8 + jest-resolve: 30.2.0 + + jest-preset-angular@16.0.0(971a0c6079454b11fc8a813370660bc6): + dependencies: + '@angular/compiler-cli': 21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/platform-browser': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)) + '@angular/platform-browser-dynamic': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@21.1.3)(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))) + '@jest/environment-jsdom-abstract': 30.2.0(canvas@3.0.0)(jsdom@26.1.0(canvas@3.0.0)) + bs-logger: 0.2.6 + esbuild-wasm: 0.27.0 + jest: 30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) + jest-util: 30.2.0 + jsdom: 26.1.0(canvas@3.0.0) + pretty-format: 30.2.0 + ts-jest: 29.4.5(@babel/core@7.29.0)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.29.0))(esbuild@0.27.0)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)))(typescript@5.9.3) + typescript: 5.9.3 + optionalDependencies: + esbuild: 0.27.0 transitivePeerDependencies: - '@babel/core' - '@jest/transform' @@ -12171,140 +11514,140 @@ snapshots: jest-regex-util@30.0.1: {} - jest-resolve-dependencies@30.1.3: + jest-resolve-dependencies@30.2.0: dependencies: jest-regex-util: 30.0.1 - jest-snapshot: 30.1.2 + jest-snapshot: 30.2.0 transitivePeerDependencies: - supports-color - jest-resolve@30.1.3: + jest-resolve@30.2.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 30.1.0 - jest-pnp-resolver: 1.2.3(jest-resolve@30.1.3) - jest-util: 30.0.5 - jest-validate: 30.1.0 + jest-haste-map: 30.2.0 + jest-pnp-resolver: 1.2.3(jest-resolve@30.2.0) + jest-util: 30.2.0 + jest-validate: 30.2.0 slash: 3.0.0 unrs-resolver: 1.11.1 - jest-runner@30.1.3: + jest-runner@30.2.0: dependencies: - '@jest/console': 30.1.2 - '@jest/environment': 30.1.2 - '@jest/test-result': 30.1.3 - '@jest/transform': 30.1.2 - '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@jest/console': 30.2.0 + '@jest/environment': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 25.2.1 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 graceful-fs: 4.2.11 - jest-docblock: 30.0.1 - jest-environment-node: 30.1.2 - jest-haste-map: 30.1.0 - jest-leak-detector: 30.1.0 - jest-message-util: 30.1.0 - jest-resolve: 30.1.3 - jest-runtime: 30.1.3 - jest-util: 30.0.5 - jest-watcher: 30.1.3 - jest-worker: 30.1.0 + jest-docblock: 30.2.0 + jest-environment-node: 30.2.0 + jest-haste-map: 30.2.0 + jest-leak-detector: 30.2.0 + jest-message-util: 30.2.0 + jest-resolve: 30.2.0 + jest-runtime: 30.2.0 + jest-util: 30.2.0 + jest-watcher: 30.2.0 + jest-worker: 30.2.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - jest-runtime@30.1.3: + jest-runtime@30.2.0: dependencies: - '@jest/environment': 30.1.2 - '@jest/fake-timers': 30.1.2 - '@jest/globals': 30.1.2 + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/globals': 30.2.0 '@jest/source-map': 30.0.1 - '@jest/test-result': 30.1.3 - '@jest/transform': 30.1.2 - '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 25.2.1 chalk: 4.1.2 cjs-module-lexer: 2.1.0 collect-v8-coverage: 1.0.2 glob: 10.4.5 graceful-fs: 4.2.11 - jest-haste-map: 30.1.0 - jest-message-util: 30.1.0 - jest-mock: 30.0.5 + jest-haste-map: 30.2.0 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 jest-regex-util: 30.0.1 - jest-resolve: 30.1.3 - jest-snapshot: 30.1.2 - jest-util: 30.0.5 + jest-resolve: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - jest-snapshot@30.1.2: + jest-snapshot@30.2.0: dependencies: - '@babel/core': 7.28.3 - '@babel/generator': 7.28.3 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.3) - '@babel/types': 7.28.2 - '@jest/expect-utils': 30.1.2 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.0 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0) + '@babel/types': 7.29.0 + '@jest/expect-utils': 30.2.0 '@jest/get-type': 30.1.0 - '@jest/snapshot-utils': 30.1.2 - '@jest/transform': 30.1.2 - '@jest/types': 30.0.5 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.3) + '@jest/snapshot-utils': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) chalk: 4.1.2 - expect: 30.1.2 + expect: 30.2.0 graceful-fs: 4.2.11 - jest-diff: 30.1.2 - jest-matcher-utils: 30.1.2 - jest-message-util: 30.1.0 - jest-util: 30.0.5 - pretty-format: 30.0.5 - semver: 7.7.2 + jest-diff: 30.2.0 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-util: 30.2.0 + pretty-format: 30.2.0 + semver: 7.7.3 synckit: 0.11.11 transitivePeerDependencies: - supports-color - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 24.3.0 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - jest-util@30.0.5: dependencies: '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@types/node': 25.2.1 chalk: 4.1.2 - ci-info: 4.3.0 + ci-info: 4.3.1 graceful-fs: 4.2.11 picomatch: 4.0.3 - jest-validate@30.1.0: + jest-util@30.2.0: + dependencies: + '@jest/types': 30.2.0 + '@types/node': 25.2.1 + chalk: 4.1.2 + ci-info: 4.3.1 + graceful-fs: 4.2.11 + picomatch: 4.0.3 + + jest-validate@30.2.0: dependencies: '@jest/get-type': 30.1.0 - '@jest/types': 30.0.5 + '@jest/types': 30.2.0 camelcase: 6.3.0 chalk: 4.1.2 leven: 3.1.0 - pretty-format: 30.0.5 + pretty-format: 30.2.0 - jest-watcher@30.1.3: + jest-watcher@30.2.0: dependencies: - '@jest/test-result': 30.1.3 - '@jest/types': 30.0.5 - '@types/node': 24.3.0 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 25.2.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 30.0.5 + jest-util: 30.2.0 string-length: 4.0.2 jest-websocket-mock@2.5.0: @@ -12314,24 +11657,24 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 merge-stream: 2.0.0 supports-color: 8.1.1 - jest-worker@30.1.0: + jest-worker@30.2.0: dependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 '@ungap/structured-clone': 1.3.0 - jest-util: 30.0.5 + jest-util: 30.2.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)): + jest@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)): dependencies: - '@jest/core': 30.1.3(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) - '@jest/types': 30.0.5 + '@jest/core': 30.2.0(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) + '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) + jest-cli: 30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -12339,54 +11682,21 @@ snapshots: - supports-color - ts-node - jiti@1.21.7: {} + jiti@2.6.1: {} + + jose@6.1.3: {} js-tokens@4.0.0: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 - jsdom@20.0.3(canvas@3.0.0): - dependencies: - abab: 2.0.6 - acorn: 8.15.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.6.0 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.0 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.21 - parse5: 7.3.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.18.3 - xml-name-validator: 4.0.0 - optionalDependencies: - canvas: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jsdom@26.1.0(canvas@3.0.0): dependencies: cssstyle: 4.6.0 @@ -12396,7 +11706,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.21 + nwsapi: 2.2.22 parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 @@ -12416,20 +11726,20 @@ snapshots: - supports-color - utf-8-validate - jsesc@3.0.2: {} - jsesc@3.1.0: {} json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@4.0.0: {} + json-parse-even-better-errors@5.0.0: {} json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} + json-schema-typed@8.0.2: {} + json-stable-stringify-without-jsonify@1.0.1: {} json5@2.2.3: {} @@ -12448,18 +11758,18 @@ snapshots: kind-of@6.0.3: {} - launch-editor@2.10.0: + launch-editor@2.12.0: dependencies: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.3.0(less@4.3.0)(webpack@5.99.8(esbuild@0.25.5)): + less-loader@12.3.0(less@4.4.2)(webpack@5.104.1(esbuild@0.27.2)): dependencies: - less: 4.3.0 + less: 4.4.2 optionalDependencies: - webpack: 5.99.8(esbuild@0.25.5) + webpack: 5.104.1(esbuild@0.27.2) - less@4.3.0: + less@4.4.2: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 @@ -12480,67 +11790,41 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.99.8(esbuild@0.25.5)): + license-webpack-plugin@4.0.2(webpack@5.104.1(esbuild@0.27.2)): dependencies: webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.99.8(esbuild@0.25.5) + webpack: 5.104.1(esbuild@0.27.2) lines-and-columns@1.2.4: {} - listr2@8.3.3: + listr2@9.0.5: dependencies: - cli-truncate: 4.0.0 + cli-truncate: 5.1.1 colorette: 2.0.20 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 log-update: 6.1.0 rfdc: 1.4.1 - wrap-ansi: 9.0.0 + wrap-ansi: 9.0.2 - listr2@9.0.1: + lmdb@3.4.4: dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.1.0 - rfdc: 1.4.1 - wrap-ansi: 9.0.0 - - lmdb@3.3.0: - dependencies: - msgpackr: 1.11.5 + msgpackr: 1.11.8 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.2.2 - ordered-binary: 1.6.0 + ordered-binary: 1.6.1 weak-lru-cache: 1.2.2 optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.3.0 - '@lmdb/lmdb-darwin-x64': 3.3.0 - '@lmdb/lmdb-linux-arm': 3.3.0 - '@lmdb/lmdb-linux-arm64': 3.3.0 - '@lmdb/lmdb-linux-x64': 3.3.0 - '@lmdb/lmdb-win32-arm64': 3.3.0 - '@lmdb/lmdb-win32-x64': 3.3.0 + '@lmdb/lmdb-darwin-arm64': 3.4.4 + '@lmdb/lmdb-darwin-x64': 3.4.4 + '@lmdb/lmdb-linux-arm': 3.4.4 + '@lmdb/lmdb-linux-arm64': 3.4.4 + '@lmdb/lmdb-linux-x64': 3.4.4 + '@lmdb/lmdb-win32-arm64': 3.4.4 + '@lmdb/lmdb-win32-x64': 3.4.4 optional: true - lmdb@3.4.2: - dependencies: - msgpackr: 1.11.5 - node-addon-api: 6.1.0 - node-gyp-build-optional-packages: 5.2.2 - ordered-binary: 1.6.0 - weak-lru-cache: 1.2.2 - optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.4.2 - '@lmdb/lmdb-darwin-x64': 3.4.2 - '@lmdb/lmdb-linux-arm': 3.4.2 - '@lmdb/lmdb-linux-arm64': 3.4.2 - '@lmdb/lmdb-linux-x64': 3.4.2 - '@lmdb/lmdb-win32-arm64': 3.4.2 - '@lmdb/lmdb-win32-x64': 3.4.2 - optional: true - - loader-runner@4.3.0: {} + loader-runner@4.3.1: {} loader-utils@2.0.4: dependencies: @@ -12566,30 +11850,30 @@ snapshots: lodash.merge@4.6.2: {} - lodash@4.17.21: {} + lodash@4.17.23: {} - log-symbols@6.0.0: + log-symbols@7.0.1: dependencies: - chalk: 5.6.0 - is-unicode-supported: 1.3.0 + is-unicode-supported: 2.1.0 + yoctocolors: 2.1.2 log-update@6.1.0: dependencies: - ansi-escapes: 7.0.0 + ansi-escapes: 7.2.0 cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 lru-cache@10.4.3: {} - lru-cache@11.2.1: {} + lru-cache@11.2.5: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 - magic-string@0.30.17: + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -12601,23 +11885,23 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: {} - make-fetch-happen@14.0.3: + make-fetch-happen@15.0.3: dependencies: - '@npmcli/agent': 3.0.0 - cacache: 19.0.1 + '@npmcli/agent': 4.0.0 + cacache: 20.0.3 http-cache-semantics: 4.2.0 minipass: 7.1.2 - minipass-fetch: 4.0.1 + minipass-fetch: 5.0.0 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 1.0.0 - proc-log: 5.0.0 + proc-log: 6.1.0 promise-retry: 2.0.1 - ssri: 12.0.0 + ssri: 13.0.0 transitivePeerDependencies: - supports-color @@ -12633,11 +11917,21 @@ snapshots: media-typer@1.1.0: {} - memfs@4.17.2: + memfs@4.56.10(tslib@2.8.1): dependencies: - '@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.6.0(tslib@2.8.1) - tree-dump: 1.0.3(tslib@2.8.1) + '@jsonjoy.com/fs-core': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.10(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 merge-descriptors@1.0.3: {} @@ -12646,8 +11940,6 @@ snapshots: merge-stream@2.0.0: {} - merge2@1.4.1: {} - methods@1.1.2: {} micromatch@4.0.8: @@ -12665,7 +11957,7 @@ snapshots: dependencies: mime-db: 1.52.0 - mime-types@3.0.1: + mime-types@3.0.2: dependencies: mime-db: 1.54.0 @@ -12681,15 +11973,15 @@ snapshots: mimic-response@3.1.0: optional: true - mini-css-extract-plugin@2.9.2(webpack@5.99.8(esbuild@0.25.5)): + mini-css-extract-plugin@2.9.4(webpack@5.104.1(esbuild@0.27.2)): dependencies: - schema-utils: 4.3.2 - tapable: 2.2.3 - webpack: 5.99.8(esbuild@0.25.5) + schema-utils: 4.3.3 + tapable: 2.3.0 + webpack: 5.104.1(esbuild@0.27.2) minimalistic-assert@1.0.1: {} - minimatch@10.0.3: + minimatch@10.1.1: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -12697,10 +11989,6 @@ snapshots: dependencies: brace-expansion: 1.1.12 - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.2 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 @@ -12711,11 +11999,11 @@ snapshots: dependencies: minipass: 7.1.2 - minipass-fetch@4.0.1: + minipass-fetch@5.0.0: dependencies: minipass: 7.1.2 minipass-sized: 1.0.3 - minizlib: 3.0.2 + minizlib: 3.1.0 optionalDependencies: encoding: 0.1.13 @@ -12735,16 +12023,9 @@ snapshots: dependencies: yallist: 4.0.0 - minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - minizlib@3.0.2: + minizlib@3.1.0: dependencies: minipass: 7.1.2 @@ -12753,8 +12034,6 @@ snapshots: mkdirp@1.0.4: {} - mkdirp@3.0.1: {} - mock-socket@9.3.1: {} mrmime@2.0.1: {} @@ -12775,7 +12054,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.5: + msgpackr@1.11.8: optionalDependencies: msgpackr-extract: 3.0.3 optional: true @@ -12792,14 +12071,14 @@ snapshots: napi-build-utils@1.0.2: optional: true - napi-postinstall@0.3.2: {} + napi-postinstall@0.3.3: {} natural-compare@1.4.0: {} needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.4.1 + sax: 1.4.4 optional: true negotiator@0.6.3: {} @@ -12810,51 +12089,46 @@ snapshots: neo-async@2.6.2: {} - ng2-pdf-viewer@10.4.0: + ngx-bootstrap-icons@1.9.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)): dependencies: - pdfjs-dist: 4.8.69 + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - ngx-bootstrap-icons@1.9.3(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)): + ngx-color@10.1.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)): dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - tslib: 2.8.1 - - ngx-color@10.0.0(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)): - dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@ctrl/tinycolor': 4.1.0 + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@ctrl/tinycolor': 4.2.0 material-colors: 1.2.6 tslib: 2.8.1 - ngx-cookie-service@20.1.0(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)): + ngx-cookie-service@21.1.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)): dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - ngx-device-detector@10.1.0(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)): + ngx-device-detector@11.0.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)): dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) tslib: 2.8.1 - ngx-ui-tour-core@15.0.0(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/router@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(rxjs@7.8.2): + ngx-ui-tour-core@16.0.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/router@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))(rxjs@7.8.2): dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/router': 20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@angular/router': 21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) rxjs: 7.8.2 tslib: 2.8.1 - ngx-ui-tour-ng-bootstrap@17.0.1(93ea0959b395ae2295f4e6a313c818c9): + ngx-ui-tour-ng-bootstrap@18.0.0(2a89effa12f6df8cde064aa7713e7e29): dependencies: - '@angular/common': 20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1) - '@ng-bootstrap/ng-bootstrap': 19.0.1(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/localize@20.2.4(@angular/compiler-cli@20.2.4(@angular/compiler@20.2.4)(typescript@5.8.3))(@angular/compiler@20.2.4))(@popperjs/core@2.11.8)(rxjs@7.8.2) - ngx-ui-tour-core: 15.0.0(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/router@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.2.4(@angular/common@20.2.4(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.2.4(@angular/compiler@20.2.4)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/common': 21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2) + '@angular/core': 21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0) + '@ng-bootstrap/ng-bootstrap': 20.0.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/forms@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))(@angular/localize@21.1.3(@angular/compiler-cli@21.1.3(@angular/compiler@21.1.3)(typescript@5.9.3))(@angular/compiler@21.1.3))(@popperjs/core@2.11.8)(rxjs@7.8.2) + ngx-ui-tour-core: 16.0.0(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/router@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@21.1.3(@angular/common@21.1.3(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@21.1.3(@angular/compiler@21.1.3)(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2))(rxjs@7.8.2) tslib: 2.8.1 transitivePeerDependencies: - '@angular/router' @@ -12862,7 +12136,7 @@ snapshots: node-abi@3.71.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 optional: true node-addon-api@6.1.0: @@ -12871,85 +12145,80 @@ snapshots: node-addon-api@7.1.1: optional: true - node-forge@1.3.1: {} + node-forge@1.3.3: {} node-gyp-build-optional-packages@5.2.2: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 optional: true - node-gyp@11.4.2: + node-gyp@12.2.0: dependencies: env-paths: 2.2.1 - exponential-backoff: 3.1.2 + exponential-backoff: 3.1.3 graceful-fs: 4.2.11 - make-fetch-happen: 14.0.3 - nopt: 8.1.0 - proc-log: 5.0.0 - semver: 7.7.2 - tar: 7.4.3 - tinyglobby: 0.2.14 - which: 5.0.0 + make-fetch-happen: 15.0.3 + nopt: 9.0.0 + proc-log: 6.1.0 + semver: 7.7.3 + tar: 7.5.7 + tinyglobby: 0.2.15 + which: 6.0.0 transitivePeerDependencies: - supports-color node-int64@0.4.0: {} - node-releases@2.0.19: {} + node-readable-to-web-readable-stream@0.4.2: + optional: true - nopt@8.1.0: + node-releases@2.0.27: {} + + nopt@9.0.0: dependencies: - abbrev: 3.0.1 + abbrev: 4.0.0 normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - - npm-bundled@4.0.0: + npm-bundled@5.0.0: dependencies: - npm-normalize-package-bin: 4.0.0 + npm-normalize-package-bin: 5.0.0 - npm-install-checks@7.1.2: + npm-install-checks@8.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 - npm-normalize-package-bin@4.0.0: {} + npm-normalize-package-bin@5.0.0: {} - npm-package-arg@12.0.2: + npm-package-arg@13.0.2: dependencies: - hosted-git-info: 8.1.0 - proc-log: 5.0.0 - semver: 7.7.2 - validate-npm-package-name: 6.0.2 + hosted-git-info: 9.0.2 + proc-log: 6.1.0 + semver: 7.7.3 + validate-npm-package-name: 7.0.2 - npm-package-arg@13.0.0: - dependencies: - hosted-git-info: 9.0.0 - proc-log: 5.0.0 - semver: 7.7.2 - validate-npm-package-name: 6.0.2 - - npm-packlist@10.0.1: + npm-packlist@10.0.3: dependencies: ignore-walk: 8.0.0 + proc-log: 6.1.0 - npm-pick-manifest@10.0.0: + npm-pick-manifest@11.0.3: dependencies: - npm-install-checks: 7.1.2 - npm-normalize-package-bin: 4.0.0 - npm-package-arg: 12.0.2 - semver: 7.7.2 + npm-install-checks: 8.0.0 + npm-normalize-package-bin: 5.0.0 + npm-package-arg: 13.0.2 + semver: 7.7.3 - npm-registry-fetch@18.0.2: + npm-registry-fetch@19.1.1: dependencies: - '@npmcli/redact': 3.2.2 + '@npmcli/redact': 4.0.0 jsonparse: 1.3.1 - make-fetch-happen: 14.0.3 + make-fetch-happen: 15.0.3 minipass: 7.1.2 - minipass-fetch: 4.0.1 - minizlib: 3.0.2 - npm-package-arg: 12.0.2 - proc-log: 5.0.0 + minipass-fetch: 5.0.0 + minizlib: 3.1.0 + npm-package-arg: 13.0.2 + proc-log: 6.1.0 transitivePeerDependencies: - supports-color @@ -12961,7 +12230,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nwsapi@2.2.21: {} + nwsapi@2.2.22: {} object-assign@4.1.1: {} @@ -12973,7 +12242,7 @@ snapshots: dependencies: ee-first: 1.1.1 - on-headers@1.0.2: {} + on-headers@1.1.0: {} once@1.4.0: dependencies: @@ -12987,12 +12256,21 @@ snapshots: dependencies: mimic-function: 5.0.1 - open@10.1.2: + open@10.2.0: dependencies: - default-browser: 5.2.1 + default-browser: 5.4.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 - is-wsl: 3.1.0 + wsl-utils: 0.1.0 + + open@11.0.0: + dependencies: + default-browser: 5.4.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 optionator@0.9.4: dependencies: @@ -13003,19 +12281,19 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@8.2.0: + ora@9.0.0: dependencies: - chalk: 5.6.0 + chalk: 5.6.2 cli-cursor: 5.0.0 - cli-spinners: 2.9.2 + cli-spinners: 3.4.0 is-interactive: 2.0.0 is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 + log-symbols: 7.0.1 stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.0 + string-width: 8.1.1 + strip-ansi: 7.1.2 - ordered-binary@1.6.0: + ordered-binary@1.6.1: optional: true p-limit@2.3.0: @@ -13034,37 +12312,37 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.3: {} + p-map@7.0.4: {} p-retry@6.2.1: dependencies: '@types/retry': 0.12.2 - is-network-error: 1.1.0 + is-network-error: 1.3.0 retry: 0.13.1 p-try@2.2.0: {} package-json-from-dist@1.0.1: {} - pacote@21.0.0: + pacote@21.0.4: dependencies: - '@npmcli/git': 6.0.3 - '@npmcli/installed-package-contents': 3.0.0 - '@npmcli/package-json': 6.2.0 - '@npmcli/promise-spawn': 8.0.3 - '@npmcli/run-script': 9.1.0 - cacache: 19.0.1 + '@npmcli/git': 7.0.1 + '@npmcli/installed-package-contents': 4.0.0 + '@npmcli/package-json': 7.0.4 + '@npmcli/promise-spawn': 9.0.1 + '@npmcli/run-script': 10.0.3 + cacache: 20.0.3 fs-minipass: 3.0.3 minipass: 7.1.2 - npm-package-arg: 12.0.2 - npm-packlist: 10.0.1 - npm-pick-manifest: 10.0.0 - npm-registry-fetch: 18.0.2 - proc-log: 5.0.0 + npm-package-arg: 13.0.2 + npm-packlist: 10.0.3 + npm-pick-manifest: 11.0.3 + npm-registry-fetch: 19.1.1 + proc-log: 6.1.0 promise-retry: 2.0.1 - sigstore: 3.1.0 - ssri: 12.0.0 - tar: 6.2.1 + sigstore: 4.1.0 + ssri: 13.0.0 + tar: 7.5.7 transitivePeerDependencies: - supports-color @@ -13076,29 +12354,19 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-node-version@1.0.1: {} - parse5-html-rewriting-stream@7.1.0: - dependencies: - entities: 6.0.1 - parse5: 7.3.0 - parse5-sax-parser: 7.0.0 - parse5-html-rewriting-stream@8.0.0: dependencies: entities: 6.0.1 parse5: 8.0.0 parse5-sax-parser: 8.0.0 - parse5-sax-parser@7.0.0: - dependencies: - parse5: 7.3.0 - parse5-sax-parser@8.0.0: dependencies: parse5: 8.0.0 @@ -13126,24 +12394,24 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.1: + dependencies: + lru-cache: 11.2.5 + minipass: 7.1.2 + path-to-regexp@0.1.12: {} path-to-regexp@8.3.0: {} - path2d@0.2.2: - optional: true - - pdfjs-dist@4.8.69: + pdfjs-dist@5.4.624: optionalDependencies: - canvas: 3.0.0 - path2d: 0.2.2 + '@napi-rs/canvas': 0.1.90 + node-readable-to-web-readable-stream: 0.4.2 picocolors@1.1.1: {} picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} pify@4.0.1: @@ -13151,84 +12419,76 @@ snapshots: pirates@4.0.7: {} - piscina@5.1.1: + piscina@5.1.4: optionalDependencies: '@napi-rs/nice': 1.1.1 - piscina@5.1.3: - optionalDependencies: - '@napi-rs/nice': 1.1.1 - - pkce-challenge@5.0.0: {} + pkce-challenge@5.0.1: {} pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - playwright-core@1.55.0: {} + playwright-core@1.58.2: {} - playwright@1.55.0: + playwright@1.58.2: dependencies: - playwright-core: 1.55.0 + playwright-core: 1.58.2 optionalDependencies: fsevents: 2.3.2 - postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.5)): + postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1(esbuild@0.27.2)): dependencies: - cosmiconfig: 9.0.0(typescript@5.8.3) - jiti: 1.21.7 - postcss: 8.5.3 - semver: 7.7.2 + cosmiconfig: 9.0.0(typescript@5.9.3) + jiti: 2.6.1 + postcss: 8.5.6 + semver: 7.7.3 optionalDependencies: - webpack: 5.99.8(esbuild@0.25.5) + webpack: 5.104.1(esbuild@0.27.2) transitivePeerDependencies: - typescript postcss-media-query-parser@0.2.3: {} - postcss-modules-extract-imports@3.1.0(postcss@8.5.3): + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-modules-local-by-default@4.2.0(postcss@8.5.3): + postcss-modules-local-by-default@4.2.0(postcss@8.5.6): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-selector-parser: 7.1.0 + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.3): + postcss-modules-scope@3.2.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.1.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.1 - postcss-modules-values@4.0.0(postcss@8.5.3): + postcss-modules-values@4.0.0(postcss@8.5.6): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 postcss-value-parser@4.2.0: {} - postcss@8.5.3: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.6: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + powershell-utils@0.1.0: {} + prebuild-install@7.1.2: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 @@ -13244,10 +12504,10 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-organize-imports@4.2.0(prettier@3.4.2)(typescript@5.8.3): + prettier-plugin-organize-imports@4.3.0(prettier@3.4.2)(typescript@5.9.3): dependencies: prettier: 3.4.2 - typescript: 5.8.3 + typescript: 5.9.3 prettier@3.4.2: {} @@ -13263,7 +12523,13 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - proc-log@5.0.0: {} + pretty-format@30.2.0: + dependencies: + '@jest/schemas': 30.0.5 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + proc-log@6.1.0: {} process-nextick-args@2.0.1: {} @@ -13280,8 +12546,6 @@ snapshots: prr@1.0.1: optional: true - psl@1.9.0: {} - pump@3.0.2: dependencies: end-of-stream: 1.4.4 @@ -13292,36 +12556,28 @@ snapshots: pure-rand@7.0.1: {} - qs@6.13.0: + qs@6.14.1: dependencies: side-channel: 1.1.0 - qs@6.14.0: - dependencies: - side-channel: 1.1.0 - - querystringify@2.2.0: {} - - queue-microtask@1.2.3: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 range-parser@1.2.1: {} - raw-body@2.5.2: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-body@3.0.0: + raw-body@3.0.2: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.6.3 + http-errors: 2.0.1 + iconv-lite: 0.7.2 unpipe: 1.0.0 rc@1.2.8: @@ -13356,9 +12612,11 @@ snapshots: readdirp@4.1.2: {} + readdirp@5.0.0: {} + reflect-metadata@0.2.2: {} - regenerate-unicode-properties@10.2.0: + regenerate-unicode-properties@10.2.2: dependencies: regenerate: 1.4.2 @@ -13366,20 +12624,20 @@ snapshots: regex-parser@2.3.1: {} - regexpu-core@6.2.0: + regexpu-core@6.4.0: dependencies: regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 + regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 - regjsparser: 0.12.0 + regjsparser: 0.13.0 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 + unicode-match-property-value-ecmascript: 2.2.1 regjsgen@0.8.0: {} - regjsparser@0.12.0: + regjsparser@0.13.0: dependencies: - jsesc: 3.0.2 + jsesc: 3.1.0 require-directory@2.1.1: {} @@ -13400,10 +12658,10 @@ snapshots: adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.9.0 loader-utils: 2.0.4 - postcss: 8.5.3 + postcss: 8.5.6 source-map: 0.6.1 - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 @@ -13418,88 +12676,61 @@ snapshots: retry@0.13.1: {} - reusify@1.1.0: {} - rfdc@1.4.1: {} - rolldown@1.0.0-beta.32: + rolldown@1.0.0-beta.58: dependencies: - '@oxc-project/runtime': 0.81.0 - '@oxc-project/types': 0.81.0 - '@rolldown/pluginutils': 1.0.0-beta.32 - ansis: 4.1.0 + '@oxc-project/types': 0.106.0 + '@rolldown/pluginutils': 1.0.0-beta.58 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.32 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.32 - '@rolldown/binding-darwin-x64': 1.0.0-beta.32 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.32 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.32 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.32 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.32 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.32 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.32 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.32 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.32 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.32 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.32 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.32 + '@rolldown/binding-android-arm64': 1.0.0-beta.58 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.58 + '@rolldown/binding-darwin-x64': 1.0.0-beta.58 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.58 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.58 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.58 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.58 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.58 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.58 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.58 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.58 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.58 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.58 - rollup@4.40.2: - dependencies: - '@types/estree': 1.0.7 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.2 - '@rollup/rollup-android-arm64': 4.40.2 - '@rollup/rollup-darwin-arm64': 4.40.2 - '@rollup/rollup-darwin-x64': 4.40.2 - '@rollup/rollup-freebsd-arm64': 4.40.2 - '@rollup/rollup-freebsd-x64': 4.40.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 - '@rollup/rollup-linux-arm-musleabihf': 4.40.2 - '@rollup/rollup-linux-arm64-gnu': 4.40.2 - '@rollup/rollup-linux-arm64-musl': 4.40.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 - '@rollup/rollup-linux-riscv64-gnu': 4.40.2 - '@rollup/rollup-linux-riscv64-musl': 4.40.2 - '@rollup/rollup-linux-s390x-gnu': 4.40.2 - '@rollup/rollup-linux-x64-gnu': 4.40.2 - '@rollup/rollup-linux-x64-musl': 4.40.2 - '@rollup/rollup-win32-arm64-msvc': 4.40.2 - '@rollup/rollup-win32-ia32-msvc': 4.40.2 - '@rollup/rollup-win32-x64-msvc': 4.40.2 - fsevents: 2.3.3 - - rollup@4.50.0: + rollup@4.57.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.50.0 - '@rollup/rollup-android-arm64': 4.50.0 - '@rollup/rollup-darwin-arm64': 4.50.0 - '@rollup/rollup-darwin-x64': 4.50.0 - '@rollup/rollup-freebsd-arm64': 4.50.0 - '@rollup/rollup-freebsd-x64': 4.50.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.50.0 - '@rollup/rollup-linux-arm-musleabihf': 4.50.0 - '@rollup/rollup-linux-arm64-gnu': 4.50.0 - '@rollup/rollup-linux-arm64-musl': 4.50.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.50.0 - '@rollup/rollup-linux-ppc64-gnu': 4.50.0 - '@rollup/rollup-linux-riscv64-gnu': 4.50.0 - '@rollup/rollup-linux-riscv64-musl': 4.50.0 - '@rollup/rollup-linux-s390x-gnu': 4.50.0 - '@rollup/rollup-linux-x64-gnu': 4.50.0 - '@rollup/rollup-linux-x64-musl': 4.50.0 - '@rollup/rollup-openharmony-arm64': 4.50.0 - '@rollup/rollup-win32-arm64-msvc': 4.50.0 - '@rollup/rollup-win32-ia32-msvc': 4.50.0 - '@rollup/rollup-win32-x64-msvc': 4.50.0 + '@rollup/rollup-android-arm-eabi': 4.57.1 + '@rollup/rollup-android-arm64': 4.57.1 + '@rollup/rollup-darwin-arm64': 4.57.1 + '@rollup/rollup-darwin-x64': 4.57.1 + '@rollup/rollup-freebsd-arm64': 4.57.1 + '@rollup/rollup-freebsd-x64': 4.57.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.1 + '@rollup/rollup-linux-arm-musleabihf': 4.57.1 + '@rollup/rollup-linux-arm64-gnu': 4.57.1 + '@rollup/rollup-linux-arm64-musl': 4.57.1 + '@rollup/rollup-linux-loong64-gnu': 4.57.1 + '@rollup/rollup-linux-loong64-musl': 4.57.1 + '@rollup/rollup-linux-ppc64-gnu': 4.57.1 + '@rollup/rollup-linux-ppc64-musl': 4.57.1 + '@rollup/rollup-linux-riscv64-gnu': 4.57.1 + '@rollup/rollup-linux-riscv64-musl': 4.57.1 + '@rollup/rollup-linux-s390x-gnu': 4.57.1 + '@rollup/rollup-linux-x64-gnu': 4.57.1 + '@rollup/rollup-linux-x64-musl': 4.57.1 + '@rollup/rollup-openbsd-x64': 4.57.1 + '@rollup/rollup-openharmony-arm64': 4.57.1 + '@rollup/rollup-win32-arm64-msvc': 4.57.1 + '@rollup/rollup-win32-ia32-msvc': 4.57.1 + '@rollup/rollup-win32-x64-gnu': 4.57.1 + '@rollup/rollup-win32-x64-msvc': 4.57.1 fsevents: 2.3.3 router@2.2.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -13509,11 +12740,7 @@ snapshots: rrweb-cssom@0.8.0: {} - run-applescript@7.0.0: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 + run-applescript@7.1.0: {} rxjs@7.8.2: dependencies: @@ -13525,37 +12752,29 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.5)): + sass-loader@16.0.6(sass@1.97.1)(webpack@5.104.1(esbuild@0.27.2)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.88.0 - webpack: 5.99.8(esbuild@0.25.5) + sass: 1.97.1 + webpack: 5.104.1(esbuild@0.27.2) - sass@1.88.0: + sass@1.97.1: dependencies: chokidar: 4.0.3 - immutable: 5.1.3 + immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.1 + '@parcel/watcher': 2.5.6 - sass@1.90.0: - dependencies: - chokidar: 4.0.3 - immutable: 5.1.3 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.5.1 - - sax@1.4.1: + sax@1.4.4: optional: true saxes@6.0.0: dependencies: xmlchars: 2.2.0 - schema-utils@4.3.2: + schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -13566,43 +12785,43 @@ snapshots: selfsigned@2.4.1: dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 + '@types/node-forge': 1.3.14 + node-forge: 1.3.3 semver@5.7.2: optional: true semver@6.3.1: {} - semver@7.7.2: {} + semver@7.7.3: {} - send@0.19.0: + send@0.19.2: dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color - send@1.2.0: + send@1.2.1: dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 2.0.0 - http-errors: 2.0.0 - mime-types: 3.0.1 + http-errors: 2.0.1 + mime-types: 3.0.2 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 @@ -13614,38 +12833,36 @@ snapshots: dependencies: randombytes: 2.1.0 - serve-index@1.9.1: + serve-index@1.9.2: dependencies: accepts: 1.3.8 batch: 0.6.1 debug: 2.6.9 escape-html: 1.0.3 - http-errors: 1.6.3 + http-errors: 1.8.1 mime-types: 2.1.35 parseurl: 1.3.3 transitivePeerDependencies: - supports-color - serve-static@1.16.2: + serve-static@1.16.3: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.0 + send: 0.19.2 transitivePeerDependencies: - supports-color - serve-static@2.2.0: + serve-static@2.2.1: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 1.2.0 + send: 1.2.1 transitivePeerDependencies: - supports-color - setprototypeof@1.1.0: {} - setprototypeof@1.2.0: {} shallow-clone@3.0.1: @@ -13692,14 +12909,14 @@ snapshots: signal-exit@4.1.0: {} - sigstore@3.1.0: + sigstore@4.1.0: dependencies: - '@sigstore/bundle': 3.1.0 - '@sigstore/core': 2.0.0 - '@sigstore/protobuf-specs': 0.4.3 - '@sigstore/sign': 3.1.0 - '@sigstore/tuf': 3.1.1 - '@sigstore/verify': 2.1.1 + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.1.0 + '@sigstore/protobuf-specs': 0.5.0 + '@sigstore/sign': 4.1.0 + '@sigstore/tuf': 4.0.1 + '@sigstore/verify': 3.1.0 transitivePeerDependencies: - supports-color @@ -13722,14 +12939,9 @@ snapshots: slash@3.0.0: {} - slice-ansi@5.0.0: + slice-ansi@7.1.2: dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - - slice-ansi@7.1.0: - dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 smart-buffer@4.2.0: {} @@ -13743,23 +12955,23 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 socks: 2.8.7 transitivePeerDependencies: - supports-color socks@2.8.7: dependencies: - ip-address: 10.0.1 + ip-address: 10.1.0 smart-buffer: 4.2.0 source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.99.8(esbuild@0.25.5)): + source-map-loader@5.0.0(webpack@5.104.1(esbuild@0.27.2)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.99.8(esbuild@0.25.5) + webpack: 5.104.1(esbuild@0.27.2) source-map-support@0.5.13: dependencies: @@ -13773,8 +12985,6 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: {} - source-map@0.7.6: {} spdx-correct@3.2.0: @@ -13793,7 +13003,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.4.1 + debug: 4.4.3 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -13804,7 +13014,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.3 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -13814,7 +13024,7 @@ snapshots: sprintf-js@1.0.3: {} - ssri@12.0.0: + ssri@13.0.0: dependencies: minipass: 7.1.2 @@ -13824,8 +13034,6 @@ snapshots: statuses@1.5.0: {} - statuses@2.0.1: {} - statuses@2.0.2: {} stdin-discarder@0.2.2: {} @@ -13845,13 +13053,18 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string-width@7.2.0: dependencies: - emoji-regex: 10.5.0 - get-east-asian-width: 1.3.1 - strip-ansi: 7.1.0 + emoji-regex: 10.6.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + + string-width@8.1.1: + dependencies: + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 string_decoder@1.1.1: dependencies: @@ -13865,9 +13078,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.2.0 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -13896,7 +13109,7 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - tapable@2.2.3: {} + tapable@2.3.0: {} tar-fs@2.1.1: dependencies: @@ -13915,52 +13128,42 @@ snapshots: readable-stream: 3.6.2 optional: true - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - tar@7.4.3: + tar@7.5.7: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 + minizlib: 3.1.0 yallist: 5.0.0 - terser-webpack-plugin@5.3.14(esbuild@0.25.5)(webpack@5.99.8(esbuild@0.25.5)): + terser-webpack-plugin@5.3.16(esbuild@0.27.2)(webpack@5.104.1(esbuild@0.27.2)): dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.44.0 - webpack: 5.99.8(esbuild@0.25.5) + terser: 5.46.0 + webpack: 5.104.1(esbuild@0.27.2) optionalDependencies: - esbuild: 0.25.5 + esbuild: 0.27.2 - terser-webpack-plugin@5.3.14(webpack@5.101.3): + terser-webpack-plugin@5.3.16(webpack@5.105.0): dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.44.0 - webpack: 5.101.3 + terser: 5.46.0 + webpack: 5.105.0 - terser@5.39.1: + terser@5.44.1: dependencies: - '@jridgewell/source-map': 0.3.6 + '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 - terser@5.44.0: + terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -13973,18 +13176,13 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 - thingies@1.21.0(tslib@2.8.1): + thingies@2.5.0(tslib@2.8.1): dependencies: tslib: 2.8.1 thunky@1.1.0: {} - tinyglobby@0.2.13: - dependencies: - fdir: 6.5.0(picomatch@4.0.2) - picomatch: 4.0.2 - - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 @@ -14003,92 +13201,60 @@ snapshots: toidentifier@1.0.1: {} - tough-cookie@4.1.4: - dependencies: - psl: 1.9.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - tough-cookie@5.1.2: dependencies: tldts: 6.1.86 - tr46@3.0.0: - dependencies: - punycode: 2.3.1 - tr46@5.1.1: dependencies: punycode: 2.3.1 - tree-dump@1.0.3(tslib@2.8.1): + tree-dump@1.1.0(tslib@2.8.1): dependencies: tslib: 2.8.1 tree-kill@1.2.2: {} - ts-api-utils@2.1.0(typescript@5.8.3): + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: - typescript: 5.8.3 + typescript: 5.9.3 - ts-jest@29.4.0(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(esbuild@0.25.8)(jest-util@30.0.5)(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.4.5(@babel/core@7.29.0)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.29.0))(esbuild@0.27.0)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 - ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) + handlebars: 4.7.8 + jest: 30.2.0(@types/node@25.2.1)(ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.7.2 + semver: 7.7.3 type-fest: 4.41.0 - typescript: 5.8.3 + typescript: 5.9.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.28.3 - '@jest/transform': 30.1.2 - '@jest/types': 30.0.5 - babel-jest: 30.1.2(@babel/core@7.28.3) - esbuild: 0.25.8 - jest-util: 30.0.5 + '@babel/core': 7.29.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + babel-jest: 30.2.0(@babel/core@7.29.0) + esbuild: 0.27.0 + jest-util: 30.2.0 - ts-jest@29.4.0(@babel/core@7.28.3)(@jest/transform@30.1.2)(@jest/types@30.0.5)(babel-jest@30.1.2(@babel/core@7.28.3))(esbuild@0.25.9)(jest-util@29.7.0)(jest@30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)))(typescript@5.8.3): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 30.1.3(@types/node@24.3.0)(ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3)) - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.2 - type-fest: 4.41.0 - typescript: 5.8.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.28.3 - '@jest/transform': 30.1.2 - '@jest/types': 30.0.5 - babel-jest: 30.1.2(@babel/core@7.28.3) - esbuild: 0.25.9 - jest-util: 29.7.0 - - ts-node@10.9.2(@types/node@24.3.0)(typescript@5.8.3): + ts-node@10.9.2(@types/node@25.2.1)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.3.0 + '@types/node': 25.2.1 acorn: 8.14.0 acorn-walk: 8.3.1 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.8.3 + typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -14100,11 +13266,11 @@ snapshots: tslib@2.8.1: {} - tuf-js@3.1.0: + tuf-js@4.1.0: dependencies: - '@tufjs/models': 3.0.1 - debug: 4.4.1 - make-fetch-happen: 14.0.3 + '@tufjs/models': 4.1.0 + debug: 4.4.3 + make-fetch-happen: 15.0.3 transitivePeerDependencies: - supports-color @@ -14134,41 +13300,46 @@ snapshots: dependencies: content-type: 1.0.5 media-typer: 1.1.0 - mime-types: 3.0.1 + mime-types: 3.0.2 typed-assert@1.0.9: {} - typescript@5.8.3: {} + typescript@5.9.3: {} - undici-types@7.10.0: {} + uglify-js@3.19.3: + optional: true + + undici-types@7.16.0: {} undici@5.29.0: dependencies: '@fastify/busboy': 2.1.1 + undici@7.18.2: {} + + undici@7.20.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 + unicode-property-aliases-ecmascript: 2.2.0 - unicode-match-property-value-ecmascript@2.2.0: {} + unicode-match-property-value-ecmascript@2.2.1: {} - unicode-property-aliases-ecmascript@2.1.0: {} + unicode-property-aliases-ecmascript@2.2.0: {} - unique-filename@4.0.0: + unique-filename@5.0.0: dependencies: - unique-slug: 5.0.0 + unique-slug: 6.0.0 - unique-slug@5.0.0: + unique-slug@6.0.0: dependencies: imurmurhash: 0.1.4 universal-user-agent@6.0.1: {} - universalify@0.2.0: {} - unpipe@1.0.0: {} unplugin@1.16.1: @@ -14178,7 +13349,7 @@ snapshots: unrs-resolver@1.11.1: dependencies: - napi-postinstall: 0.3.2 + napi-postinstall: 0.3.3 optionalDependencies: '@unrs/resolver-binding-android-arm-eabi': 1.11.1 '@unrs/resolver-binding-android-arm64': 1.11.1 @@ -14200,9 +13371,9 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - update-browserslist-db@1.1.3(browserslist@4.25.4): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.25.4 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -14210,11 +13381,6 @@ snapshots: dependencies: punycode: 2.3.1 - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - utif@3.1.0: dependencies: pako: 1.0.11 @@ -14223,7 +13389,7 @@ snapshots: utils-merge@1.0.1: {} - uuid@11.1.0: {} + uuid@13.0.0: {} uuid@8.3.2: {} @@ -14231,7 +13397,7 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 @@ -14240,48 +13406,27 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@6.0.2: {} + validate-npm-package-name@7.0.2: {} vary@1.1.2: {} - vite@6.3.5(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0): + vite@7.3.0(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(yaml@2.7.0): dependencies: - esbuild: 0.25.5 - fdir: 6.5.0(picomatch@4.0.2) - picomatch: 4.0.2 - postcss: 8.5.3 - rollup: 4.40.2 - tinyglobby: 0.2.13 - optionalDependencies: - '@types/node': 24.3.0 - fsevents: 2.3.3 - jiti: 1.21.7 - less: 4.3.0 - sass: 1.88.0 - terser: 5.39.1 - yaml: 2.7.0 - - vite@7.1.2(@types/node@24.3.0)(jiti@1.21.7)(less@4.3.0)(sass@1.90.0)(terser@5.39.1)(yaml@2.7.0): - dependencies: - esbuild: 0.25.9 + esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.50.0 - tinyglobby: 0.2.14 + rollup: 4.57.1 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.3.0 + '@types/node': 25.2.1 fsevents: 2.3.3 - jiti: 1.21.7 - less: 4.3.0 - sass: 1.90.0 - terser: 5.39.1 + jiti: 2.6.1 + less: 4.4.2 + sass: 1.97.1 + terser: 5.44.1 yaml: 2.7.0 - w3c-xmlserializer@4.0.0: - dependencies: - xml-name-validator: 4.0.0 - w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -14290,12 +13435,12 @@ snapshots: dependencies: makeerror: 1.0.12 - watchpack@2.4.2: + watchpack@2.5.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - watchpack@2.4.4: + watchpack@2.5.1: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -14309,102 +13454,108 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-dev-middleware@7.4.2(webpack@5.101.3): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.104.1(esbuild@0.27.2)): dependencies: colorette: 2.0.20 - memfs: 4.17.2 - mime-types: 2.1.35 + memfs: 4.56.10(tslib@2.8.1) + mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 optionalDependencies: - webpack: 5.101.3 + webpack: 5.104.1(esbuild@0.27.2) + transitivePeerDependencies: + - tslib - webpack-dev-middleware@7.4.2(webpack@5.99.8(esbuild@0.25.5)): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.105.0): dependencies: colorette: 2.0.20 - memfs: 4.17.2 - mime-types: 2.1.35 + memfs: 4.56.10(tslib@2.8.1) + mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 optionalDependencies: - webpack: 5.99.8(esbuild@0.25.5) + webpack: 5.105.0 + transitivePeerDependencies: + - tslib - webpack-dev-server@5.2.1(webpack@5.101.3): + webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.104.1(esbuild@0.27.2)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.8 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 bonjour-service: 1.3.0 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.8.0 + compression: 1.8.1 connect-history-api-fallback: 2.0.0 - express: 4.21.2 + express: 4.22.1 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.2 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) + ipaddr.js: 2.3.0 + launch-editor: 2.12.0 + open: 10.2.0 p-retry: 6.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 selfsigned: 2.4.1 - serve-index: 1.9.1 + serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.101.3) - ws: 8.18.3 + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1(esbuild@0.27.2)) + ws: 8.19.0 optionalDependencies: - webpack: 5.101.3 + webpack: 5.104.1(esbuild@0.27.2) transitivePeerDependencies: - bufferutil - debug - supports-color + - tslib - utf-8-validate - webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.5)): + webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.105.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.23 - '@types/express-serve-static-core': 4.19.6 + '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.8 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.8 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 bonjour-service: 1.3.0 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.8.0 + compression: 1.8.1 connect-history-api-fallback: 2.0.0 - express: 4.21.2 + express: 4.22.1 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.23) - ipaddr.js: 2.2.0 - launch-editor: 2.10.0 - open: 10.1.2 + http-proxy-middleware: 2.0.9(@types/express@4.17.25) + ipaddr.js: 2.3.0 + launch-editor: 2.12.0 + open: 10.2.0 p-retry: 6.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 selfsigned: 2.4.1 - serve-index: 1.9.1 + serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.5)) - ws: 8.18.3 + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.105.0) + ws: 8.19.0 optionalDependencies: - webpack: 5.99.8(esbuild@0.25.5) + webpack: 5.105.0 transitivePeerDependencies: - bufferutil - debug - supports-color + - tslib - utf-8-validate webpack-merge@6.0.1: @@ -14415,14 +13566,14 @@ snapshots: webpack-sources@3.3.3: {} - webpack-subresource-integrity@5.1.0(webpack@5.99.8(esbuild@0.25.5)): + webpack-subresource-integrity@5.1.0(webpack@5.104.1(esbuild@0.27.2)): dependencies: typed-assert: 1.0.9 - webpack: 5.99.8(esbuild@0.25.5) + webpack: 5.104.1(esbuild@0.27.2) webpack-virtual-modules@0.6.2: {} - webpack@5.101.3: + webpack@5.104.1(esbuild@0.27.2): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -14432,29 +13583,29 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.4 + browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 + enhanced-resolve: 5.19.0 + es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.3 - terser-webpack-plugin: 5.3.14(webpack@5.101.3) - watchpack: 2.4.4 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.16(esbuild@0.27.2)(webpack@5.104.1(esbuild@0.27.2)) + watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpack@5.99.8(esbuild@0.25.5): + webpack@5.105.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -14463,22 +13614,23 @@ snapshots: '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 - browserslist: 4.25.4 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 + enhanced-resolve: 5.19.0 + es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.3 - terser-webpack-plugin: 5.3.14(esbuild@0.25.5)(webpack@5.99.8(esbuild@0.25.5)) - watchpack: 2.4.4 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.16(webpack@5.105.0) + watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' @@ -14493,23 +13645,12 @@ snapshots: websocket-extensions@0.1.4: {} - whatwg-encoding@2.0.0: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - whatwg-mimetype@3.0.0: {} - whatwg-mimetype@4.0.0: {} - whatwg-url@11.0.0: - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - whatwg-url@14.2.0: dependencies: tr46: 5.1.1 @@ -14519,7 +13660,7 @@ snapshots: dependencies: isexe: 2.0.0 - which@5.0.0: + which@6.0.0: dependencies: isexe: 3.1.1 @@ -14527,6 +13668,8 @@ snapshots: word-wrap@1.2.5: {} + wordwrap@1.0.0: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -14541,15 +13684,15 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} @@ -14560,7 +13703,16 @@ snapshots: ws@8.18.3: {} - xml-name-validator@4.0.0: {} + ws@8.19.0: {} + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.0 + + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.0 + powershell-utils: 0.1.0 xml-name-validator@5.0.0: {} @@ -14608,10 +13760,14 @@ snapshots: yoctocolors-cjs@2.1.3: {} - zod-to-json-schema@3.24.6(zod@3.25.76): + yoctocolors@2.1.2: {} + + zod-to-json-schema@3.25.1(zod@4.3.5): dependencies: - zod: 3.25.76 + zod: 4.3.5 zod@3.25.76: {} - zone.js@0.15.1: {} + zod@4.3.5: {} + + zone.js@0.16.0: {} diff --git a/src-ui/setup-jest.ts b/src-ui/setup-jest.ts index c52c00647..86e447b59 100644 --- a/src-ui/setup-jest.ts +++ b/src-ui/setup-jest.ts @@ -28,6 +28,7 @@ import localeFa from '@angular/common/locales/fa' import localeFi from '@angular/common/locales/fi' import localeFr from '@angular/common/locales/fr' import localeHu from '@angular/common/locales/hu' +import localeId from '@angular/common/locales/id' import localeIt from '@angular/common/locales/it' import localeJa from '@angular/common/locales/ja' import localeKo from '@angular/common/locales/ko' @@ -63,6 +64,7 @@ registerLocaleData(localeFa) registerLocaleData(localeFi) registerLocaleData(localeFr) registerLocaleData(localeHu) +registerLocaleData(localeId) registerLocaleData(localeIt) registerLocaleData(localeJa) registerLocaleData(localeKo) @@ -98,10 +100,10 @@ const mock = () => { } } -Object.defineProperty(window, 'open', { value: jest.fn() }) -Object.defineProperty(window, 'localStorage', { value: mock() }) -Object.defineProperty(window, 'sessionStorage', { value: mock() }) -Object.defineProperty(window, 'getComputedStyle', { +Object.defineProperty(globalThis, 'open', { value: jest.fn() }) +Object.defineProperty(globalThis, 'localStorage', { value: mock() }) +Object.defineProperty(globalThis, 'sessionStorage', { value: mock() }) +Object.defineProperty(globalThis, 'getComputedStyle', { value: () => ['-webkit-appearance'], }) Object.defineProperty(navigator, 'clipboard', { @@ -113,13 +115,33 @@ Object.defineProperty(navigator, 'canShare', { value: () => true }) if (!navigator.share) { Object.defineProperty(navigator, 'share', { value: jest.fn() }) } -if (!URL.createObjectURL) { - Object.defineProperty(window.URL, 'createObjectURL', { value: jest.fn() }) +if (!globalThis.URL.createObjectURL) { + Object.defineProperty(globalThis.URL, 'createObjectURL', { value: jest.fn() }) } -if (!URL.revokeObjectURL) { - Object.defineProperty(window.URL, 'revokeObjectURL', { value: jest.fn() }) +if (!globalThis.URL.revokeObjectURL) { + Object.defineProperty(globalThis.URL, 'revokeObjectURL', { value: jest.fn() }) } -Object.defineProperty(window, 'ResizeObserver', { value: mock() }) +class MockResizeObserver { + private readonly callback: ResizeObserverCallback + + constructor(callback: ResizeObserverCallback) { + this.callback = callback + } + + observe = jest.fn() + unobserve = jest.fn() + disconnect = jest.fn() + + trigger = (entries: ResizeObserverEntry[] = []) => { + this.callback(entries, this) + } +} + +Object.defineProperty(globalThis, 'ResizeObserver', { + writable: true, + configurable: true, + value: MockResizeObserver, +}) if (typeof IntersectionObserver === 'undefined') { class MockIntersectionObserver { @@ -134,7 +156,7 @@ if (typeof IntersectionObserver === 'undefined') { takeRecords = jest.fn() } - Object.defineProperty(window, 'IntersectionObserver', { + Object.defineProperty(globalThis, 'IntersectionObserver', { writable: true, configurable: true, value: MockIntersectionObserver, @@ -145,4 +167,18 @@ HTMLCanvasElement.prototype.getContext = < typeof HTMLCanvasElement.prototype.getContext >jest.fn() +if (!HTMLElement.prototype.scrollTo) { + HTMLElement.prototype.scrollTo = jest.fn() +} + +jest.mock('uuid', () => ({ + v4: jest.fn(() => + 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char: string) => { + const random = Math.floor(Math.random() * 16) + const value = char === 'x' ? random : (random & 0x3) | 0x8 + return value.toString(16) + }) + ), +})) + jest.mock('pdfjs-dist') diff --git a/src-ui/src/app/app.component.spec.ts b/src-ui/src/app/app.component.spec.ts index 0591217ca..0d23d4feb 100644 --- a/src-ui/src/app/app.component.spec.ts +++ b/src-ui/src/app/app.component.spec.ts @@ -9,7 +9,11 @@ import { import { Router, RouterModule } from '@angular/router' import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap' import { allIcons, NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' -import { TourNgBootstrapModule, TourService } from 'ngx-ui-tour-ng-bootstrap' +import { + provideUiTour, + TourNgBootstrap, + TourService, +} from 'ngx-ui-tour-ng-bootstrap' import { Subject } from 'rxjs' import { routes } from './app-routing.module' import { AppComponent } from './app.component' @@ -40,12 +44,12 @@ describe('AppComponent', () => { beforeEach(async () => { TestBed.configureTestingModule({ imports: [ - TourNgBootstrapModule, RouterModule.forRoot(routes), NgbModalModule, AppComponent, ToastsComponent, FileDropComponent, + TourNgBootstrap, NgxBootstrapIconsModule.pick(allIcons), ], providers: [ @@ -53,6 +57,7 @@ describe('AppComponent', () => { DirtySavedViewGuard, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), + provideUiTour(), ], }).compileComponents() diff --git a/src-ui/src/app/app.component.ts b/src-ui/src/app/app.component.ts index b782e62b5..818f8eab0 100644 --- a/src-ui/src/app/app.component.ts +++ b/src-ui/src/app/app.component.ts @@ -1,6 +1,6 @@ import { Component, inject, OnDestroy, OnInit, Renderer2 } from '@angular/core' import { Router, RouterOutlet } from '@angular/router' -import { TourNgBootstrapModule, TourService } from 'ngx-ui-tour-ng-bootstrap' +import { TourNgBootstrap, TourService } from 'ngx-ui-tour-ng-bootstrap' import { first, Subscription } from 'rxjs' import { ToastsComponent } from './components/common/toasts/toasts.component' import { FileDropComponent } from './components/file-drop/file-drop.component' @@ -21,12 +21,7 @@ import { WebsocketStatusService } from './services/websocket-status.service' selector: 'pngx-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'], - imports: [ - FileDropComponent, - ToastsComponent, - TourNgBootstrapModule, - RouterOutlet, - ], + imports: [FileDropComponent, ToastsComponent, TourNgBootstrap, RouterOutlet], }) export class AppComponent implements OnInit, OnDestroy { private settings = inject(SettingsService) @@ -167,108 +162,91 @@ export class AppComponent implements OnInit, OnDestroy { }) } - const prevBtnTitle = $localize`Prev` - const nextBtnTitle = $localize`Next` - const endBtnTitle = $localize`End` - - this.tourService.initialize( - [ - { - anchorId: 'tour.dashboard', - content: $localize`The dashboard can be used to show saved views, such as an 'Inbox'. Views are found under Manage > Saved Views once you have created some.`, - route: '/dashboard', - delayAfterNavigation: 500, - isOptional: false, - }, - { - anchorId: 'tour.upload-widget', - content: $localize`Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms.`, - route: '/dashboard', - }, - { - anchorId: 'tour.documents', - content: $localize`The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar.`, - route: '/documents?sort=created&reverse=1&page=1', - delayAfterNavigation: 500, - placement: 'bottom', - }, - { - anchorId: 'tour.documents-filter-editor', - content: $localize`The filtering tools allow you to quickly find documents using various searches, dates, tags, etc.`, - route: '/documents?sort=created&reverse=1&page=1', - placement: 'bottom', - }, - { - anchorId: 'tour.documents-views', - content: $localize`Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar.`, - route: '/documents?sort=created&reverse=1&page=1', - }, - { - anchorId: 'tour.tags', - content: $localize`Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view.`, - route: '/tags', - backdropConfig: { - offset: 0, - }, - }, - { - anchorId: 'tour.mail', - content: $localize`Manage e-mail accounts and rules for automatically importing documents.`, - route: '/mail', - backdropConfig: { - offset: 0, - }, - }, - { - anchorId: 'tour.workflows', - content: $localize`Workflows give you more control over the document pipeline.`, - route: '/workflows', - backdropConfig: { - offset: 0, - }, - }, - { - anchorId: 'tour.file-tasks', - content: $localize`File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.`, - route: '/tasks', - backdropConfig: { - offset: 0, - }, - }, - { - anchorId: 'tour.settings', - content: $localize`Check out the settings for various tweaks to the web app.`, - route: '/settings', - backdropConfig: { - offset: 0, - }, - }, - { - anchorId: 'tour.outro', - title: $localize`Thank you! 🙏`, - content: - $localize`There are tons more features and info we didn't cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues.` + - '

' + - $localize`Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx!`, - route: '/dashboard', - isOptional: false, - backdropConfig: { - offset: 0, - }, - }, - ], + this.tourService.initialize([ { - enableBackdrop: true, + anchorId: 'tour.dashboard', + content: $localize`The dashboard can be used to show saved views, such as an 'Inbox'. Views are found under Manage > Saved Views once you have created some.`, + route: '/dashboard', + delayAfterNavigation: 500, + isOptional: false, + }, + { + anchorId: 'tour.upload-widget', + content: $localize`Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms.`, + route: '/dashboard', + }, + { + anchorId: 'tour.documents', + content: $localize`The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar.`, + route: '/documents?sort=created&reverse=1&page=1', + delayAfterNavigation: 500, + placement: 'bottom', + }, + { + anchorId: 'tour.documents-filter-editor', + content: $localize`The filtering tools allow you to quickly find documents using various searches, dates, tags, etc.`, + route: '/documents?sort=created&reverse=1&page=1', + placement: 'bottom', + }, + { + anchorId: 'tour.documents-views', + content: $localize`Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar.`, + route: '/documents?sort=created&reverse=1&page=1', + }, + { + anchorId: 'tour.tags', + content: $localize`Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view.`, + route: '/tags', backdropConfig: { - offset: 10, + offset: 0, }, - prevBtnTitle, - nextBtnTitle, - endBtnTitle, - isOptional: true, - useLegacyTitle: true, - } - ) + }, + { + anchorId: 'tour.mail', + content: $localize`Manage e-mail accounts and rules for automatically importing documents.`, + route: '/mail', + backdropConfig: { + offset: 0, + }, + }, + { + anchorId: 'tour.workflows', + content: $localize`Workflows give you more control over the document pipeline.`, + route: '/workflows', + backdropConfig: { + offset: 0, + }, + }, + { + anchorId: 'tour.file-tasks', + content: $localize`File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.`, + route: '/tasks', + backdropConfig: { + offset: 0, + }, + }, + { + anchorId: 'tour.settings', + content: $localize`Check out the settings for various tweaks to the web app.`, + route: '/settings', + backdropConfig: { + offset: 0, + }, + }, + { + anchorId: 'tour.outro', + title: $localize`Thank you! 🙏`, + content: + $localize`There are tons more features and info we didn't cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues.` + + '

' + + $localize`Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx!`, + route: '/dashboard', + isOptional: false, + backdropConfig: { + offset: 0, + }, + }, + ]) this.tourService.start$.subscribe(() => { this.renderer.addClass(document.body, 'tour-active') diff --git a/src-ui/src/app/components/admin/config/config.component.html b/src-ui/src/app/components/admin/config/config.component.html index e1d7340a6..1d38a5d32 100644 --- a/src-ui/src/app/components/admin/config/config.component.html +++ b/src-ui/src/app/components/admin/config/config.component.html @@ -35,8 +35,12 @@ @case (ConfigOptionType.String) { } @case (ConfigOptionType.JSON) { } @case (ConfigOptionType.File) { } + @case (ConfigOptionType.Password) { } }
+ @if (option.note) { +
{{option.note}}
+ } diff --git a/src-ui/src/app/components/admin/config/config.component.ts b/src-ui/src/app/components/admin/config/config.component.ts index eee617310..b0dcba57b 100644 --- a/src-ui/src/app/components/admin/config/config.component.ts +++ b/src-ui/src/app/components/admin/config/config.component.ts @@ -29,6 +29,7 @@ import { SettingsService } from 'src/app/services/settings.service' import { ToastService } from 'src/app/services/toast.service' import { FileComponent } from '../../common/input/file/file.component' import { NumberComponent } from '../../common/input/number/number.component' +import { PasswordComponent } from '../../common/input/password/password.component' import { SelectComponent } from '../../common/input/select/select.component' import { SwitchComponent } from '../../common/input/switch/switch.component' import { TextComponent } from '../../common/input/text/text.component' @@ -46,6 +47,7 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading TextComponent, NumberComponent, FileComponent, + PasswordComponent, AsyncPipe, NgbNavModule, FormsModule, diff --git a/src-ui/src/app/components/admin/logs/logs.component.html b/src-ui/src/app/components/admin/logs/logs.component.html index d6685d857..17ceb1e89 100644 --- a/src-ui/src/app/components/admin/logs/logs.component.html +++ b/src-ui/src/app/components/admin/logs/logs.component.html @@ -3,9 +3,23 @@ i18n-title info="Review the log files for the application and for email checking." i18n-info> -
- - +
+
+ Show + + lines +
+
+ + +
@@ -27,16 +41,23 @@ } -
- -
- @if (loading && logFiles.length) { +
+ @if (loading && !logFiles.length) {
Loading...
- } - @for (log of logs; track $index) { -

{{log}}

+ } @else { + @for (log of logs; track log) { +

{{log.message}}

+ } }
+ diff --git a/src-ui/src/app/components/admin/logs/logs.component.scss b/src-ui/src/app/components/admin/logs/logs.component.scss index 834c8c1cb..25ab0b8ac 100644 --- a/src-ui/src/app/components/admin/logs/logs.component.scss +++ b/src-ui/src/app/components/admin/logs/logs.component.scss @@ -16,11 +16,21 @@ } .log-container { - overflow-y: scroll; - height: calc(100vh - 200px); - top: 70px; + height: calc(100vh - 190px); + overflow-y: auto; p { white-space: pre-wrap; } } + +.jump-to-bottom { + opacity: 0; + pointer-events: none; + transition: opacity 120ms ease-in-out; +} + +.jump-to-bottom.visible { + opacity: 1; + pointer-events: auto; +} diff --git a/src-ui/src/app/components/admin/logs/logs.component.spec.ts b/src-ui/src/app/components/admin/logs/logs.component.spec.ts index 6e4adacfe..1b8425427 100644 --- a/src-ui/src/app/components/admin/logs/logs.component.spec.ts +++ b/src-ui/src/app/components/admin/logs/logs.component.spec.ts @@ -1,3 +1,8 @@ +import { + CdkVirtualScrollViewport, + ScrollingModule, +} from '@angular/cdk/scrolling' +import { CommonModule } from '@angular/common' import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' import { provideHttpClientTesting } from '@angular/common/http/testing' import { ComponentFixture, TestBed } from '@angular/core/testing' @@ -38,6 +43,9 @@ describe('LogsComponent', () => { NgxBootstrapIconsModule.pick(allIcons), LogsComponent, PageHeaderComponent, + CommonModule, + CdkVirtualScrollViewport, + ScrollingModule, ], providers: [ provideHttpClient(withInterceptorsFromDi()), @@ -54,13 +62,12 @@ describe('LogsComponent', () => { fixture = TestBed.createComponent(LogsComponent) component = fixture.componentInstance reloadSpy = jest.spyOn(component, 'reloadLogs') - window.HTMLElement.prototype.scroll = function () {} // mock scroll jest.useFakeTimers() fixture.detectChanges() }) it('should display logs with first log initially', () => { - expect(logSpy).toHaveBeenCalledWith('paperless') + expect(logSpy).toHaveBeenCalledWith('paperless', 5000) fixture.detectChanges() expect(fixture.debugElement.nativeElement.textContent).toContain( paperless_logs[0] @@ -71,7 +78,7 @@ describe('LogsComponent', () => { fixture.debugElement .queryAll(By.directive(NgbNavLink))[1] .nativeElement.dispatchEvent(new MouseEvent('click')) - expect(logSpy).toHaveBeenCalledWith('mail') + expect(logSpy).toHaveBeenCalledWith('mail', 5000) }) it('should handle error with no logs', () => { @@ -83,6 +90,10 @@ describe('LogsComponent', () => { }) it('should auto refresh, allow toggle', () => { + jest + .spyOn(CdkVirtualScrollViewport.prototype, 'scrollToIndex') + .mockImplementation(() => undefined) + jest.advanceTimersByTime(6000) expect(reloadSpy).toHaveBeenCalledTimes(2) @@ -90,4 +101,20 @@ describe('LogsComponent', () => { jest.advanceTimersByTime(6000) expect(reloadSpy).toHaveBeenCalledTimes(2) }) + + it('should debounce limit changes before reloading logs', () => { + const initialCalls = reloadSpy.mock.calls.length + component.onLimitChange(6000) + jest.advanceTimersByTime(299) + expect(reloadSpy).toHaveBeenCalledTimes(initialCalls) + jest.advanceTimersByTime(1) + expect(reloadSpy).toHaveBeenCalledTimes(initialCalls + 1) + }) + + it('should update jump to bottom visibility on scroll', () => { + component.showJumpToBottom = false + jest.spyOn(component as any, 'isNearBottom').mockReturnValue(false) + component.onScroll() + expect(component.showJumpToBottom).toBe(true) + }) }) diff --git a/src-ui/src/app/components/admin/logs/logs.component.ts b/src-ui/src/app/components/admin/logs/logs.component.ts index 4799b6125..e186b27b0 100644 --- a/src-ui/src/app/components/admin/logs/logs.component.ts +++ b/src-ui/src/app/components/admin/logs/logs.component.ts @@ -1,3 +1,4 @@ +import { CommonModule } from '@angular/common' import { ChangeDetectorRef, Component, @@ -9,7 +10,7 @@ import { } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap' -import { filter, takeUntil, timer } from 'rxjs' +import { Subject, debounceTime, filter, takeUntil, timer } from 'rxjs' import { LogService } from 'src/app/services/rest/log.service' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { LoadingComponentWithPermissions } from '../../loading-component/loading.component' @@ -21,6 +22,7 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading imports: [ PageHeaderComponent, NgbNavModule, + CommonModule, FormsModule, ReactiveFormsModule, ], @@ -32,7 +34,7 @@ export class LogsComponent private logService = inject(LogService) private changedetectorRef = inject(ChangeDetectorRef) - public logs: string[] = [] + public logs: Array<{ message: string; level: number }> = [] public logFiles: string[] = [] @@ -40,9 +42,19 @@ export class LogsComponent public autoRefreshEnabled: boolean = true - @ViewChild('logContainer') logContainer: ElementRef + public limit: number = 5000 + + public showJumpToBottom = false + + private readonly limitChange$ = new Subject() + + @ViewChild('logContainer') logContainer: ElementRef ngOnInit(): void { + this.limitChange$ + .pipe(debounceTime(300), takeUntil(this.unsubscribeNotifier)) + .subscribe(() => this.reloadLogs()) + this.logService .list() .pipe(takeUntil(this.unsubscribeNotifier)) @@ -68,16 +80,37 @@ export class LogsComponent super.ngOnDestroy() } + onLimitChange(limit: number): void { + this.limitChange$.next(limit) + } + reloadLogs() { this.loading = true + const shouldStickToBottom = this.isNearBottom() this.logService - .get(this.activeLog) + .get(this.activeLog, this.limit) .pipe(takeUntil(this.unsubscribeNotifier)) .subscribe({ next: (result) => { - this.logs = result this.loading = false - this.scrollToBottom() + const parsed = this.parseLogsWithLevel(result) + const hasChanges = + parsed.length !== this.logs.length || + parsed.some((log, idx) => { + const current = this.logs[idx] + return ( + !current || + current.message !== log.message || + current.level !== log.level + ) + }) + if (hasChanges) { + this.logs = parsed + if (shouldStickToBottom) { + this.scrollToBottom() + } + this.showJumpToBottom = !shouldStickToBottom + } }, error: () => { this.logs = [] @@ -100,12 +133,35 @@ export class LogsComponent } } + private parseLogsWithLevel( + logs: string[] + ): Array<{ message: string; level: number }> { + return logs.map((log) => ({ + message: log, + level: this.getLogLevel(log), + })) + } + scrollToBottom(): void { + const viewport = this.logContainer?.nativeElement + if (!viewport) { + return + } this.changedetectorRef.detectChanges() - this.logContainer?.nativeElement.scroll({ - top: this.logContainer.nativeElement.scrollHeight, - left: 0, - behavior: 'auto', - }) + viewport.scrollTop = viewport.scrollHeight + this.showJumpToBottom = false + } + + private isNearBottom(): boolean { + if (!this.logContainer?.nativeElement) return true + const distanceFromBottom = + this.logContainer.nativeElement.scrollHeight - + this.logContainer.nativeElement.scrollTop - + this.logContainer.nativeElement.clientHeight + return distanceFromBottom <= 40 + } + + onScroll(): void { + this.showJumpToBottom = !this.isNearBottom() } } diff --git a/src-ui/src/app/components/admin/settings/settings.component.html b/src-ui/src/app/components/admin/settings/settings.component.html index b228dac32..d07ee94a3 100644 --- a/src-ui/src/app/components/admin/settings/settings.component.html +++ b/src-ui/src/app/components/admin/settings/settings.component.html @@ -103,22 +103,6 @@
-
- Items per page -
-
- - - -
-
- -
Sidebar
@@ -153,8 +137,28 @@
+ +
+
Global search
+
+
+ +
+
-
Update checking
+
+
+ Full search links to +
+
+ +
+
+ +
Update checking
@@ -179,11 +183,33 @@
-
-
-
Document editing
+
+ + + +
  • + Documents + +
    +
    +
    Documents
    +
    +
    + Items per page +
    +
    + +
    +
    + +
    Document editing
    @@ -196,8 +222,8 @@

    Only applies to the Paperless-ngx PDF viewer.

    @@ -209,31 +235,32 @@
    -
    +
    -
    Global search
    -
    -
    - -
    -
    -
    -
    - Full search links to -
    -
    - +
    +

    Built-in fields to show:

    + @for (option of documentDetailFieldOptions; track option.id) { +
    + + +
    + } +

    Uncheck fields to hide them on the document details page.

    +
    +
    Bulk editing
    @@ -242,16 +269,27 @@
    +
    PDF Editor
    +
    +
    + Default editing mode +
    +
    + +
    +
    +
    Notes
    -
    -
  • diff --git a/src-ui/src/app/components/admin/settings/settings.component.spec.ts b/src-ui/src/app/components/admin/settings/settings.component.spec.ts index 300067d1b..7e369c8c3 100644 --- a/src-ui/src/app/components/admin/settings/settings.component.spec.ts +++ b/src-ui/src/app/components/admin/settings/settings.component.spec.ts @@ -16,6 +16,7 @@ import { } from '@ng-bootstrap/ng-bootstrap' import { NgSelectModule } from '@ng-select/ng-select' import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' +import { provideUiTour } from 'ngx-ui-tour-ng-bootstrap' import { of, throwError } from 'rxjs' import { routes } from 'src/app/app-routing.module' import { @@ -28,7 +29,6 @@ import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { PermissionsGuard } from 'src/app/guards/permissions.guard' import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' -import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' import { PermissionsService } from 'src/app/services/permissions.service' import { GroupService } from 'src/app/services/rest/group.service' import { SavedViewService } from 'src/app/services/rest/saved-view.service' @@ -92,6 +92,9 @@ const status: SystemStatus = { sanity_check_status: SystemStatusItemStatus.ERROR, sanity_check_last_run: new Date().toISOString(), sanity_check_error: 'Error running sanity check.', + llmindex_status: SystemStatusItemStatus.DISABLED, + llmindex_last_modified: new Date().toISOString(), + llmindex_error: null, }, } @@ -129,7 +132,6 @@ describe('SettingsComponent', () => { ConfirmDialogComponent, CheckComponent, ColorComponent, - SafeHtmlPipe, SelectComponent, TextComponent, NumberComponent, @@ -146,6 +148,7 @@ describe('SettingsComponent', () => { PermissionsGuard, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), + provideUiTour(), ], }).compileComponents() @@ -200,9 +203,9 @@ describe('SettingsComponent', () => { const navigateSpy = jest.spyOn(router, 'navigate') const tabButtons = fixture.debugElement.queryAll(By.directive(NgbNavLink)) tabButtons[1].nativeElement.dispatchEvent(new MouseEvent('click')) - expect(navigateSpy).toHaveBeenCalledWith(['settings', 'permissions']) + expect(navigateSpy).toHaveBeenCalledWith(['settings', 'documents']) tabButtons[2].nativeElement.dispatchEvent(new MouseEvent('click')) - expect(navigateSpy).toHaveBeenCalledWith(['settings', 'notifications']) + expect(navigateSpy).toHaveBeenCalledWith(['settings', 'permissions']) const initSpy = jest.spyOn(component, 'initialize') component.isDirty = true // mock dirty @@ -212,8 +215,8 @@ describe('SettingsComponent', () => { expect(initSpy).not.toHaveBeenCalled() navigateSpy.mockResolvedValueOnce(true) // nav accepted even though dirty - tabButtons[1].nativeElement.dispatchEvent(new MouseEvent('click')) - expect(navigateSpy).toHaveBeenCalledWith(['settings', 'notifications']) + tabButtons[2].nativeElement.dispatchEvent(new MouseEvent('click')) + expect(navigateSpy).toHaveBeenCalledWith(['settings', 'permissions']) expect(initSpy).toHaveBeenCalled() }) @@ -225,7 +228,7 @@ describe('SettingsComponent', () => { activatedRoute.snapshot.fragment = '#notifications' const scrollSpy = jest.spyOn(viewportScroller, 'scrollToAnchor') component.ngOnInit() - expect(component.activeNavID).toEqual(3) // Notifications + expect(component.activeNavID).toEqual(4) // Notifications component.ngAfterViewInit() expect(scrollSpy).toHaveBeenCalledWith('#notifications') }) @@ -250,7 +253,7 @@ describe('SettingsComponent', () => { expect(toastErrorSpy).toHaveBeenCalled() expect(storeSpy).toHaveBeenCalled() expect(appearanceSettingsSpy).not.toHaveBeenCalled() - expect(setSpy).toHaveBeenCalledTimes(30) + expect(setSpy).toHaveBeenCalledTimes(32) // succeed storeSpy.mockReturnValueOnce(of(true)) @@ -365,4 +368,22 @@ describe('SettingsComponent', () => { settingsService.settingsSaved.emit(true) expect(maybeRefreshSpy).toHaveBeenCalled() }) + + it('should support toggling document detail fields', () => { + completeSetup() + const field = 'storage_path' + expect( + component.settingsForm.get('documentDetailsHiddenFields').value.length + ).toEqual(0) + component.toggleDocumentDetailField(field, false) + expect( + component.settingsForm.get('documentDetailsHiddenFields').value.length + ).toEqual(1) + expect(component.isDocumentDetailFieldShown(field)).toBeFalsy() + component.toggleDocumentDetailField(field, true) + expect( + component.settingsForm.get('documentDetailsHiddenFields').value.length + ).toEqual(0) + expect(component.isDocumentDetailFieldShown(field)).toBeTruthy() + }) }) diff --git a/src-ui/src/app/components/admin/settings/settings.component.ts b/src-ui/src/app/components/admin/settings/settings.component.ts index 614d2fcd0..f548b71f4 100644 --- a/src-ui/src/app/components/admin/settings/settings.component.ts +++ b/src-ui/src/app/components/admin/settings/settings.component.ts @@ -64,15 +64,16 @@ import { PermissionsGroupComponent } from '../../common/input/permissions/permis import { PermissionsUserComponent } from '../../common/input/permissions/permissions-user/permissions-user.component' import { SelectComponent } from '../../common/input/select/select.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' +import { PdfEditorEditMode } from '../../common/pdf-editor/pdf-editor-edit-mode' +import { PdfZoomScale } from '../../common/pdf-viewer/pdf-viewer.types' import { SystemStatusDialogComponent } from '../../common/system-status-dialog/system-status-dialog.component' -import { ZoomSetting } from '../../document-detail/document-detail.component' import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' enum SettingsNavIDs { General = 1, - Permissions = 2, - Notifications = 3, - SavedViews = 4, + Documents = 2, + Permissions = 3, + Notifications = 4, } const systemLanguage = { code: '', name: $localize`Use system language` } @@ -81,6 +82,25 @@ const systemDateFormat = { name: $localize`Use date format of display language`, } +export enum DocumentDetailFieldID { + ArchiveSerialNumber = 'archive_serial_number', + Correspondent = 'correspondent', + DocumentType = 'document_type', + StoragePath = 'storage_path', + Tags = 'tags', +} + +const documentDetailFieldOptions = [ + { + id: DocumentDetailFieldID.ArchiveSerialNumber, + label: $localize`Archive serial number`, + }, + { id: DocumentDetailFieldID.Correspondent, label: $localize`Correspondent` }, + { id: DocumentDetailFieldID.DocumentType, label: $localize`Document type` }, + { id: DocumentDetailFieldID.StoragePath, label: $localize`Storage path` }, + { id: DocumentDetailFieldID.Tags, label: $localize`Tags` }, +] + @Component({ selector: 'pngx-settings', templateUrl: './settings.component.html', @@ -144,8 +164,10 @@ export class SettingsComponent defaultPermsEditGroups: new FormControl(null), useNativePdfViewer: new FormControl(null), pdfViewerDefaultZoom: new FormControl(null), + pdfEditorDefaultEditMode: new FormControl(null), documentEditingRemoveInboxTags: new FormControl(null), documentEditingOverlayThumbnail: new FormControl(null), + documentDetailsHiddenFields: new FormControl([]), searchDbOnly: new FormControl(null), searchLink: new FormControl(null), @@ -174,7 +196,11 @@ export class SettingsComponent public readonly GlobalSearchType = GlobalSearchType - public readonly ZoomSetting = ZoomSetting + public readonly PdfZoomScale = PdfZoomScale + + public readonly PdfEditorEditMode = PdfEditorEditMode + + public readonly documentDetailFieldOptions = documentDetailFieldOptions get systemStatusHasErrors(): boolean { return ( @@ -292,6 +318,9 @@ export class SettingsComponent pdfViewerDefaultZoom: this.settings.get( SETTINGS_KEYS.PDF_VIEWER_ZOOM_SETTING ), + pdfEditorDefaultEditMode: this.settings.get( + SETTINGS_KEYS.PDF_EDITOR_DEFAULT_EDIT_MODE + ), displayLanguage: this.settings.getLanguage(), dateLocale: this.settings.get(SETTINGS_KEYS.DATE_LOCALE), dateFormat: this.settings.get(SETTINGS_KEYS.DATE_FORMAT), @@ -336,6 +365,9 @@ export class SettingsComponent documentEditingOverlayThumbnail: this.settings.get( SETTINGS_KEYS.DOCUMENT_EDITING_OVERLAY_THUMBNAIL ), + documentDetailsHiddenFields: this.settings.get( + SETTINGS_KEYS.DOCUMENT_DETAILS_HIDDEN_FIELDS + ), searchDbOnly: this.settings.get(SETTINGS_KEYS.SEARCH_DB_ONLY), searchLink: this.settings.get(SETTINGS_KEYS.SEARCH_FULL_TYPE), } @@ -458,6 +490,10 @@ export class SettingsComponent SETTINGS_KEYS.PDF_VIEWER_ZOOM_SETTING, this.settingsForm.value.pdfViewerDefaultZoom ) + this.settings.set( + SETTINGS_KEYS.PDF_EDITOR_DEFAULT_EDIT_MODE, + this.settingsForm.value.pdfEditorDefaultEditMode + ) this.settings.set( SETTINGS_KEYS.DATE_LOCALE, this.settingsForm.value.dateLocale @@ -526,6 +562,10 @@ export class SettingsComponent SETTINGS_KEYS.DOCUMENT_EDITING_OVERLAY_THUMBNAIL, this.settingsForm.value.documentEditingOverlayThumbnail ) + this.settings.set( + SETTINGS_KEYS.DOCUMENT_DETAILS_HIDDEN_FIELDS, + this.settingsForm.value.documentDetailsHiddenFields + ) this.settings.set( SETTINGS_KEYS.SEARCH_DB_ONLY, this.settingsForm.value.searchDbOnly @@ -587,6 +627,26 @@ export class SettingsComponent this.settingsForm.get('themeColor').patchValue('') } + isDocumentDetailFieldShown(fieldId: string): boolean { + const hiddenFields = + this.settingsForm.value.documentDetailsHiddenFields || [] + return !hiddenFields.includes(fieldId) + } + + toggleDocumentDetailField(fieldId: string, checked: boolean) { + const hiddenFields = new Set( + this.settingsForm.value.documentDetailsHiddenFields || [] + ) + if (checked) { + hiddenFields.delete(fieldId) + } else { + hiddenFields.add(fieldId) + } + this.settingsForm + .get('documentDetailsHiddenFields') + .setValue(Array.from(hiddenFields)) + } + showSystemStatus() { const modal: NgbModalRef = this.modalService.open( SystemStatusDialogComponent, diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.html b/src-ui/src/app/components/admin/tasks/tasks.component.html index 084195221..ad625789c 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.html +++ b/src-ui/src/app/components/admin/tasks/tasks.component.html @@ -97,6 +97,12 @@
    (click for full output) } + @if (task.duplicate_documents?.length > 0) { +
    + + Duplicate(s) detected +
    + } } diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts index 8158be7b2..1a085150e 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts +++ b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts @@ -16,6 +16,7 @@ import { NgbNavItem, } from '@ng-bootstrap/ng-bootstrap' import { allIcons, NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' +import { throwError } from 'rxjs' import { routes } from 'src/app/app-routing.module' import { PaperlessTask, @@ -28,6 +29,7 @@ import { PermissionsGuard } from 'src/app/guards/permissions.guard' import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' import { PermissionsService } from 'src/app/services/permissions.service' import { TasksService } from 'src/app/services/tasks.service' +import { ToastService } from 'src/app/services/toast.service' import { environment } from 'src/environments/environment' import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' @@ -123,6 +125,7 @@ describe('TasksComponent', () => { let router: Router let httpTestingController: HttpTestingController let reloadSpy + let toastService: ToastService beforeEach(async () => { TestBed.configureTestingModule({ @@ -157,6 +160,7 @@ describe('TasksComponent', () => { httpTestingController = TestBed.inject(HttpTestingController) modalService = TestBed.inject(NgbModal) router = TestBed.inject(Router) + toastService = TestBed.inject(ToastService) fixture = TestBed.createComponent(TasksComponent) component = fixture.componentInstance jest.useFakeTimers() @@ -249,6 +253,42 @@ describe('TasksComponent', () => { expect(dismissSpy).toHaveBeenCalledWith(selected) }) + it('should show an error and re-enable modal buttons when dismissing multiple tasks fails', () => { + component.selectedTasks = new Set([tasks[0].id, tasks[1].id]) + const error = new Error('dismiss failed') + const toastSpy = jest.spyOn(toastService, 'showError') + const dismissSpy = jest + .spyOn(tasksService, 'dismissTasks') + .mockReturnValue(throwError(() => error)) + + let modal: NgbModalRef + modalService.activeInstances.subscribe((m) => (modal = m[m.length - 1])) + + component.dismissTasks() + expect(modal).not.toBeUndefined() + + modal.componentInstance.confirmClicked.emit() + + expect(dismissSpy).toHaveBeenCalledWith(new Set([tasks[0].id, tasks[1].id])) + expect(toastSpy).toHaveBeenCalledWith('Error dismissing tasks', error) + expect(modal.componentInstance.buttonsEnabled).toBe(true) + expect(component.selectedTasks.size).toBe(0) + }) + + it('should show an error when dismissing a single task fails', () => { + const error = new Error('dismiss failed') + const toastSpy = jest.spyOn(toastService, 'showError') + const dismissSpy = jest + .spyOn(tasksService, 'dismissTasks') + .mockReturnValue(throwError(() => error)) + + component.dismissTask(tasks[0]) + + expect(dismissSpy).toHaveBeenCalledWith(new Set([tasks[0].id])) + expect(toastSpy).toHaveBeenCalledWith('Error dismissing task', error) + expect(component.selectedTasks.size).toBe(0) + }) + it('should support dismiss all tasks', () => { let modal: NgbModalRef modalService.activeInstances.subscribe((m) => (modal = m[m.length - 1])) diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.ts b/src-ui/src/app/components/admin/tasks/tasks.component.ts index eb7263137..6f144c58c 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.ts +++ b/src-ui/src/app/components/admin/tasks/tasks.component.ts @@ -24,6 +24,7 @@ import { PaperlessTask } from 'src/app/data/paperless-task' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' import { TasksService } from 'src/app/services/tasks.service' +import { ToastService } from 'src/app/services/toast.service' import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { LoadingComponentWithPermissions } from '../../loading-component/loading.component' @@ -72,6 +73,7 @@ export class TasksComponent tasksService = inject(TasksService) private modalService = inject(NgbModal) private readonly router = inject(Router) + private readonly toastService = inject(ToastService) public activeTab: TaskTab public selectedTasks: Set = new Set() @@ -154,11 +156,19 @@ export class TasksComponent modal.componentInstance.confirmClicked.pipe(first()).subscribe(() => { modal.componentInstance.buttonsEnabled = false modal.close() - this.tasksService.dismissTasks(tasks) + this.tasksService.dismissTasks(tasks).subscribe({ + error: (e) => { + this.toastService.showError($localize`Error dismissing tasks`, e) + modal.componentInstance.buttonsEnabled = true + }, + }) this.clearSelection() }) } else { - this.tasksService.dismissTasks(tasks) + this.tasksService.dismissTasks(tasks).subscribe({ + error: (e) => + this.toastService.showError($localize`Error dismissing task`, e), + }) this.clearSelection() } } diff --git a/src-ui/src/app/components/admin/trash/trash.component.spec.ts b/src-ui/src/app/components/admin/trash/trash.component.spec.ts index aa5a8af0f..215b0b253 100644 --- a/src-ui/src/app/components/admin/trash/trash.component.spec.ts +++ b/src-ui/src/app/components/admin/trash/trash.component.spec.ts @@ -11,7 +11,6 @@ import { } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' import { of, throwError } from 'rxjs' -import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' import { ToastService } from 'src/app/services/toast.service' import { TrashService } from 'src/app/services/trash.service' import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component' @@ -53,7 +52,6 @@ describe('TrashComponent', () => { TrashComponent, PageHeaderComponent, ConfirmDialogComponent, - SafeHtmlPipe, ], }).compileComponents() diff --git a/src-ui/src/app/components/admin/users-groups/users-groups.component.html b/src-ui/src/app/components/admin/users-groups/users-groups.component.html index 1125c60b8..9f91a8714 100644 --- a/src-ui/src/app/components/admin/users-groups/users-groups.component.html +++ b/src-ui/src/app/components/admin/users-groups/users-groups.component.html @@ -7,7 +7,7 @@ > -@if (users) { +@if (canViewUsers && users) {

    Users +
    {{user.first_name}} {{user.last_name}}
    {{user.groups?.map(getGroupName, this).join(', ')}}
    @@ -45,7 +45,7 @@ } -@if (groups) { +@if (canViewGroups && groups) {

    Groups

      + @if (aiEnabled) { + + } } + + @if (document?.duplicate_documents?.length) { +
    • + + Duplicates + {{ document.duplicate_documents.length }} + + +
      +
      Duplicate documents detected:
      + +
      +
      +
    • + }
    @@ -378,14 +441,14 @@ -
    +
    -
    +
    @if (hasNext()) { @@ -402,7 +465,7 @@
    @if (showThumbnailOverlay) { - Document loading... + Document loading... }
    @@ -416,17 +479,15 @@ @case (ContentRenderType.PDF) { @if (!useNativePdfViewer) {
    - - + (loadError)="onError($event)" + (afterLoadComplete)="pdfPreviewLoaded($event)"> +
    } @else { @@ -437,7 +498,7 @@ } @case (ContentRenderType.Image) {
    - {{title}} + {{title}}
    } @case (ContentRenderType.TIFF) { diff --git a/src-ui/src/app/components/document-detail/document-detail.component.scss b/src-ui/src/app/components/document-detail/document-detail.component.scss index 3fc009020..3986f2cbc 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.scss +++ b/src-ui/src/app/components/document-detail/document-detail.component.scss @@ -5,20 +5,15 @@ } .pdf-viewer-container { - padding-top: 10px; + padding: 8px; background-color: gray; - pdf-viewer { + pngx-pdf-viewer { width: 100%; height: 100%; } } -::ng-deep .ng2-pdf-viewer-container .page { - --page-margin: 0 auto 10px; - --page-border: 0; -} - .btn-group .dropdown-toggle-split { border-top-right-radius: inherit; border-bottom-right-radius: inherit; diff --git a/src-ui/src/app/components/document-detail/document-detail.component.spec.ts b/src-ui/src/app/components/document-detail/document-detail.component.spec.ts index 97dae19b7..4f299e26a 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.spec.ts +++ b/src-ui/src/app/components/document-detail/document-detail.component.spec.ts @@ -48,6 +48,7 @@ import { } from 'src/app/data/filter-rule-type' import { StoragePath } from 'src/app/data/storage-path' import { Tag } from 'src/app/data/tag' +import { SETTINGS_KEYS } from 'src/app/data/ui-settings' import { PermissionsGuard } from 'src/app/guards/permissions.guard' import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' import { DocumentTitlePipe } from 'src/app/pipes/document-title.pipe' @@ -66,11 +67,13 @@ import { SettingsService } from 'src/app/services/settings.service' import { ToastService } from 'src/app/services/toast.service' import { environment } from 'src/environments/environment' import { ConfirmDialogComponent } from '../common/confirm-dialog/confirm-dialog.component' +import { PasswordRemovalConfirmDialogComponent } from '../common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component' import { CustomFieldsDropdownComponent } from '../common/custom-fields-dropdown/custom-fields-dropdown.component' import { - DocumentDetailComponent, - ZoomSetting, -} from './document-detail.component' + PdfZoomLevel, + PdfZoomScale, +} from '../common/pdf-viewer/pdf-viewer.types' +import { DocumentDetailComponent } from './document-detail.component' const doc: Document = { id: 3, @@ -156,6 +159,16 @@ describe('DocumentDetailComponent', () => { { provide: TagService, useValue: { + getCachedMany: (ids: number[]) => + of( + ids.map((id) => ({ + id, + name: `Tag${id}`, + is_inbox_tag: true, + color: '#ff0000', + text_color: '#000000', + })) + ), listAll: () => of({ count: 3, @@ -290,16 +303,16 @@ describe('DocumentDetailComponent', () => { .spyOn(openDocumentsService, 'openDocument') .mockReturnValueOnce(of(true)) fixture.detectChanges() - expect(component.activeNavID).toEqual(5) // DocumentDetailNavIDs.Notes + expect(component.activeNavID).toEqual(component.DocumentDetailNavIDs.Notes) }) it('should change url on tab switch', () => { initNormally() const navigateSpy = jest.spyOn(router, 'navigate') - component.nav.select(5) + component.nav.select(component.DocumentDetailNavIDs.Notes) component.nav.navChange.next({ activeId: 1, - nextId: 5, + nextId: component.DocumentDetailNavIDs.Notes, preventDefault: () => {}, }) fixture.detectChanges() @@ -341,6 +354,18 @@ describe('DocumentDetailComponent', () => { expect(component.document).toEqual(doc) }) + it('should fall back to details tab when duplicates tab is active but no duplicates', () => { + initNormally() + component.activeNavID = component.DocumentDetailNavIDs.Duplicates + const noDupDoc = { ...doc, duplicate_documents: [] } + + component.updateComponent(noDupDoc) + + expect(component.activeNavID).toEqual( + component.DocumentDetailNavIDs.Details + ) + }) + it('should load already-opened document via param', () => { initNormally() jest.spyOn(documentService, 'get').mockReturnValueOnce(of(doc)) @@ -356,6 +381,38 @@ describe('DocumentDetailComponent', () => { expect(component.document).toEqual(doc) }) + it('should update cached open document duplicates when reloading an open doc', () => { + const openDoc = { ...doc, duplicate_documents: [{ id: 1, title: 'Old' }] } + const updatedDuplicates = [ + { id: 2, title: 'Newer duplicate', deleted_at: null }, + ] + jest + .spyOn(activatedRoute, 'paramMap', 'get') + .mockReturnValue(of(convertToParamMap({ id: 3, section: 'details' }))) + jest.spyOn(documentService, 'get').mockReturnValue( + of({ + ...doc, + modified: new Date('2024-01-02T00:00:00Z'), + duplicate_documents: updatedDuplicates, + }) + ) + jest.spyOn(openDocumentsService, 'getOpenDocument').mockReturnValue(openDoc) + const saveSpy = jest.spyOn(openDocumentsService, 'save') + jest.spyOn(openDocumentsService, 'openDocument').mockReturnValue(of(true)) + jest.spyOn(customFieldsService, 'listAll').mockReturnValue( + of({ + count: customFields.length, + all: customFields.map((f) => f.id), + results: customFields, + }) + ) + + fixture.detectChanges() + + expect(openDoc.duplicate_documents).toEqual(updatedDuplicates) + expect(saveSpy).toHaveBeenCalled() + }) + it('should disable form if user cannot edit', () => { currentUserHasObjectPermissions = false initNormally() @@ -382,8 +439,32 @@ describe('DocumentDetailComponent', () => { currentUserCan = true }) - it('should support creating document type', () => { + it('should support creating tag, remove from suggestions', () => { initNormally() + component.suggestions = { + suggested_tags: ['Tag1', 'NewTag12'], + } + let openModal: NgbModalRef + modalService.activeInstances.subscribe((modal) => (openModal = modal[0])) + const modalSpy = jest.spyOn(modalService, 'open') + component.createTag('NewTag12') + expect(modalSpy).toHaveBeenCalled() + openModal.componentInstance.succeeded.next({ + id: 12, + name: 'NewTag12', + is_inbox_tag: true, + color: '#ff0000', + text_color: '#000000', + }) + expect(component.tagsInput.value).toContain(12) + expect(component.suggestions.suggested_tags).not.toContain('NewTag12') + }) + + it('should support creating document type, remove from suggestions', () => { + initNormally() + component.suggestions = { + suggested_document_types: ['DocumentType1', 'NewDocType2'], + } let openModal: NgbModalRef modalService.activeInstances.subscribe((modal) => (openModal = modal[0])) const modalSpy = jest.spyOn(modalService, 'open') @@ -391,10 +472,16 @@ describe('DocumentDetailComponent', () => { expect(modalSpy).toHaveBeenCalled() openModal.componentInstance.succeeded.next({ id: 12, name: 'NewDocType12' }) expect(component.documentForm.get('document_type').value).toEqual(12) + expect(component.suggestions.suggested_document_types).not.toContain( + 'NewDocType2' + ) }) - it('should support creating correspondent', () => { + it('should support creating correspondent, remove from suggestions', () => { initNormally() + component.suggestions = { + suggested_correspondents: ['Correspondent1', 'NewCorrrespondent12'], + } let openModal: NgbModalRef modalService.activeInstances.subscribe((modal) => (openModal = modal[0])) const modalSpy = jest.spyOn(modalService, 'open') @@ -405,6 +492,9 @@ describe('DocumentDetailComponent', () => { name: 'NewCorrrespondent12', }) expect(component.documentForm.get('correspondent').value).toEqual(12) + expect(component.suggestions.suggested_correspondents).not.toContain( + 'NewCorrrespondent12' + ) }) it('should support creating storage path', () => { @@ -773,7 +863,7 @@ describe('DocumentDetailComponent', () => { it('should support zoom controls', () => { initNormally() - component.setZoom(ZoomSetting.One) // from select + component.setZoom(PdfZoomLevel.One) // from select expect(component.previewZoomSetting).toEqual('1') component.increaseZoom() expect(component.previewZoomSetting).toEqual('1.5') @@ -781,18 +871,18 @@ describe('DocumentDetailComponent', () => { expect(component.previewZoomSetting).toEqual('2') component.decreaseZoom() expect(component.previewZoomSetting).toEqual('1.5') - component.setZoom(ZoomSetting.One) // from select + component.setZoom(PdfZoomLevel.One) // from select component.decreaseZoom() expect(component.previewZoomSetting).toEqual('.75') - component.setZoom(ZoomSetting.PageFit) // from select + component.setZoom(PdfZoomScale.PageFit) // from select expect(component.previewZoomScale).toEqual('page-fit') expect(component.previewZoomSetting).toEqual('1') component.increaseZoom() expect(component.previewZoomSetting).toEqual('1.5') expect(component.previewZoomScale).toEqual('page-width') - component.setZoom(ZoomSetting.PageFit) // from select + component.setZoom(PdfZoomScale.PageFit) // from select expect(component.previewZoomScale).toEqual('page-fit') expect(component.previewZoomSetting).toEqual('1') component.decreaseZoom() @@ -802,10 +892,10 @@ describe('DocumentDetailComponent', () => { it('should select correct zoom setting in dropdown', () => { initNormally() - component.setZoom(ZoomSetting.PageFit) - expect(component.currentZoom).toEqual(ZoomSetting.PageFit) - component.setZoom(ZoomSetting.Quarter) - expect(component.currentZoom).toEqual(ZoomSetting.Quarter) + component.setZoom(PdfZoomScale.PageFit) + expect(component.currentZoom).toEqual(PdfZoomScale.PageFit) + component.setZoom(PdfZoomLevel.Quarter) + expect(component.currentZoom).toEqual(PdfZoomLevel.Quarter) }) it('should support updating notes dynamically', () => { @@ -927,16 +1017,16 @@ describe('DocumentDetailComponent', () => { it('should display built-in pdf viewer if not disabled', () => { initNormally() component.document.archived_file_name = 'file.pdf' - jest.spyOn(settingsService, 'get').mockReturnValue(false) + settingsService.set(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, false) expect(component.useNativePdfViewer).toBeFalsy() fixture.detectChanges() - expect(fixture.debugElement.query(By.css('pdf-viewer'))).not.toBeNull() + expect(fixture.debugElement.query(By.css('pngx-pdf-viewer'))).not.toBeNull() }) it('should display native pdf viewer if enabled', () => { initNormally() component.document.archived_file_name = 'file.pdf' - jest.spyOn(settingsService, 'get').mockReturnValue(true) + settingsService.set(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, true) expect(component.useNativePdfViewer).toBeTruthy() fixture.detectChanges() expect(fixture.debugElement.query(By.css('object'))).not.toBeNull() @@ -995,7 +1085,7 @@ describe('DocumentDetailComponent', () => { expect(component.document.custom_fields).toHaveLength(initialLength - 1) expect(component.customFieldFormFields).toHaveLength(initialLength - 1) expect( - fixture.debugElement.query(By.css('form')).nativeElement.textContent + fixture.debugElement.query(By.css('form ul')).nativeElement.textContent ).not.toContain('Field 1') const patchSpy = jest.spyOn(documentService, 'patch') component.save(true) @@ -1086,10 +1176,22 @@ describe('DocumentDetailComponent', () => { it('should get suggestions', () => { const suggestionsSpy = jest.spyOn(documentService, 'getSuggestions') - suggestionsSpy.mockReturnValue(of({ tags: [42, 43] })) + suggestionsSpy.mockReturnValue( + of({ + tags: [42, 43], + suggested_tags: [], + suggested_document_types: [], + suggested_correspondents: [], + }) + ) initNormally() expect(suggestionsSpy).toHaveBeenCalled() - expect(component.suggestions).toEqual({ tags: [42, 43] }) + expect(component.suggestions).toEqual({ + tags: [42, 43], + suggested_tags: [], + suggested_document_types: [], + suggested_correspondents: [], + }) }) it('should show error if needed for get suggestions', () => { @@ -1209,10 +1311,92 @@ describe('DocumentDetailComponent', () => { expect(closeSpy).toHaveBeenCalled() }) + it('should support removing password protection from pdfs', () => { + let modal: NgbModalRef + modalService.activeInstances.subscribe((m) => (modal = m[0])) + initNormally() + component.password = 'secret' + component.removePassword() + const dialog = + modal.componentInstance as PasswordRemovalConfirmDialogComponent + dialog.updateDocument = false + dialog.includeMetadata = false + dialog.deleteOriginal = true + dialog.confirm() + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}documents/bulk_edit/` + ) + expect(req.request.body).toEqual({ + documents: [doc.id], + method: 'remove_password', + parameters: { + password: 'secret', + update_document: false, + include_metadata: false, + delete_original: true, + }, + }) + req.flush(true) + }) + + it('should require the current password before removing it', () => { + initNormally() + const errorSpy = jest.spyOn(toastService, 'showError') + component.requiresPassword = true + component.password = '' + + component.removePassword() + + expect(errorSpy).toHaveBeenCalled() + httpTestingController.expectNone( + `${environment.apiBaseUrl}documents/bulk_edit/` + ) + }) + + it('should handle failures when removing password protection', () => { + let modal: NgbModalRef + modalService.activeInstances.subscribe((m) => (modal = m[0])) + initNormally() + const errorSpy = jest.spyOn(toastService, 'showError') + component.password = 'secret' + + component.removePassword() + const dialog = + modal.componentInstance as PasswordRemovalConfirmDialogComponent + dialog.confirm() + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}documents/bulk_edit/` + ) + req.error(new ErrorEvent('failed')) + + expect(errorSpy).toHaveBeenCalled() + expect(component.networkActive).toBe(false) + expect(dialog.buttonsEnabled).toBe(true) + }) + + it('should refresh the document when removing password in update mode', () => { + let modal: NgbModalRef + modalService.activeInstances.subscribe((m) => (modal = m[0])) + const refreshSpy = jest.spyOn(openDocumentsService, 'refreshDocument') + initNormally() + component.password = 'secret' + + component.removePassword() + const dialog = + modal.componentInstance as PasswordRemovalConfirmDialogComponent + dialog.confirm() + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}documents/bulk_edit/` + ) + req.flush(true) + + expect(refreshSpy).toHaveBeenCalledWith(doc.id) + }) + it('should support keyboard shortcuts', () => { initNormally() - jest.spyOn(component, 'hasNext').mockReturnValue(true) + const hasNextSpy = jest.spyOn(component, 'hasNext').mockReturnValue(true) const nextSpy = jest.spyOn(component, 'nextDoc') document.dispatchEvent( new KeyboardEvent('keydown', { key: 'arrowright', ctrlKey: true }) @@ -1226,21 +1410,32 @@ describe('DocumentDetailComponent', () => { ) expect(prevSpy).toHaveBeenCalled() - jest.spyOn(openDocumentsService, 'isDirty').mockReturnValue(true) + const isDirtySpy = jest + .spyOn(openDocumentsService, 'isDirty') + .mockReturnValue(true) const saveSpy = jest.spyOn(component, 'save') document.dispatchEvent( new KeyboardEvent('keydown', { key: 's', ctrlKey: true }) ) expect(saveSpy).toHaveBeenCalled() - jest.spyOn(openDocumentsService, 'isDirty').mockReturnValue(true) - jest.spyOn(component, 'hasNext').mockReturnValue(true) + hasNextSpy.mockReturnValue(true) const saveNextSpy = jest.spyOn(component, 'saveEditNext') document.dispatchEvent( new KeyboardEvent('keydown', { key: 's', ctrlKey: true, shiftKey: true }) ) expect(saveNextSpy).toHaveBeenCalled() + saveSpy.mockClear() + saveNextSpy.mockClear() + isDirtySpy.mockReturnValue(true) + hasNextSpy.mockReturnValue(false) + document.dispatchEvent( + new KeyboardEvent('keydown', { key: 's', ctrlKey: true, shiftKey: true }) + ) + expect(saveNextSpy).not.toHaveBeenCalled() + expect(saveSpy).toHaveBeenCalledWith(true) + const closeSpy = jest.spyOn(component, 'close') document.dispatchEvent(new KeyboardEvent('keydown', { key: 'escape' })) expect(closeSpy).toHaveBeenCalled() @@ -1478,6 +1673,8 @@ describe('DocumentDetailComponent', () => { mockContentWindow.onafterprint(new Event('afterprint')) } + tick(500) + expect(removeChildSpy).toHaveBeenCalledWith(mockIframe) expect(revokeObjectURLSpy).toHaveBeenCalledWith('blob:mock-url') @@ -1501,65 +1698,97 @@ describe('DocumentDetailComponent', () => { ) }) - it('should show error toast if printing throws inside iframe', fakeAsync(() => { - initNormally() + const iframePrintErrorCases: Array<{ + description: string + thrownError: Error + expectToast: boolean + }> = [ + { + description: 'should show error toast if printing throws inside iframe', + thrownError: new Error('focus failed'), + expectToast: true, + }, + { + description: + 'should suppress toast if cross-origin afterprint error occurs', + thrownError: new DOMException( + 'Accessing onafterprint triggered a cross-origin violation', + 'SecurityError' + ), + expectToast: false, + }, + ] - const appendChildSpy = jest - .spyOn(document.body, 'appendChild') - .mockImplementation((node: Node) => node) - const removeChildSpy = jest - .spyOn(document.body, 'removeChild') - .mockImplementation((node: Node) => node) - const createObjectURLSpy = jest - .spyOn(URL, 'createObjectURL') - .mockReturnValue('blob:mock-url') - const revokeObjectURLSpy = jest - .spyOn(URL, 'revokeObjectURL') - .mockImplementation(() => {}) + iframePrintErrorCases.forEach(({ description, thrownError, expectToast }) => { + it( + description, + fakeAsync(() => { + initNormally() - const toastSpy = jest.spyOn(toastService, 'showError') + const appendChildSpy = jest + .spyOn(document.body, 'appendChild') + .mockImplementation((node: Node) => node) + const removeChildSpy = jest + .spyOn(document.body, 'removeChild') + .mockImplementation((node: Node) => node) + const createObjectURLSpy = jest + .spyOn(URL, 'createObjectURL') + .mockReturnValue('blob:mock-url') + const revokeObjectURLSpy = jest + .spyOn(URL, 'revokeObjectURL') + .mockImplementation(() => {}) - const mockContentWindow = { - focus: jest.fn().mockImplementation(() => { - throw new Error('focus failed') - }), - print: jest.fn(), - onafterprint: null, - } + const toastSpy = jest.spyOn(toastService, 'showError') - const mockIframe: any = { - style: {}, - src: '', - onload: null, - contentWindow: mockContentWindow, - } + const mockContentWindow = { + focus: jest.fn().mockImplementation(() => { + throw thrownError + }), + print: jest.fn(), + onafterprint: null, + } - const createElementSpy = jest - .spyOn(document, 'createElement') - .mockReturnValue(mockIframe as any) + const mockIframe: any = { + style: {}, + src: '', + onload: null, + contentWindow: mockContentWindow, + } - const blob = new Blob(['test'], { type: 'application/pdf' }) - component.printDocument() + const createElementSpy = jest + .spyOn(document, 'createElement') + .mockReturnValue(mockIframe as any) - const req = httpTestingController.expectOne( - `${environment.apiBaseUrl}documents/${doc.id}/download/` + const blob = new Blob(['test'], { type: 'application/pdf' }) + component.printDocument() + + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}documents/${doc.id}/download/` + ) + req.flush(blob) + + tick() + + if (mockIframe.onload) { + mockIframe.onload(new Event('load')) + } + + tick(200) + + if (expectToast) { + expect(toastSpy).toHaveBeenCalled() + } else { + expect(toastSpy).not.toHaveBeenCalled() + } + expect(removeChildSpy).toHaveBeenCalledWith(mockIframe) + expect(revokeObjectURLSpy).toHaveBeenCalledWith('blob:mock-url') + + createElementSpy.mockRestore() + appendChildSpy.mockRestore() + removeChildSpy.mockRestore() + createObjectURLSpy.mockRestore() + revokeObjectURLSpy.mockRestore() + }) ) - req.flush(blob) - - tick() - - if (mockIframe.onload) { - mockIframe.onload(new Event('load')) - } - - expect(toastSpy).toHaveBeenCalled() - expect(removeChildSpy).toHaveBeenCalledWith(mockIframe) - expect(revokeObjectURLSpy).toHaveBeenCalledWith('blob:mock-url') - - createElementSpy.mockRestore() - appendChildSpy.mockRestore() - removeChildSpy.mockRestore() - createObjectURLSpy.mockRestore() - revokeObjectURLSpy.mockRestore() - })) + }) }) diff --git a/src-ui/src/app/components/document-detail/document-detail.component.ts b/src-ui/src/app/components/document-detail/document-detail.component.ts index 82981a03e..90d291729 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.ts +++ b/src-ui/src/app/components/document-detail/document-detail.component.ts @@ -8,7 +8,7 @@ import { FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { ActivatedRoute, Router } from '@angular/router' +import { ActivatedRoute, Router, RouterModule } from '@angular/router' import { NgbDateStruct, NgbDropdownModule, @@ -18,10 +18,9 @@ import { NgbNavModule, } from '@ng-bootstrap/ng-bootstrap' import { dirtyCheck, DirtyComponent } from '@ngneat/dirty-check-forms' -import { PDFDocumentProxy, PdfViewerModule } from 'ng2-pdf-viewer' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' import { DeviceDetectorService } from 'ngx-device-detector' -import { BehaviorSubject, Observable, of, Subject } from 'rxjs' +import { BehaviorSubject, Observable, of, Subject, timer } from 'rxjs' import { catchError, debounceTime, @@ -31,6 +30,7 @@ import { map, switchMap, takeUntil, + tap, } from 'rxjs/operators' import { Correspondent } from 'src/app/data/correspondent' import { CustomField, CustomFieldDataType } from 'src/app/data/custom-field' @@ -76,18 +76,22 @@ import { DocumentTypeService } from 'src/app/services/rest/document-type.service import { DocumentService } from 'src/app/services/rest/document.service' import { SavedViewService } from 'src/app/services/rest/saved-view.service' import { StoragePathService } from 'src/app/services/rest/storage-path.service' +import { TagService } from 'src/app/services/rest/tag.service' import { UserService } from 'src/app/services/rest/user.service' import { SettingsService } from 'src/app/services/settings.service' import { ToastService } from 'src/app/services/toast.service' import { getFilenameFromContentDisposition } from 'src/app/utils/http' import { ISODateAdapter } from 'src/app/utils/ngb-iso-date-adapter' import * as UTIF from 'utif' +import { DocumentDetailFieldID } from '../admin/settings/settings.component' import { ConfirmDialogComponent } from '../common/confirm-dialog/confirm-dialog.component' +import { PasswordRemovalConfirmDialogComponent } from '../common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component' import { CustomFieldsDropdownComponent } from '../common/custom-fields-dropdown/custom-fields-dropdown.component' import { CorrespondentEditDialogComponent } from '../common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component' import { DocumentTypeEditDialogComponent } from '../common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component' import { EditDialogMode } from '../common/edit-dialog/edit-dialog.component' import { StoragePathEditDialogComponent } from '../common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component' +import { TagEditDialogComponent } from '../common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component' import { EmailDocumentDialogComponent } from '../common/email-document-dialog/email-document-dialog.component' import { CheckComponent } from '../common/input/check/check.component' import { DateComponent } from '../common/input/date/date.component' @@ -101,11 +105,17 @@ import { TextComponent } from '../common/input/text/text.component' import { TextAreaComponent } from '../common/input/textarea/textarea.component' import { UrlComponent } from '../common/input/url/url.component' import { PageHeaderComponent } from '../common/page-header/page-header.component' +import { PdfEditorEditMode } from '../common/pdf-editor/pdf-editor-edit-mode' +import { PDFEditorComponent } from '../common/pdf-editor/pdf-editor.component' +import { PngxPdfViewerComponent } from '../common/pdf-viewer/pdf-viewer.component' import { - PDFEditorComponent, - PdfEditorEditMode, -} from '../common/pdf-editor/pdf-editor.component' + PdfRenderMode, + PdfZoomLevel, + PdfZoomScale, + PngxPdfDocumentProxy, +} from '../common/pdf-viewer/pdf-viewer.types' import { ShareLinksDialogComponent } from '../common/share-links-dialog/share-links-dialog.component' +import { SuggestionsDropdownComponent } from '../common/suggestions-dropdown/suggestions-dropdown.component' import { DocumentHistoryComponent } from '../document-history/document-history.component' import { DocumentNotesComponent } from '../document-notes/document-notes.component' import { ComponentWithPermissions } from '../with-permissions/with-permissions.component' @@ -119,6 +129,7 @@ enum DocumentDetailNavIDs { Notes = 5, Permissions = 6, History = 7, + Duplicates = 8, } enum ContentRenderType { @@ -130,18 +141,6 @@ enum ContentRenderType { TIFF = 'tiff', } -export enum ZoomSetting { - PageFit = 'page-fit', - PageWidth = 'page-width', - Quarter = '.25', - Half = '.5', - ThreeQuarters = '.75', - One = '1', - OneAndHalf = '1.5', - Two = '2', - Three = '3', -} - @Component({ selector: 'pngx-document-detail', templateUrl: './document-detail.component.html', @@ -162,6 +161,7 @@ export enum ZoomSetting { NumberComponent, MonetaryComponent, UrlComponent, + SuggestionsDropdownComponent, CustomDatePipe, FileSizePipe, IfPermissionsDirective, @@ -173,16 +173,19 @@ export enum ZoomSetting { NgbNavModule, NgbDropdownModule, NgxBootstrapIconsModule, - PdfViewerModule, TextAreaComponent, + RouterModule, + PngxPdfViewerComponent, ], }) export class DocumentDetailComponent extends ComponentWithPermissions implements OnInit, OnDestroy, DirtyComponent { - private documentsService = inject(DocumentService) + PdfRenderMode = PdfRenderMode + documentsService = inject(DocumentService) private route = inject(ActivatedRoute) + private tagService = inject(TagService) private correspondentService = inject(CorrespondentService) private documentTypeService = inject(DocumentTypeService) private router = inject(Router) @@ -205,6 +208,8 @@ export class DocumentDetailComponent @ViewChild('inputTitle') titleInput: TextComponent + @ViewChild('tagsInput') tagsInput: TagsComponent + expandOriginalMetadata = false expandArchivedMetadata = false @@ -216,6 +221,7 @@ export class DocumentDetailComponent document: Document metadata: DocumentMetadata suggestions: DocumentSuggestions + suggestionsLoading: boolean = false users: User[] title: string @@ -248,8 +254,8 @@ export class DocumentDetailComponent previewCurrentPage: number = 1 previewNumPages: number - previewZoomSetting: ZoomSetting = ZoomSetting.One - previewZoomScale: ZoomSetting = ZoomSetting.PageWidth + previewZoomSetting: PdfZoomLevel = PdfZoomLevel.One + previewZoomScale: PdfZoomScale = PdfZoomScale.PageWidth store: BehaviorSubject isDirty$: Observable @@ -271,6 +277,8 @@ export class DocumentDetailComponent public readonly DataType = DataType + public readonly DocumentDetailFieldID = DocumentDetailFieldID + @ViewChild('nav') nav: NgbNav @ViewChild('versionFileInput') versionFileInput @ViewChild('pdfPreview') set pdfPreview(element) { @@ -278,10 +286,10 @@ export class DocumentDetailComponent if ( element && element.nativeElement.offsetParent !== null && - this.nav?.activeId == 4 + this.nav?.activeId == DocumentDetailNavIDs.Preview ) { // its visible - setTimeout(() => this.nav?.select(1)) + setTimeout(() => this.nav?.select(DocumentDetailNavIDs.Details)) } } @@ -300,6 +308,10 @@ export class DocumentDetailComponent return this.deviceDetectorService.isMobile() } + get aiEnabled(): boolean { + return this.settings.get(SETTINGS_KEYS.AI_ENABLED) + } + get archiveContentRenderType(): ContentRenderType { return this.document?.archived_file_name ? this.getRenderType('application/pdf') @@ -314,6 +326,12 @@ export class DocumentDetailComponent return this.settings.get(SETTINGS_KEYS.DOCUMENT_EDITING_OVERLAY_THUMBNAIL) } + isFieldHidden(fieldId: DocumentDetailFieldID): boolean { + return this.settings + .get(SETTINGS_KEYS.DOCUMENT_DETAILS_HIDDEN_FIELDS) + .includes(fieldId) + } + private getRenderType(mimeType: string): ContentRenderType { if (!mimeType) return ContentRenderType.Unknown if (mimeType === 'application/pdf') { @@ -446,6 +464,11 @@ export class DocumentDetailComponent const openDocument = this.openDocumentService.getOpenDocument( this.documentId ) + // update duplicate documents if present + if (openDocument && doc?.duplicate_documents) { + openDocument.duplicate_documents = doc.duplicate_documents + this.openDocumentService.save() + } const useDoc = openDocument || doc if (openDocument) { if ( @@ -492,7 +515,9 @@ export class DocumentDetailComponent } ngOnInit(): void { - this.setZoom(this.settings.get(SETTINGS_KEYS.PDF_VIEWER_ZOOM_SETTING)) + this.setZoom( + this.settings.get(SETTINGS_KEYS.PDF_VIEWER_ZOOM_SETTING) as PdfZoomScale + ) this.documentForm.valueChanges .pipe(takeUntil(this.unsubscribeNotifier)) .subscribe((values) => { @@ -621,7 +646,10 @@ export class DocumentDetailComponent }) .pipe(takeUntil(this.unsubscribeNotifier)) .subscribe(() => { - if (this.openDocumentService.isDirty(this.document)) this.saveEditNext() + if (this.openDocumentService.isDirty(this.document)) { + if (this.hasNext()) this.saveEditNext() + else this.save(true) + } }) } @@ -688,28 +716,22 @@ export class DocumentDetailComponent PermissionType.Document ) ) { - this.documentsService - .getSuggestions(doc.id) - .pipe( - first(), - takeUntil(this.unsubscribeNotifier), - takeUntil(this.docChangeNotifier) - ) - .subscribe({ - next: (result) => { - this.suggestions = result - }, - error: (error) => { - this.suggestions = null - this.toastService.showError( - $localize`Error retrieving suggestions.`, - error - ) - }, - }) + this.tagService.getCachedMany(doc.tags).subscribe((tags) => { + // only show suggestions if document has inbox tags + if (tags.some((tag) => tag.is_inbox_tag)) { + this.getSuggestions() + } + }) } this.title = this.documentTitlePipe.transform(doc.title) this.prepareForm(doc) + + if ( + this.activeNavID === DocumentDetailNavIDs.Duplicates && + !doc?.duplicate_documents?.length + ) { + this.activeNavID = DocumentDetailNavIDs.Details + } } get hasVersions(): boolean { @@ -746,6 +768,63 @@ export class DocumentDetailComponent return this.documentForm.get('custom_fields') as FormArray } + getSuggestions() { + this.suggestionsLoading = true + this.documentsService + .getSuggestions(this.documentId) + .pipe( + first(), + takeUntil(this.unsubscribeNotifier), + takeUntil(this.docChangeNotifier) + ) + .subscribe({ + next: (result) => { + this.suggestions = result + this.suggestionsLoading = false + }, + error: (error) => { + this.suggestions = null + this.suggestionsLoading = false + this.toastService.showError( + $localize`Error retrieving suggestions.`, + error + ) + }, + }) + } + + createTag(newName: string) { + var modal = this.modalService.open(TagEditDialogComponent, { + backdrop: 'static', + }) + modal.componentInstance.dialogMode = EditDialogMode.CREATE + if (newName) modal.componentInstance.object = { name: newName } + modal.componentInstance.succeeded + .pipe( + tap((newTag: Tag) => { + // remove from suggestions if present + if (this.suggestions) { + this.suggestions = { + ...this.suggestions, + suggested_tags: this.suggestions.suggested_tags.filter( + (tag) => tag !== newTag.name + ), + } + } + }), + switchMap((newTag: Tag) => { + return this.tagService + .listAll() + .pipe(map((tags) => ({ newTag, tags }))) + }), + takeUntil(this.unsubscribeNotifier) + ) + .subscribe(({ newTag, tags }) => { + this.tagsInput.tags = tags.results + this.tagsInput.addTag(newTag.id) + }) + } + createDocumentType(newName: string) { var modal = this.modalService.open(DocumentTypeEditDialogComponent, { backdrop: 'static', @@ -765,6 +844,12 @@ export class DocumentDetailComponent this.documentTypes = documentTypes.results this.documentForm.get('document_type').setValue(newDocumentType.id) this.documentForm.get('document_type').markAsDirty() + if (this.suggestions) { + this.suggestions.suggested_document_types = + this.suggestions.suggested_document_types.filter( + (dt) => dt !== newName + ) + } }) } @@ -789,6 +874,12 @@ export class DocumentDetailComponent this.correspondents = correspondents.results this.documentForm.get('correspondent').setValue(newCorrespondent.id) this.documentForm.get('correspondent').markAsDirty() + if (this.suggestions) { + this.suggestions.suggested_correspondents = + this.suggestions.suggested_correspondents.filter( + (c) => c !== newName + ) + } }) } @@ -1187,7 +1278,7 @@ export class DocumentDetailComponent }) } - pdfPreviewLoaded(pdf: PDFDocumentProxy) { + pdfPreviewLoaded(pdf: PngxPdfDocumentProxy) { this.previewNumPages = pdf.numPages if (this.password) this.requiresPassword = false setTimeout(() => { @@ -1208,31 +1299,33 @@ export class DocumentDetailComponent } } - setZoom(setting: ZoomSetting) { - if (ZoomSetting.PageFit === setting || ZoomSetting.PageWidth === setting) { + setZoom(setting: PdfZoomScale | PdfZoomLevel) { + if ( + setting === PdfZoomScale.PageFit || + setting === PdfZoomScale.PageWidth + ) { this.previewZoomScale = setting - this.previewZoomSetting = ZoomSetting.One - } else { - this.previewZoomSetting = setting - this.previewZoomScale = ZoomSetting.PageWidth + this.previewZoomSetting = PdfZoomLevel.One + return } + this.previewZoomSetting = setting + this.previewZoomScale = PdfZoomScale.PageWidth } get zoomSettings() { - return Object.values(ZoomSetting).filter( - (setting) => setting !== ZoomSetting.PageWidth - ) + return [PdfZoomScale.PageFit, ...Object.values(PdfZoomLevel)] } get currentZoom() { - if (this.previewZoomScale === ZoomSetting.PageFit) { - return ZoomSetting.PageFit - } else return this.previewZoomSetting + if (this.previewZoomScale === PdfZoomScale.PageFit) { + return PdfZoomScale.PageFit + } + return this.previewZoomSetting } - getZoomSettingTitle(setting: ZoomSetting): string { + getZoomSettingTitle(setting: PdfZoomScale | PdfZoomLevel): string { switch (setting) { - case ZoomSetting.PageFit: + case PdfZoomScale.PageFit: return $localize`Page Fit` default: return `${parseFloat(setting) * 100}%` @@ -1240,25 +1333,24 @@ export class DocumentDetailComponent } increaseZoom(): void { - let currentIndex = Object.values(ZoomSetting).indexOf( - this.previewZoomSetting - ) - if (this.previewZoomScale === ZoomSetting.PageFit) currentIndex = 5 - this.previewZoomScale = ZoomSetting.PageWidth + const zoomLevels = Object.values(PdfZoomLevel) + let currentIndex = zoomLevels.indexOf(this.previewZoomSetting) + if (this.previewZoomScale === PdfZoomScale.PageFit) { + currentIndex = zoomLevels.indexOf(PdfZoomLevel.One) + } + this.previewZoomScale = PdfZoomScale.PageWidth this.previewZoomSetting = - Object.values(ZoomSetting)[ - Math.min(Object.values(ZoomSetting).length - 1, currentIndex + 1) - ] + zoomLevels[Math.min(zoomLevels.length - 1, currentIndex + 1)] } decreaseZoom(): void { - let currentIndex = Object.values(ZoomSetting).indexOf( - this.previewZoomSetting - ) - if (this.previewZoomScale === ZoomSetting.PageFit) currentIndex = 4 - this.previewZoomScale = ZoomSetting.PageWidth - this.previewZoomSetting = - Object.values(ZoomSetting)[Math.max(2, currentIndex - 1)] + const zoomLevels = Object.values(PdfZoomLevel) + let currentIndex = zoomLevels.indexOf(this.previewZoomSetting) + if (this.previewZoomScale === PdfZoomScale.PageFit) { + currentIndex = zoomLevels.indexOf(PdfZoomLevel.ThreeQuarters) + } + this.previewZoomScale = PdfZoomScale.PageWidth + this.previewZoomSetting = zoomLevels[Math.max(0, currentIndex - 1)] } get showPermissions(): boolean { @@ -1491,6 +1583,63 @@ export class DocumentDetailComponent }) } + removePassword() { + if (this.requiresPassword || !this.password) { + this.toastService.showError( + $localize`Please enter the current password before attempting to remove it.` + ) + return + } + const modal = this.modalService.open( + PasswordRemovalConfirmDialogComponent, + { + backdrop: 'static', + } + ) + modal.componentInstance.title = $localize`Remove password protection` + modal.componentInstance.message = $localize`Create an unprotected copy or replace the existing file.` + modal.componentInstance.btnCaption = $localize`Start` + + modal.componentInstance.confirmClicked + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe(() => { + const dialog = + modal.componentInstance as PasswordRemovalConfirmDialogComponent + dialog.buttonsEnabled = false + this.networkActive = true + this.documentsService + .bulkEdit([this.document.id], 'remove_password', { + password: this.password, + update_document: dialog.updateDocument, + include_metadata: dialog.includeMetadata, + delete_original: dialog.deleteOriginal, + }) + .pipe(first(), takeUntil(this.unsubscribeNotifier)) + .subscribe({ + next: () => { + this.toastService.showInfo( + $localize`Password removal operation for "${this.document.title}" will begin in the background.` + ) + this.networkActive = false + modal.close() + if (!dialog.updateDocument && dialog.deleteOriginal) { + this.openDocumentService.closeDocument(this.document) + } else if (dialog.updateDocument) { + this.openDocumentService.refreshDocument(this.documentId) + } + }, + error: (error) => { + dialog.buttonsEnabled = true + this.networkActive = false + this.toastService.showError( + $localize`Error executing password removal operation`, + error + ) + }, + }) + }) + } + printDocument() { const printUrl = this.documentsService.getDownloadUrl( this.document.id, @@ -1515,9 +1664,18 @@ export class DocumentDetailComponent URL.revokeObjectURL(blobUrl) } } catch (err) { - this.toastService.showError($localize`Print failed.`, err) - document.body.removeChild(iframe) - URL.revokeObjectURL(blobUrl) + // FF throws cross-origin error on onafterprint + const isCrossOriginAfterPrintError = + err instanceof DOMException && + err.message.includes('onafterprint') + if (!isCrossOriginAfterPrintError) { + this.toastService.showError($localize`Print failed.`, err) + } + timer(100).subscribe(() => { + // delay to avoid FF print failure + document.body.removeChild(iframe) + URL.revokeObjectURL(blobUrl) + }) } } }, @@ -1544,7 +1702,7 @@ export class DocumentDetailComponent const modal = this.modalService.open(EmailDocumentDialogComponent, { backdrop: 'static', }) - modal.componentInstance.documentId = this.document.id + modal.componentInstance.documentIds = [this.document.id] modal.componentInstance.hasArchiveVersion = !!this.document?.archived_file_name } diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html index 0eb655a21..6f3a84eee 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html @@ -1,161 +1,171 @@
    -
    -
    -
    - -
    -
    +
    +
    +
    + +
    + + + - -
    -
    - - @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.Tag)) { - - - } - @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.Correspondent)) { - - - } - @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.DocumentType)) { - - - } - @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.StoragePath)) { - - - } - @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.CustomField)) { - - - } +
    +
    +
    + - -
    - -
    - - - -
    -
    + +
    + + + + @if (emailEnabled) { + + } +
    +
    +
    + -
    - -
    -
    -

    Include:

    -
    -
    - - -
    -
    - - -
    -
    -
    - - -
    -
    -
    + } +
     Download
    + +
    + +
    +
    +

    Include:

    +
    +
    + + +
    +
    + +
    - -
    - -
    +
    + +
    -
    + +
    +
    +
    + +
    + +
    +
    +
    diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.scss b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.scss index 939f2c790..a5ea35ce4 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.scss +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.scss @@ -5,3 +5,7 @@ .dropdown-menu{ --bs-dropdown-min-width: 12rem; } + +.btn-group .btn { + white-space: nowrap; +} diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.spec.ts b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.spec.ts index 457e1888d..694899d3d 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.spec.ts +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.spec.ts @@ -3,6 +3,7 @@ import { HttpTestingController, provideHttpClientTesting, } from '@angular/common/http/testing' +import { EventEmitter } from '@angular/core' import { ComponentFixture, TestBed } from '@angular/core/testing' import { By } from '@angular/platform-browser' import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' @@ -25,6 +26,7 @@ import { SelectionData, } from 'src/app/services/rest/document.service' import { GroupService } from 'src/app/services/rest/group.service' +import { ShareLinkBundleService } from 'src/app/services/rest/share-link-bundle.service' import { StoragePathService } from 'src/app/services/rest/storage-path.service' import { TagService } from 'src/app/services/rest/tag.service' import { UserService } from 'src/app/services/rest/user.service' @@ -38,6 +40,8 @@ import { EditDialogMode } from '../../common/edit-dialog/edit-dialog.component' import { StoragePathEditDialogComponent } from '../../common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component' import { TagEditDialogComponent } from '../../common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component' import { FilterableDropdownComponent } from '../../common/filterable-dropdown/filterable-dropdown.component' +import { ShareLinkBundleDialogComponent } from '../../common/share-link-bundle-dialog/share-link-bundle-dialog.component' +import { ShareLinkBundleManageDialogComponent } from '../../common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component' import { BulkEditorComponent } from './bulk-editor.component' const selectionData: SelectionData = { @@ -72,6 +76,7 @@ describe('BulkEditorComponent', () => { let storagePathService: StoragePathService let customFieldsService: CustomFieldsService let httpTestingController: HttpTestingController + let shareLinkBundleService: ShareLinkBundleService beforeEach(async () => { TestBed.configureTestingModule({ @@ -152,6 +157,15 @@ describe('BulkEditorComponent', () => { }), }, }, + { + provide: ShareLinkBundleService, + useValue: { + createBundle: jest.fn(), + listAllBundles: jest.fn(), + rebuildBundle: jest.fn(), + delete: jest.fn(), + }, + }, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), ], @@ -168,6 +182,7 @@ describe('BulkEditorComponent', () => { storagePathService = TestBed.inject(StoragePathService) customFieldsService = TestBed.inject(CustomFieldsService) httpTestingController = TestBed.inject(HttpTestingController) + shareLinkBundleService = TestBed.inject(ShareLinkBundleService) fixture = TestBed.createComponent(BulkEditorComponent) component = fixture.componentInstance @@ -1454,4 +1469,130 @@ describe('BulkEditorComponent', () => { `${environment.apiBaseUrl}documents/?page=1&page_size=100000&fields=id` ) // listAllFilteredIds }) + + it('should create share link bundle and enable manage callback', () => { + jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true) + jest + .spyOn(documentListViewService, 'documents', 'get') + .mockReturnValue([{ id: 5 }, { id: 7 }] as any) + jest + .spyOn(documentListViewService, 'selected', 'get') + .mockReturnValue(new Set([5, 7])) + + const confirmClicked = new EventEmitter() + const modalRef: Partial = { + close: jest.fn(), + componentInstance: { + documents: [], + confirmClicked, + payload: { + document_ids: [5, 7], + file_version: 'archive', + expiration_days: 7, + }, + loading: false, + buttonsEnabled: true, + copied: false, + }, + } + + const openSpy = jest.spyOn(modalService, 'open') + openSpy.mockReturnValueOnce(modalRef as NgbModalRef) + openSpy.mockReturnValueOnce({} as NgbModalRef) + ;(shareLinkBundleService.createBundle as jest.Mock).mockReturnValueOnce( + of({ id: 42 }) + ) + const toastInfoSpy = jest.spyOn(toastService, 'showInfo') + + component.createShareLinkBundle() + + expect(openSpy).toHaveBeenNthCalledWith( + 1, + ShareLinkBundleDialogComponent, + expect.objectContaining({ backdrop: 'static', size: 'lg' }) + ) + + const dialogInstance = modalRef.componentInstance as any + expect(dialogInstance.documents).toEqual([{ id: 5 }, { id: 7 }]) + + confirmClicked.emit() + + expect(shareLinkBundleService.createBundle).toHaveBeenCalledWith({ + document_ids: [5, 7], + file_version: 'archive', + expiration_days: 7, + }) + expect(dialogInstance.loading).toBe(false) + expect(dialogInstance.buttonsEnabled).toBe(false) + expect(dialogInstance.createdBundle).toEqual({ id: 42 }) + expect(typeof dialogInstance.onOpenManage).toBe('function') + expect(toastInfoSpy).toHaveBeenCalledWith( + $localize`Share link bundle creation requested.` + ) + + dialogInstance.onOpenManage() + expect(modalRef.close).toHaveBeenCalled() + expect(openSpy).toHaveBeenNthCalledWith( + 2, + ShareLinkBundleManageDialogComponent, + expect.objectContaining({ backdrop: 'static', size: 'lg' }) + ) + openSpy.mockRestore() + }) + + it('should handle share link bundle creation errors', () => { + jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true) + jest + .spyOn(documentListViewService, 'documents', 'get') + .mockReturnValue([{ id: 9 }] as any) + jest + .spyOn(documentListViewService, 'selected', 'get') + .mockReturnValue(new Set([9])) + + const confirmClicked = new EventEmitter() + const modalRef: Partial = { + componentInstance: { + documents: [], + confirmClicked, + payload: { + document_ids: [9], + file_version: 'original', + expiration_days: null, + }, + loading: false, + buttonsEnabled: true, + }, + } + + const openSpy = jest + .spyOn(modalService, 'open') + .mockReturnValue(modalRef as NgbModalRef) + ;(shareLinkBundleService.createBundle as jest.Mock).mockReturnValueOnce( + throwError(() => new Error('bundle failure')) + ) + const toastErrorSpy = jest.spyOn(toastService, 'showError') + + component.createShareLinkBundle() + + const dialogInstance = modalRef.componentInstance as any + confirmClicked.emit() + + expect(toastErrorSpy).toHaveBeenCalledWith( + $localize`Share link bundle creation is not available yet.`, + expect.any(Error) + ) + expect(dialogInstance.loading).toBe(false) + expect(dialogInstance.buttonsEnabled).toBe(true) + openSpy.mockRestore() + }) + + it('should open share link bundle management dialog', () => { + const openSpy = jest.spyOn(modalService, 'open') + component.manageShareLinkBundles() + expect(openSpy).toHaveBeenCalledWith( + ShareLinkBundleManageDialogComponent, + expect.objectContaining({ backdrop: 'static', size: 'lg' }) + ) + openSpy.mockRestore() + }) }) diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts index 96c180263..2b4782e96 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts @@ -33,6 +33,7 @@ import { SelectionDataItem, } from 'src/app/services/rest/document.service' import { SavedViewService } from 'src/app/services/rest/saved-view.service' +import { ShareLinkBundleService } from 'src/app/services/rest/share-link-bundle.service' import { StoragePathService } from 'src/app/services/rest/storage-path.service' import { TagService } from 'src/app/services/rest/tag.service' import { SettingsService } from 'src/app/services/settings.service' @@ -46,6 +47,7 @@ import { DocumentTypeEditDialogComponent } from '../../common/edit-dialog/docume import { EditDialogMode } from '../../common/edit-dialog/edit-dialog.component' import { StoragePathEditDialogComponent } from '../../common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component' import { TagEditDialogComponent } from '../../common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component' +import { EmailDocumentDialogComponent } from '../../common/email-document-dialog/email-document-dialog.component' import { ChangedItems, FilterableDropdownComponent, @@ -53,6 +55,8 @@ import { } from '../../common/filterable-dropdown/filterable-dropdown.component' import { ToggleableItemState } from '../../common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component' import { PermissionsDialogComponent } from '../../common/permissions-dialog/permissions-dialog.component' +import { ShareLinkBundleDialogComponent } from '../../common/share-link-bundle-dialog/share-link-bundle-dialog.component' +import { ShareLinkBundleManageDialogComponent } from '../../common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component' import { ComponentWithPermissions } from '../../with-permissions/with-permissions.component' import { CustomFieldsBulkEditDialogComponent } from './custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component' @@ -86,6 +90,7 @@ export class BulkEditorComponent private customFieldService = inject(CustomFieldsService) private permissionService = inject(PermissionsService) private savedViewService = inject(SavedViewService) + private readonly shareLinkBundleService = inject(ShareLinkBundleService) tagSelectionModel = new FilterableDropdownSelectionModel(true) correspondentSelectionModel = new FilterableDropdownSelectionModel() @@ -902,4 +907,72 @@ export class BulkEditorComponent ) }) } + + public get emailEnabled(): boolean { + return this.settings.get(SETTINGS_KEYS.EMAIL_ENABLED) + } + + createShareLinkBundle() { + const modal = this.modalService.open(ShareLinkBundleDialogComponent, { + backdrop: 'static', + size: 'lg', + }) + const dialog = modal.componentInstance as ShareLinkBundleDialogComponent + const selectedDocuments = this.list.documents.filter((d) => + this.list.selected.has(d.id) + ) + dialog.documents = selectedDocuments + dialog.confirmClicked + .pipe(takeUntil(this.unsubscribeNotifier)) + .subscribe(() => { + dialog.loading = true + dialog.buttonsEnabled = false + this.shareLinkBundleService + .createBundle(dialog.payload) + .pipe(first()) + .subscribe({ + next: (result) => { + dialog.loading = false + dialog.buttonsEnabled = false + dialog.createdBundle = result + dialog.copied = false + dialog.payload = null + dialog.onOpenManage = () => { + modal.close() + this.manageShareLinkBundles() + } + this.toastService.showInfo( + $localize`Share link bundle creation requested.` + ) + }, + error: (error) => { + dialog.loading = false + dialog.buttonsEnabled = true + this.toastService.showError( + $localize`Share link bundle creation is not available yet.`, + error + ) + }, + }) + }) + } + + manageShareLinkBundles() { + this.modalService.open(ShareLinkBundleManageDialogComponent, { + backdrop: 'static', + size: 'lg', + }) + } + + emailSelected() { + const allHaveArchiveVersion = this.list.documents + .filter((d) => this.list.selected.has(d.id)) + .every((doc) => !!doc.archived_file_name) + + const modal = this.modalService.open(EmailDocumentDialogComponent, { + backdrop: 'static', + }) + modal.componentInstance.documentIds = Array.from(this.list.selected) + modal.componentInstance.hasArchiveVersion = allHaveArchiveVersion + } } diff --git a/src-ui/src/app/components/document-list/document-list.component.html b/src-ui/src/app/components/document-list/document-list.component.html index c58d1ede1..ef11e44f9 100644 --- a/src-ui/src/app/components/document-list/document-list.component.html +++ b/src-ui/src/app/components/document-list/document-list.component.html @@ -1,16 +1,36 @@ - -
    - -
    +
    +
    +
    + Select: +
    +
    + @if (list.selected.size > 0) { + + } + + +
    +
    - } + + } + @if (!list.isReloading && list.selected.size > 0) { + + }
    @if (list.collectionSize) { { DatePipe, DocumentTitlePipe, UsernamePipe, - SafeHtmlPipe, PermissionsGuard, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), + provideUiTour(), ], }).compileComponents() diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index aca686fcf..d2d21ee17 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -21,7 +21,7 @@ import { NgbPaginationModule, } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' -import { TourNgBootstrapModule } from 'ngx-ui-tour-ng-bootstrap' +import { TourNgBootstrap } from 'ngx-ui-tour-ng-bootstrap' import { filter, first, map, Subject, switchMap, takeUntil } from 'rxjs' import { DEFAULT_DISPLAY_FIELDS, @@ -56,6 +56,7 @@ import { filterRulesDiffer, isFullTextFilterRule, } from 'src/app/utils/filter-rules' +import { ClearableBadgeComponent } from '../common/clearable-badge/clearable-badge.component' import { CustomFieldDisplayComponent } from '../common/custom-field-display/custom-field-display.component' import { PageHeaderComponent } from '../common/page-header/page-header.component' import { PreviewPopupComponent } from '../common/preview-popup/preview-popup.component' @@ -72,6 +73,7 @@ import { SaveViewConfigDialogComponent } from './save-view-config-dialog/save-vi templateUrl: './document-list.component.html', styleUrls: ['./document-list.component.scss'], imports: [ + ClearableBadgeComponent, CustomFieldDisplayComponent, PageHeaderComponent, BulkEditorComponent, @@ -97,7 +99,7 @@ import { SaveViewConfigDialogComponent } from './save-view-config-dialog/save-vi NgbPaginationModule, NgClass, RouterModule, - TourNgBootstrapModule, + TourNgBootstrap, ], }) export class DocumentListComponent diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.spec.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.spec.ts index 72d3f948c..39e58aefd 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.spec.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.spec.ts @@ -21,6 +21,7 @@ import { } from '@ng-bootstrap/ng-bootstrap' import { NgSelectComponent, NgSelectModule } from '@ng-select/ng-select' import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' +import { provideUiTour } from 'ngx-ui-tour-ng-bootstrap' import { of, throwError } from 'rxjs' import { Correspondent } from 'src/app/data/correspondent' import { CustomField, CustomFieldDataType } from 'src/app/data/custom-field' @@ -251,6 +252,7 @@ describe('FilterEditorComponent', () => { SettingsService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), + provideUiTour(), ], }).compileComponents() @@ -1306,7 +1308,8 @@ describe('FilterEditorComponent', () => { const tagsFilterableDropdown = fixture.debugElement.queryAll( By.directive(FilterableDropdownComponent) )[0] - tagsFilterableDropdown.triggerEventHandler('opened') + tagsFilterableDropdown.componentInstance.dropdownOpenChange(true) + fixture.detectChanges() const tagButton = tagsFilterableDropdown.queryAll( By.directive(ToggleableDropdownButtonComponent) )[0] @@ -1324,7 +1327,8 @@ describe('FilterEditorComponent', () => { const tagsFilterableDropdown = fixture.debugElement.queryAll( By.directive(FilterableDropdownComponent) )[0] // Tags dropdown - tagsFilterableDropdown.triggerEventHandler('opened') + tagsFilterableDropdown.componentInstance.dropdownOpenChange(true) + fixture.detectChanges() const tagButtons = tagsFilterableDropdown.queryAll( By.directive(ToggleableDropdownButtonComponent) ) @@ -1375,7 +1379,8 @@ describe('FilterEditorComponent', () => { const correspondentsFilterableDropdown = fixture.debugElement.queryAll( By.directive(FilterableDropdownComponent) )[1] // Corresp dropdown - correspondentsFilterableDropdown.triggerEventHandler('opened') + correspondentsFilterableDropdown.componentInstance.dropdownOpenChange(true) + fixture.detectChanges() const correspondentButtons = correspondentsFilterableDropdown.queryAll( By.directive(ToggleableDropdownButtonComponent) ) @@ -1414,7 +1419,8 @@ describe('FilterEditorComponent', () => { const correspondentsFilterableDropdown = fixture.debugElement.queryAll( By.directive(FilterableDropdownComponent) )[1] - correspondentsFilterableDropdown.triggerEventHandler('opened') + correspondentsFilterableDropdown.componentInstance.dropdownOpenChange(true) + fixture.detectChanges() const notAssignedButton = correspondentsFilterableDropdown.queryAll( By.directive(ToggleableDropdownButtonComponent) )[0] @@ -1445,7 +1451,8 @@ describe('FilterEditorComponent', () => { const documentTypesFilterableDropdown = fixture.debugElement.queryAll( By.directive(FilterableDropdownComponent) )[2] // DocType dropdown - documentTypesFilterableDropdown.triggerEventHandler('opened') + documentTypesFilterableDropdown.componentInstance.dropdownOpenChange(true) + fixture.detectChanges() const documentTypeButtons = documentTypesFilterableDropdown.queryAll( By.directive(ToggleableDropdownButtonComponent) ) @@ -1484,7 +1491,8 @@ describe('FilterEditorComponent', () => { const docTypesFilterableDropdown = fixture.debugElement.queryAll( By.directive(FilterableDropdownComponent) )[2] - docTypesFilterableDropdown.triggerEventHandler('opened') + docTypesFilterableDropdown.componentInstance.dropdownOpenChange(true) + fixture.detectChanges() const notAssignedButton = docTypesFilterableDropdown.queryAll( By.directive(ToggleableDropdownButtonComponent) )[0] @@ -1515,7 +1523,8 @@ describe('FilterEditorComponent', () => { const storagePathFilterableDropdown = fixture.debugElement.queryAll( By.directive(FilterableDropdownComponent) )[3] // StoragePath dropdown - storagePathFilterableDropdown.triggerEventHandler('opened') + storagePathFilterableDropdown.componentInstance.dropdownOpenChange(true) + fixture.detectChanges() const storagePathButtons = storagePathFilterableDropdown.queryAll( By.directive(ToggleableDropdownButtonComponent) ) @@ -1554,7 +1563,8 @@ describe('FilterEditorComponent', () => { const storagePathsFilterableDropdown = fixture.debugElement.queryAll( By.directive(FilterableDropdownComponent) )[3] - storagePathsFilterableDropdown.triggerEventHandler('opened') + storagePathsFilterableDropdown.componentInstance.dropdownOpenChange(true) + fixture.detectChanges() const notAssignedButton = storagePathsFilterableDropdown.queryAll( By.directive(ToggleableDropdownButtonComponent) )[0] diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index 9e83797a6..55bb67d15 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -16,7 +16,7 @@ import { NgbTypeaheadModule, } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' -import { TourNgBootstrapModule } from 'ngx-ui-tour-ng-bootstrap' +import { TourNgBootstrap } from 'ngx-ui-tour-ng-bootstrap' import { Observable, Subject, from } from 'rxjs' import { catchError, @@ -173,6 +173,22 @@ const RELATIVE_DATE_QUERYSTRINGS = [ relativeDate: RelativeDate.YESTERDAY, dateQuery: 'yesterday', }, + { + relativeDate: RelativeDate.PREVIOUS_WEEK, + dateQuery: 'previous week', + }, + { + relativeDate: RelativeDate.PREVIOUS_MONTH, + dateQuery: 'previous month', + }, + { + relativeDate: RelativeDate.PREVIOUS_QUARTER, + dateQuery: 'previous quarter', + }, + { + relativeDate: RelativeDate.PREVIOUS_YEAR, + dateQuery: 'previous year', + }, ] const DEFAULT_TEXT_FILTER_TARGET_OPTIONS = [ @@ -235,7 +251,7 @@ const DEFAULT_TEXT_FILTER_MODIFIER_OPTIONS = [ NgbTypeaheadModule, FormsModule, ReactiveFormsModule, - TourNgBootstrapModule, + TourNgBootstrap, ], }) export class FilterEditorComponent @@ -400,6 +416,9 @@ export class FilterEditorComponent @Input() set filterRules(value: FilterRule[]) { + if (value === this._filterRules) { + return + } this._filterRules = value this.documentTypeSelectionModel.clear(false) @@ -747,7 +766,7 @@ export class FilterEditorComponent ) { filterRules.push({ rule_type: FILTER_TITLE_CONTENT, - value: this._textFilter, + value: this._textFilter.trim(), }) } if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_TITLE) { @@ -805,7 +824,7 @@ export class FilterEditorComponent ) { filterRules.push({ rule_type: FILTER_FULLTEXT_QUERY, - value: this._textFilter, + value: this._textFilter.trim(), }) } if ( @@ -1098,7 +1117,13 @@ export class FilterEditorComponent rulesModified: boolean = false updateRules() { - this.filterRulesChange.next(this.filterRules) + const updatedRules = this.filterRules + this._filterRules = updatedRules + this.rulesModified = filterRulesDiffer( + this._unmodifiedFilterRules, + updatedRules + ) + this.filterRulesChange.next(updatedRules) } get textFilter() { diff --git a/src-ui/src/app/components/file-drop/file-drop.component.ts b/src-ui/src/app/components/file-drop/file-drop.component.ts index 3576971b8..8fd0c7c22 100644 --- a/src-ui/src/app/components/file-drop/file-drop.component.ts +++ b/src-ui/src/app/components/file-drop/file-drop.component.ts @@ -150,12 +150,11 @@ export class FileDropComponent { this.onDragLeave(event, true) } - @HostListener('window:blur', ['$event']) public onWindowBlur() { + @HostListener('window:blur') public onWindowBlur() { if (this.fileIsOver) this.onDragLeave(null) } - @HostListener('document:visibilitychange', ['$event']) - public onVisibilityChange() { + @HostListener('document:visibilitychange') public onVisibilityChange() { if (document.hidden && this.fileIsOver) this.onDragLeave(null) } } diff --git a/src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.ts b/src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.ts index 0131ac992..4a3a82b9c 100644 --- a/src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.ts +++ b/src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.ts @@ -1,6 +1,7 @@ import { NgClass, NgTemplateOutlet, TitleCasePipe } from '@angular/common' import { Component, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { RouterModule } from '@angular/router' import { NgbDropdownModule, NgbPaginationModule, @@ -13,6 +14,7 @@ import { SortableDirective } from 'src/app/directives/sortable.directive' import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' import { PermissionType } from 'src/app/services/permissions.service' import { CorrespondentService } from 'src/app/services/rest/correspondent.service' +import { ClearableBadgeComponent } from '../../common/clearable-badge/clearable-badge.component' import { CorrespondentEditDialogComponent } from '../../common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { ManagementListComponent } from '../management-list/management-list.component' @@ -29,11 +31,13 @@ import { ManagementListComponent } from '../management-list/management-list.comp TitleCasePipe, FormsModule, ReactiveFormsModule, + RouterModule, NgClass, NgTemplateOutlet, NgbDropdownModule, NgbPaginationModule, NgxBootstrapIconsModule, + ClearableBadgeComponent, ], }) export class CorrespondentListComponent extends ManagementListComponent { diff --git a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.html b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.html index 185e9da35..0a6d80658 100644 --- a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.html +++ b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.html @@ -42,7 +42,13 @@ @if (field.document_count > 0) { - + Filter Documents ({{ field.document_count }}) }
    @@ -57,9 +63,13 @@
    @if (field.document_count > 0) {
    - + +  Documents{{ field.document_count }} +
    }
    diff --git a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.spec.ts b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.spec.ts index e94470d64..b86d476f3 100644 --- a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.spec.ts +++ b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.spec.ts @@ -4,6 +4,7 @@ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' import { provideHttpClientTesting } from '@angular/common/http/testing' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { By } from '@angular/platform-browser' +import { RouterTestingModule } from '@angular/router/testing' import { NgbModal, NgbModalModule, @@ -61,6 +62,7 @@ describe('CustomFieldsComponent', () => { NgbModalModule, NgbPopoverModule, NgxBootstrapIconsModule.pick(allIcons), + RouterTestingModule, CustomFieldsComponent, IfPermissionsDirective, PageHeaderComponent, @@ -108,7 +110,9 @@ describe('CustomFieldsComponent', () => { const toastInfoSpy = jest.spyOn(toastService, 'showInfo') const reloadSpy = jest.spyOn(component, 'reload') - const createButton = fixture.debugElement.queryAll(By.css('button'))[1] + const createButton = fixture.debugElement + .queryAll(By.css('button')) + .find((btn) => btn.nativeElement.textContent.trim().includes('Add Field')) createButton.triggerEventHandler('click') expect(modal).not.toBeUndefined() @@ -133,7 +137,11 @@ describe('CustomFieldsComponent', () => { const toastInfoSpy = jest.spyOn(toastService, 'showInfo') const reloadSpy = jest.spyOn(component, 'reload') - const editButton = fixture.debugElement.queryAll(By.css('button'))[2] + const editButton = fixture.debugElement + .queryAll(By.css('button')) + .find((btn) => + btn.nativeElement.textContent.trim().includes(fields[0].name) + ) editButton.triggerEventHandler('click') expect(modal).not.toBeUndefined() @@ -158,7 +166,9 @@ describe('CustomFieldsComponent', () => { const deleteSpy = jest.spyOn(customFieldsService, 'delete') const reloadSpy = jest.spyOn(component, 'reload') - const deleteButton = fixture.debugElement.queryAll(By.css('button'))[5] + const deleteButton = fixture.debugElement + .queryAll(By.css('button')) + .find((btn) => btn.nativeElement.textContent.trim().includes('Delete')) deleteButton.triggerEventHandler('click') expect(modal).not.toBeUndefined() @@ -176,10 +186,10 @@ describe('CustomFieldsComponent', () => { expect(reloadSpy).toHaveBeenCalled() }) - it('should support filter documents', () => { - const filterSpy = jest.spyOn(listViewService, 'quickFilter') - component.filterDocuments(fields[0]) - expect(filterSpy).toHaveBeenCalledWith([ + it('should provide document filter url', () => { + const urlSpy = jest.spyOn(listViewService, 'getQuickFilterUrl') + component.getDocumentFilterUrl(fields[0]) + expect(urlSpy).toHaveBeenCalledWith([ { rule_type: FILTER_CUSTOM_FIELDS_QUERY, value: JSON.stringify([ diff --git a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts index 9e7ecf78a..8ecd713ef 100644 --- a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts +++ b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts @@ -1,4 +1,5 @@ import { Component, OnInit, inject } from '@angular/core' +import { RouterModule } from '@angular/router' import { NgbDropdownModule, NgbModal, @@ -36,6 +37,7 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading NgbDropdownModule, NgbPaginationModule, NgxBootstrapIconsModule, + RouterModule, ], }) export class CustomFieldsComponent @@ -130,8 +132,8 @@ export class CustomFieldsComponent return DATA_TYPE_LABELS.find((l) => l.id === field.data_type).name } - filterDocuments(field: CustomField) { - this.documentListViewService.quickFilter([ + getDocumentFilterUrl(field: CustomField) { + return this.documentListViewService.getQuickFilterUrl([ { rule_type: FILTER_CUSTOM_FIELDS_QUERY, value: JSON.stringify([ diff --git a/src-ui/src/app/components/manage/document-type-list/document-type-list.component.ts b/src-ui/src/app/components/manage/document-type-list/document-type-list.component.ts index 21a4779e9..dc3a020be 100644 --- a/src-ui/src/app/components/manage/document-type-list/document-type-list.component.ts +++ b/src-ui/src/app/components/manage/document-type-list/document-type-list.component.ts @@ -1,6 +1,7 @@ import { NgClass, NgTemplateOutlet, TitleCasePipe } from '@angular/common' import { Component, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { RouterModule } from '@angular/router' import { NgbDropdownModule, NgbPaginationModule, @@ -12,6 +13,7 @@ import { IfPermissionsDirective } from 'src/app/directives/if-permissions.direct import { SortableDirective } from 'src/app/directives/sortable.directive' import { PermissionType } from 'src/app/services/permissions.service' import { DocumentTypeService } from 'src/app/services/rest/document-type.service' +import { ClearableBadgeComponent } from '../../common/clearable-badge/clearable-badge.component' import { DocumentTypeEditDialogComponent } from '../../common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { ManagementListComponent } from '../management-list/management-list.component' @@ -27,11 +29,13 @@ import { ManagementListComponent } from '../management-list/management-list.comp IfPermissionsDirective, FormsModule, ReactiveFormsModule, + RouterModule, NgClass, NgTemplateOutlet, NgbDropdownModule, NgbPaginationModule, NgxBootstrapIconsModule, + ClearableBadgeComponent, ], }) export class DocumentTypeListComponent extends ManagementListComponent { diff --git a/src-ui/src/app/components/manage/mail/mail.component.html b/src-ui/src/app/components/manage/mail/mail.component.html index 16e8e88fb..45249e876 100644 --- a/src-ui/src/app/components/manage/mail/mail.component.html +++ b/src-ui/src/app/components/manage/mail/mail.component.html @@ -3,7 +3,7 @@ i18n-title info="Manage e-mail accounts and rules for automatically importing documents." i18n-info - infoLink="usage/#usage-email" + infoLink="usage/#incoming-mail" > @@ -109,10 +109,11 @@
  • Name
    -
    Sort Order
    -
    Account
    -
    Status
    -
    Actions
    +
    Sort Order
    +
    Account
    +
    Status
    +
    Processed Mail
    +
    Actions
  • @@ -127,9 +128,9 @@
  • -
    {{rule.order}}
    -
    {{(mailAccountService.getCached(rule.account) | async)?.name}}
    -
    +
    {{rule.order}}
    +
    {{ mailAccountsById.get(rule.account)?.name }}
    +
    -
    +
    + +
    +
    + + Read more + + + +
    + diff --git a/src-ui/src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.scss b/src-ui/src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.scss new file mode 100644 index 000000000..c87a5c3f6 --- /dev/null +++ b/src-ui/src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.scss @@ -0,0 +1,10 @@ +::ng-deep .popover { + max-width: 350px; + max-height: 600px; + overflow: hidden; + + pre { + white-space: pre-wrap; + word-break: break-word; + } +} diff --git a/src-ui/src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.spec.ts b/src-ui/src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.spec.ts new file mode 100644 index 000000000..c34c97ef2 --- /dev/null +++ b/src-ui/src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.spec.ts @@ -0,0 +1,150 @@ +import { DatePipe } from '@angular/common' +import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' +import { + HttpTestingController, + provideHttpClientTesting, +} from '@angular/common/http/testing' +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { FormsModule } from '@angular/forms' +import { By } from '@angular/platform-browser' +import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' +import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' +import { ToastService } from 'src/app/services/toast.service' +import { environment } from 'src/environments/environment' +import { ProcessedMailDialogComponent } from './processed-mail-dialog.component' + +describe('ProcessedMailDialogComponent', () => { + let component: ProcessedMailDialogComponent + let fixture: ComponentFixture + let httpTestingController: HttpTestingController + let toastService: ToastService + + const rule: any = { id: 10, name: 'Mail Rule' } // minimal rule object for tests + const mails = [ + { + id: 1, + rule: rule.id, + folder: 'INBOX', + uid: 111, + subject: 'A', + received: new Date().toISOString(), + processed: new Date().toISOString(), + status: 'SUCCESS', + error: null, + }, + { + id: 2, + rule: rule.id, + folder: 'INBOX', + uid: 222, + subject: 'B', + received: new Date().toISOString(), + processed: new Date().toISOString(), + status: 'FAILED', + error: 'Oops', + }, + ] + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ + ProcessedMailDialogComponent, + FormsModule, + NgxBootstrapIconsModule.pick(allIcons), + ], + providers: [ + DatePipe, + NgbActiveModal, + provideHttpClient(withInterceptorsFromDi()), + provideHttpClientTesting(), + ], + }).compileComponents() + + httpTestingController = TestBed.inject(HttpTestingController) + toastService = TestBed.inject(ToastService) + fixture = TestBed.createComponent(ProcessedMailDialogComponent) + component = fixture.componentInstance + component.rule = rule + }) + + afterEach(() => { + httpTestingController.verify() + }) + + function expectListRequest(ruleId: number) { + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}processed_mail/?page=1&page_size=50&ordering=-processed_at&rule=${ruleId}` + ) + expect(req.request.method).toEqual('GET') + return req + } + + it('should load processed mails on init', () => { + fixture.detectChanges() + const req = expectListRequest(rule.id) + req.flush({ count: 2, results: mails }) + expect(component.loading).toBeFalsy() + expect(component.processedMails).toEqual(mails) + }) + + it('should delete selected mails and reload', () => { + fixture.detectChanges() + // initial load + const initialReq = expectListRequest(rule.id) + initialReq.flush({ count: 0, results: [] }) + + // select a couple of mails and delete + component.selectedMailIds.add(5) + component.selectedMailIds.add(6) + const toastInfoSpy = jest.spyOn(toastService, 'showInfo') + component.deleteSelected() + + const delReq = httpTestingController.expectOne( + `${environment.apiBaseUrl}processed_mail/bulk_delete/` + ) + expect(delReq.request.method).toEqual('POST') + expect(delReq.request.body).toEqual({ mail_ids: [5, 6] }) + delReq.flush({}) + + // reload after delete + const reloadReq = expectListRequest(rule.id) + reloadReq.flush({ count: 0, results: [] }) + expect(toastInfoSpy).toHaveBeenCalled() + }) + + it('should toggle all, toggle selected, and clear selection', () => { + fixture.detectChanges() + // initial load with two mails + const req = expectListRequest(rule.id) + req.flush({ count: 2, results: mails }) + fixture.detectChanges() + + // toggle all via header checkbox + const inputs = fixture.debugElement.queryAll( + By.css('input.form-check-input') + ) + const header = inputs[0].nativeElement as HTMLInputElement + header.dispatchEvent(new Event('click')) + header.checked = true + header.dispatchEvent(new Event('click')) + expect(component.selectedMailIds.size).toEqual(mails.length) + + // toggle a single mail + component.toggleSelected(mails[0] as any) + expect(component.selectedMailIds.has(mails[0].id)).toBeFalsy() + component.toggleSelected(mails[0] as any) + expect(component.selectedMailIds.has(mails[0].id)).toBeTruthy() + + // clear selection + component.clearSelection() + expect(component.selectedMailIds.size).toEqual(0) + expect(component.toggleAllEnabled).toBeFalsy() + }) + + it('should close the dialog', () => { + const activeModal = TestBed.inject(NgbActiveModal) + const closeSpy = jest.spyOn(activeModal, 'close') + component.close() + expect(closeSpy).toHaveBeenCalled() + }) +}) diff --git a/src-ui/src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts b/src-ui/src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts new file mode 100644 index 000000000..ed51ad0ed --- /dev/null +++ b/src-ui/src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts @@ -0,0 +1,96 @@ +import { SlicePipe } from '@angular/common' +import { Component, inject, Input, OnInit } from '@angular/core' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { + NgbActiveModal, + NgbPagination, + NgbPopoverModule, + NgbTooltipModule, +} from '@ng-bootstrap/ng-bootstrap' +import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' +import { ConfirmButtonComponent } from 'src/app/components/common/confirm-button/confirm-button.component' +import { MailRule } from 'src/app/data/mail-rule' +import { ProcessedMail } from 'src/app/data/processed-mail' +import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' +import { ProcessedMailService } from 'src/app/services/rest/processed-mail.service' +import { ToastService } from 'src/app/services/toast.service' + +@Component({ + selector: 'pngx-processed-mail-dialog', + imports: [ + ConfirmButtonComponent, + CustomDatePipe, + NgbPagination, + NgbPopoverModule, + NgbTooltipModule, + NgxBootstrapIconsModule, + FormsModule, + ReactiveFormsModule, + SlicePipe, + ], + templateUrl: './processed-mail-dialog.component.html', + styleUrl: './processed-mail-dialog.component.scss', +}) +export class ProcessedMailDialogComponent implements OnInit { + private readonly activeModal = inject(NgbActiveModal) + private readonly processedMailService = inject(ProcessedMailService) + private readonly toastService = inject(ToastService) + + public processedMails: ProcessedMail[] = [] + + public loading: boolean = true + public toggleAllEnabled: boolean = false + public readonly selectedMailIds: Set = new Set() + + public page: number = 1 + + @Input() rule: MailRule + + ngOnInit(): void { + this.loadProcessedMails() + } + + public close() { + this.activeModal.close() + } + + private loadProcessedMails(): void { + this.loading = true + this.clearSelection() + this.processedMailService + .list(this.page, 50, 'processed_at', true, { rule: this.rule.id }) + .subscribe((result) => { + this.processedMails = result.results + this.loading = false + }) + } + + public deleteSelected(): void { + this.processedMailService + .bulk_delete(Array.from(this.selectedMailIds)) + .subscribe(() => { + this.toastService.showInfo($localize`Processed mail(s) deleted`) + this.loadProcessedMails() + }) + } + + public toggleAll(event: PointerEvent) { + if ((event.target as HTMLInputElement).checked) { + this.selectedMailIds.clear() + this.processedMails.forEach((mail) => this.selectedMailIds.add(mail.id)) + } else { + this.clearSelection() + } + } + + public clearSelection() { + this.toggleAllEnabled = false + this.selectedMailIds.clear() + } + + public toggleSelected(mail: ProcessedMail) { + this.selectedMailIds.has(mail.id) + ? this.selectedMailIds.delete(mail.id) + : this.selectedMailIds.add(mail.id) + } +} diff --git a/src-ui/src/app/components/manage/management-list/management-list.component.html b/src-ui/src/app/components/manage/management-list/management-list.component.html index 43b2f25cd..cb2f1010f 100644 --- a/src-ui/src/app/components/manage/management-list/management-list.component.html +++ b/src-ui/src/app/components/manage/management-list/management-list.component.html @@ -1,28 +1,75 @@ - + - - - - +
    + + + +
    +
    + +
    +
    + Select: +
    +
    + @if (selectedObjects.size > 0) { + + } + + +
    +
    + + + +
    -
    +
    - +
    +
    +
    + Show: +
    +
    + + per page +
    + +
    +
    +
    @@ -31,7 +78,7 @@
    - +
    @@ -45,7 +92,7 @@ - @if (loading) { + @if (loading && data.length === 0) {
    @@ -60,7 +107,7 @@
    -@if (!loading) { +@if (!loading || data.length > 0) {
    @if (collectionSize > 0) {
    @@ -71,7 +118,7 @@
    } @if (collectionSize > 20) { - + }
    } @@ -94,8 +141,14 @@ {{ getDocumentCount(object) }} @for (column of extraColumns; track column) { - @if (column.rendersHtml) { -
    + @if (column.badgeFn) { + + {{ column.badgeFn.call(null, object)?.text }} + } @else if (column.monospace) { {{ column.valueFn.call(null, object) }} } @else { @@ -114,7 +167,14 @@ @if (getDocumentCount(object) > 0) { - + Filter Documents ({{ getDocumentCount(object) }}) }
    @@ -129,9 +189,15 @@
    @if (getDocumentCount(object) > 0) {
    - + +  Documents{{ getDocumentCount(object) }} +
    }
    @@ -140,7 +206,7 @@ @if (object.children && object.children.length > 0) { @for (child of object.children; track child) { - + } } diff --git a/src-ui/src/app/components/manage/management-list/management-list.component.scss b/src-ui/src/app/components/manage/management-list/management-list.component.scss index de99b6584..52f8d5812 100644 --- a/src-ui/src/app/components/manage/management-list/management-list.component.scss +++ b/src-ui/src/app/components/manage/management-list/management-list.component.scss @@ -24,3 +24,7 @@ td.name-cell { margin-left: .5rem; } } + +select.small { + font-size: 0.875rem !important; // 14px +} diff --git a/src-ui/src/app/components/manage/management-list/management-list.component.spec.ts b/src-ui/src/app/components/manage/management-list/management-list.component.spec.ts index 7df6cd5a5..b2a494425 100644 --- a/src-ui/src/app/components/manage/management-list/management-list.component.spec.ts +++ b/src-ui/src/app/components/manage/management-list/management-list.component.spec.ts @@ -13,6 +13,7 @@ import { } from '@angular/core/testing' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { By } from '@angular/platform-browser' +import { RouterLinkWithHref } from '@angular/router' import { RouterTestingModule } from '@angular/router/testing' import { NgbModal, @@ -30,10 +31,10 @@ import { MATCH_NONE, } from 'src/app/data/matching-model' import { Tag } from 'src/app/data/tag' +import { SETTINGS_KEYS } from 'src/app/data/ui-settings' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { SortableDirective } from 'src/app/directives/sortable.directive' import { PermissionsGuard } from 'src/app/guards/permissions.guard' -import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' import { DocumentListViewService } from 'src/app/services/document-list-view.service' import { PermissionAction, @@ -41,6 +42,7 @@ import { } from 'src/app/services/permissions.service' import { BulkEditObjectOperation } from 'src/app/services/rest/abstract-name-filter-service' import { TagService } from 'src/app/services/rest/tag.service' +import { SettingsService } from 'src/app/services/settings.service' import { ToastService } from 'src/app/services/toast.service' import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component' import { EditDialogComponent } from '../../common/edit-dialog/edit-dialog.component' @@ -79,6 +81,7 @@ describe('ManagementListComponent', () => { let toastService: ToastService let documentListViewService: DocumentListViewService let permissionsService: PermissionsService + let settingsService: SettingsService beforeEach(async () => { TestBed.configureTestingModule({ @@ -93,7 +96,6 @@ describe('ManagementListComponent', () => { SortableDirective, PageHeaderComponent, IfPermissionsDirective, - SafeHtmlPipe, ConfirmDialogComponent, PermissionsDialogComponent, ], @@ -131,6 +133,7 @@ describe('ManagementListComponent', () => { modalService = TestBed.inject(NgbModal) toastService = TestBed.inject(ToastService) documentListViewService = TestBed.inject(DocumentListViewService) + settingsService = TestBed.inject(SettingsService) fixture = TestBed.createComponent(TagListComponent) component = fixture.componentInstance fixture.detectChanges() @@ -164,8 +167,7 @@ describe('ManagementListComponent', () => { const toastInfoSpy = jest.spyOn(toastService, 'showInfo') const reloadSpy = jest.spyOn(component, 'reloadData') - const createButton = fixture.debugElement.queryAll(By.css('button'))[4] - createButton.triggerEventHandler('click') + component.openCreateDialog() expect(modal).not.toBeUndefined() const editDialog = modal.componentInstance as EditDialogComponent @@ -188,8 +190,7 @@ describe('ManagementListComponent', () => { const toastInfoSpy = jest.spyOn(toastService, 'showInfo') const reloadSpy = jest.spyOn(component, 'reloadData') - const editButton = fixture.debugElement.queryAll(By.css('button'))[7] - editButton.triggerEventHandler('click') + component.openEditDialog(tags[0]) expect(modal).not.toBeUndefined() const editDialog = modal.componentInstance as EditDialogComponent @@ -213,8 +214,7 @@ describe('ManagementListComponent', () => { const deleteSpy = jest.spyOn(tagService, 'delete') const reloadSpy = jest.spyOn(component, 'reloadData') - const deleteButton = fixture.debugElement.queryAll(By.css('button'))[8] - deleteButton.triggerEventHandler('click') + component.openDeleteDialog(tags[0]) expect(modal).not.toBeUndefined() const editDialog = modal.componentInstance as ConfirmDialogComponent @@ -231,13 +231,31 @@ describe('ManagementListComponent', () => { expect(reloadSpy).toHaveBeenCalled() }) + it('should use the all list length for collection size when provided', fakeAsync(() => { + jest.spyOn(tagService, 'listFiltered').mockReturnValueOnce( + of({ + count: 1, + all: [1, 2, 3], + results: tags.slice(0, 1), + }) + ) + + component.reloadData() + tick(100) + + expect(component.collectionSize).toBe(3) + })) + it('should support quick filter for objects', () => { - const qfSpy = jest.spyOn(documentListViewService, 'quickFilter') - const filterButton = fixture.debugElement.queryAll(By.css('button'))[9] - filterButton.triggerEventHandler('click') - expect(qfSpy).toHaveBeenCalledWith([ + const expectedUrl = documentListViewService.getQuickFilterUrl([ { rule_type: FILTER_HAS_TAGS_ALL, value: tags[0].id.toString() }, - ]) // subclasses set the filter rule type + ]) + const filterLink = fixture.debugElement.query( + By.css('a.btn-outline-secondary') + ) + expect(filterLink).toBeTruthy() + const routerLink = filterLink.injector.get(RouterLinkWithHref) + expect(routerLink.urlTree).toEqual(expectedUrl) }) it('should reload on sort', () => { @@ -262,19 +280,84 @@ describe('ManagementListComponent', () => { expect(component.page).toEqual(1) }) - it('should support toggle all items in view', () => { + it('should support toggle select page in vew', () => { expect(component.selectedObjects.size).toEqual(0) - const toggleAllSpy = jest.spyOn(component, 'toggleAll') + const selectPageSpy = jest.spyOn(component, 'selectPage') const checkButton = fixture.debugElement.queryAll( By.css('input.form-check-input') )[0] - checkButton.nativeElement.dispatchEvent(new Event('click')) + checkButton.nativeElement.dispatchEvent(new Event('change')) checkButton.nativeElement.checked = true - checkButton.nativeElement.dispatchEvent(new Event('click')) - expect(toggleAllSpy).toHaveBeenCalled() + checkButton.nativeElement.dispatchEvent(new Event('change')) + expect(selectPageSpy).toHaveBeenCalled() expect(component.selectedObjects.size).toEqual(tags.length) }) + it('selectNone should clear selection and reset toggle flag', () => { + component.selectedObjects = new Set([tags[0].id, tags[1].id]) + component.togggleAll = true + + component.selectNone() + + expect(component.selectedObjects.size).toBe(0) + expect(component.togggleAll).toBe(false) + }) + + it('selectPage should select current page items or clear selection', () => { + component.selectPage(true) + expect(component.selectedObjects).toEqual(new Set(tags.map((t) => t.id))) + expect(component.togggleAll).toBe(true) + + component.togggleAll = true + component.selectPage(false) + expect(component.selectedObjects.size).toBe(0) + expect(component.togggleAll).toBe(false) + }) + + it('selectAll should use all IDs when collection size exists', () => { + ;(component as any).allIDs = [1, 2, 3, 4] + component.collectionSize = 4 + + component.selectAll() + + expect(component.selectedObjects).toEqual(new Set([1, 2, 3, 4])) + expect(component.togggleAll).toBe(true) + }) + + it('selectAll should clear selection when collection size is zero', () => { + component.selectedObjects = new Set([1]) + component.collectionSize = 0 + component.togggleAll = true + + component.selectAll() + + expect(component.selectedObjects.size).toBe(0) + expect(component.togggleAll).toBe(false) + }) + + it('toggleSelected should toggle object selection and update toggle state', () => { + component.toggleSelected(tags[0]) + expect(component.selectedObjects.has(tags[0].id)).toBe(true) + expect(component.togggleAll).toBe(false) + + component.toggleSelected(tags[1]) + component.toggleSelected(tags[2]) + expect(component.togggleAll).toBe(true) + + component.toggleSelected(tags[1]) + expect(component.selectedObjects.has(tags[1].id)).toBe(false) + expect(component.togggleAll).toBe(false) + }) + + it('areAllPageItemsSelected should return false when page has no selectable items', () => { + component.data = [] + component.selectedObjects.clear() + + expect((component as any).areAllPageItemsSelected()).toBe(false) + + component.data = tags + }) + it('should support bulk edit permissions', () => { const bulkEditPermsSpy = jest.spyOn(tagService, 'bulk_edit_objects') component.toggleSelected(tags[0]) @@ -347,4 +430,87 @@ describe('ManagementListComponent', () => { expect(component.userCanBulkEdit(PermissionAction.Delete)).toBeFalsy() expect(component.userCanBulkEdit(PermissionAction.Change)).toBeFalsy() }) + + it('should return an original object from filtered child object', () => { + const childTag: Tag = { + id: 4, + name: 'Child Tag', + matching_algorithm: MATCH_LITERAL, + match: 'child', + document_count: 10, + parent: 1, + } + component['unfilteredData'].push(childTag) + const original = component.getOriginalObject({ id: 4 } as Tag) + expect(original).toEqual(childTag) + }) + + it('getSelectableIDs should return flat ids when not overridden', () => { + const ids = ( + ManagementListComponent.prototype as any + ).getSelectableIDs.call({}, [{ id: 1 }, { id: 5 }] as any) + expect(ids).toEqual([1, 5]) + }) + + it('pageSize getter should return stored page size or default to 25', () => { + jest.spyOn(settingsService, 'get').mockReturnValue({ tags: 50 }) + component.typeNamePlural = 'tags' + + expect(component.pageSize).toBe(50) + }) + + it('pageSize getter should return 25 when no size is stored', () => { + const settingsService = TestBed.inject(SettingsService) + jest.spyOn(settingsService, 'get').mockReturnValue({}) + component.typeNamePlural = 'tags' + + expect(component.pageSize).toBe(25) + }) + + it('pageSize setter should update settings, reset page and reload data on success', fakeAsync(() => { + const reloadSpy = jest.spyOn(component, 'reloadData') + const toastErrorSpy = jest.spyOn(toastService, 'showError') + + jest.spyOn(settingsService, 'get').mockReturnValue({ tags: 25 }) + jest.spyOn(settingsService, 'set').mockImplementation(() => {}) + jest + .spyOn(settingsService, 'storeSettings') + .mockReturnValue(of({ success: true })) + + component.typeNamePlural = 'tags' + component.page = 2 + component.pageSize = 100 + + tick() + + expect(settingsService.set).toHaveBeenCalledWith( + SETTINGS_KEYS.OBJECT_LIST_SIZES, + { tags: 100 } + ) + expect(component.page).toBe(1) + expect(reloadSpy).toHaveBeenCalled() + expect(toastErrorSpy).not.toHaveBeenCalled() + })) + + it('pageSize setter should show error toast on settings store failure', fakeAsync(() => { + const reloadSpy = jest.spyOn(component, 'reloadData') + const toastErrorSpy = jest.spyOn(toastService, 'showError') + + jest.spyOn(settingsService, 'get').mockReturnValue({ tags: 25 }) + jest.spyOn(settingsService, 'set').mockImplementation(() => {}) + jest + .spyOn(settingsService, 'storeSettings') + .mockReturnValue(throwError(() => new Error('error storing settings'))) + + component.typeNamePlural = 'tags' + component.pageSize = 50 + + tick() + + expect(toastErrorSpy).toHaveBeenCalledWith( + 'Error saving settings', + expect.any(Error) + ) + expect(reloadSpy).not.toHaveBeenCalled() + })) }) diff --git a/src-ui/src/app/components/manage/management-list/management-list.component.ts b/src-ui/src/app/components/manage/management-list/management-list.component.ts index d604a6e64..6f5e9c0dd 100644 --- a/src-ui/src/app/components/manage/management-list/management-list.component.ts +++ b/src-ui/src/app/components/manage/management-list/management-list.component.ts @@ -23,6 +23,7 @@ import { MatchingModel, } from 'src/app/data/matching-model' import { ObjectWithPermissions } from 'src/app/data/object-with-permissions' +import { SETTINGS_KEYS } from 'src/app/data/ui-settings' import { SortableDirective, SortEvent, @@ -37,6 +38,7 @@ import { AbstractNameFilterService, BulkEditObjectOperation, } from 'src/app/services/rest/abstract-name-filter-service' +import { SettingsService } from 'src/app/services/settings.service' import { ToastService } from 'src/app/services/toast.service' import { ConfirmDialogComponent } from '../../common/confirm-dialog/confirm-dialog.component' import { EditDialogMode } from '../../common/edit-dialog/edit-dialog.component' @@ -48,9 +50,13 @@ export interface ManagementListColumn { name: string - valueFn: any + valueFn?: any - rendersHtml?: boolean + badgeFn?: (object: any) => { + text: string + textColor?: string + backgroundColor?: string + } hideOnMobile?: boolean @@ -76,10 +82,13 @@ export abstract class ManagementListComponent public permissionType: PermissionType public extraColumns: ManagementListColumn[] + private readonly settingsService = inject(SettingsService) + @ViewChildren(SortableDirective) headers: QueryList public data: T[] = [] private unfilteredData: T[] = [] + private allIDs: number[] = [] public page = 1 @@ -145,13 +154,17 @@ export abstract class ManagementListComponent ) } + public getOriginalObject(object: T): T { + return this.unfilteredData.find((d) => d?.id == object?.id) || object + } + reloadData(extraParams: { [key: string]: any } = null) { this.loading = true this.clearSelection() this.service .listFiltered( this.page, - null, + this.pageSize, this.sortField, this.sortReverse, this._nameFilter, @@ -163,7 +176,8 @@ export abstract class ManagementListComponent tap((c) => { this.unfilteredData = c.results this.data = this.filterData(c.results) - this.collectionSize = c.count + this.collectionSize = c.all?.length ?? c.count + this.allIDs = c.all }), delay(100) ) @@ -222,8 +236,8 @@ export abstract class ManagementListComponent abstract getDeleteMessage(object: T) - filterDocuments(object: MatchingModel) { - this.documentListViewService.quickFilter([ + getDocumentFilterUrl(object: MatchingModel) { + return this.documentListViewService.getQuickFilterUrl([ { rule_type: this.filterRuleType, value: object.id.toString() }, ]) } @@ -270,6 +284,30 @@ export abstract class ManagementListComponent if (event.code == 'Escape') this.nameFilterDebounce.next(null) } + public get pageSize(): number { + return ( + this.settingsService.get(SETTINGS_KEYS.OBJECT_LIST_SIZES)[ + this.typeNamePlural + ] || 25 + ) + } + + public set pageSize(newPageSize: number) { + this.settingsService.set(SETTINGS_KEYS.OBJECT_LIST_SIZES, { + ...this.settingsService.get(SETTINGS_KEYS.OBJECT_LIST_SIZES), + [this.typeNamePlural]: newPageSize, + }) + this.settingsService.storeSettings().subscribe({ + next: () => { + this.page = 1 + this.reloadData() + }, + error: (error) => { + this.toastService.showError($localize`Error saving settings`, error) + }, + }) + } + userCanDelete(object: ObjectWithPermissions): boolean { return this.permissionsService.currentUserOwnsObject(object) } @@ -292,12 +330,8 @@ export abstract class ManagementListComponent return ownsAll } - toggleAll(event: PointerEvent) { - if ((event.target as HTMLInputElement).checked) { - this.selectedObjects = new Set(this.data.map((o) => o.id)) - } else { - this.clearSelection() - } + protected getSelectableIDs(objects: T[]): number[] { + return objects.map((o) => o.id) } clearSelection() { @@ -305,10 +339,38 @@ export abstract class ManagementListComponent this.selectedObjects.clear() } + selectNone() { + this.clearSelection() + } + + selectPage(select: boolean) { + if (select) { + this.selectedObjects = new Set(this.getSelectableIDs(this.data)) + this.togggleAll = this.areAllPageItemsSelected() + } else { + this.clearSelection() + } + } + + selectAll() { + if (!this.collectionSize) { + this.clearSelection() + return + } + this.selectedObjects = new Set(this.allIDs) + this.togggleAll = this.areAllPageItemsSelected() + } + toggleSelected(object) { this.selectedObjects.has(object.id) ? this.selectedObjects.delete(object.id) : this.selectedObjects.add(object.id) + this.togggleAll = this.areAllPageItemsSelected() + } + + protected areAllPageItemsSelected(): boolean { + const ids = this.getSelectableIDs(this.data) + return ids.length > 0 && ids.every((id) => this.selectedObjects.has(id)) } setPermissions() { @@ -350,7 +412,7 @@ export abstract class ManagementListComponent backdrop: 'static', }) modal.componentInstance.title = $localize`Confirm delete` - modal.componentInstance.messageBold = $localize`This operation will permanently delete all objects.` + modal.componentInstance.messageBold = $localize`This operation will permanently delete the selected ${this.typeNamePlural}.` modal.componentInstance.message = $localize`This operation cannot be undone.` modal.componentInstance.btnClass = 'btn-danger' modal.componentInstance.btnCaption = $localize`Proceed` diff --git a/src-ui/src/app/components/manage/saved-views/saved-views.component.html b/src-ui/src/app/components/manage/saved-views/saved-views.component.html index 10487fec8..2f5ef3338 100644 --- a/src-ui/src/app/components/manage/saved-views/saved-views.component.html +++ b/src-ui/src/app/components/manage/saved-views/saved-views.component.html @@ -51,6 +51,7 @@ @if (displayFields) { } + Note: ordering is not preserved
  • diff --git a/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.spec.ts b/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.spec.ts index 22060bc61..e59c52789 100644 --- a/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.spec.ts +++ b/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.spec.ts @@ -9,7 +9,6 @@ import { of } from 'rxjs' import { StoragePath } from 'src/app/data/storage-path' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { SortableDirective } from 'src/app/directives/sortable.directive' -import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' import { StoragePathService } from 'src/app/services/rest/storage-path.service' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { StoragePathListComponent } from './storage-path-list.component' @@ -30,7 +29,6 @@ describe('StoragePathListComponent', () => { SortableDirective, PageHeaderComponent, IfPermissionsDirective, - SafeHtmlPipe, ], providers: [ DatePipe, diff --git a/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.ts b/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.ts index 346d956e8..3ab940521 100644 --- a/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.ts +++ b/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.ts @@ -1,6 +1,7 @@ import { NgClass, NgTemplateOutlet, TitleCasePipe } from '@angular/common' import { Component, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { RouterModule } from '@angular/router' import { NgbDropdownModule, NgbPaginationModule, @@ -10,9 +11,9 @@ import { FILTER_HAS_STORAGE_PATH_ANY } from 'src/app/data/filter-rule-type' import { StoragePath } from 'src/app/data/storage-path' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { SortableDirective } from 'src/app/directives/sortable.directive' -import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' import { PermissionType } from 'src/app/services/permissions.service' import { StoragePathService } from 'src/app/services/rest/storage-path.service' +import { ClearableBadgeComponent } from '../../common/clearable-badge/clearable-badge.component' import { StoragePathEditDialogComponent } from '../../common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { ManagementListComponent } from '../management-list/management-list.component' @@ -26,14 +27,15 @@ import { ManagementListComponent } from '../management-list/management-list.comp PageHeaderComponent, TitleCasePipe, IfPermissionsDirective, - SafeHtmlPipe, FormsModule, ReactiveFormsModule, + RouterModule, NgClass, NgTemplateOutlet, NgbDropdownModule, NgbPaginationModule, NgxBootstrapIconsModule, + ClearableBadgeComponent, ], }) export class StoragePathListComponent extends ManagementListComponent { diff --git a/src-ui/src/app/components/manage/tag-list/tag-list.component.spec.ts b/src-ui/src/app/components/manage/tag-list/tag-list.component.spec.ts index 4e723993c..a69eacba0 100644 --- a/src-ui/src/app/components/manage/tag-list/tag-list.component.spec.ts +++ b/src-ui/src/app/components/manage/tag-list/tag-list.component.spec.ts @@ -8,7 +8,6 @@ import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' import { of } from 'rxjs' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { SortableDirective } from 'src/app/directives/sortable.directive' -import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' import { TagService } from 'src/app/services/rest/tag.service' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { TagListComponent } from './tag-list.component' @@ -17,6 +16,7 @@ describe('TagListComponent', () => { let component: TagListComponent let fixture: ComponentFixture let tagService: TagService + let listFilteredSpy: jest.SpyInstance beforeEach(async () => { TestBed.configureTestingModule({ @@ -29,7 +29,6 @@ describe('TagListComponent', () => { SortableDirective, PageHeaderComponent, IfPermissionsDirective, - SafeHtmlPipe, ], providers: [ DatePipe, @@ -39,7 +38,7 @@ describe('TagListComponent', () => { }).compileComponents() tagService = TestBed.inject(TagService) - jest.spyOn(tagService, 'listFiltered').mockReturnValue( + listFilteredSpy = jest.spyOn(tagService, 'listFiltered').mockReturnValue( of({ count: 3, all: [1, 2, 3], @@ -71,4 +70,80 @@ describe('TagListComponent', () => { 'Do you really want to delete the tag "Tag1"?' ) }) + + it('should omit matching children from top level when their parent is present', () => { + const tags = [ + { + id: 1, + name: 'Tag1', + parent: null, + children: [{ id: 2, name: 'Tag2', parent: 1 }], + }, + { id: 2, name: 'Tag2', parent: 1 }, + { id: 3, name: 'Tag3', parent: null }, + ] + component['_nameFilter'] = null // Simulate empty name filter + const filtered = component.filterData(tags as any) + expect(filtered.length).toBe(2) + expect(filtered.find((t) => t.id === 2)).toBeUndefined() + + component['_nameFilter'] = 'Tag2' // Simulate non-empty name filter + const filteredWithName = component.filterData(tags as any) + expect(filteredWithName.length).toBe(2) + expect(filteredWithName.find((t) => t.id === 2)).toBeUndefined() + expect( + filteredWithName + .find((t) => t.id === 1) + ?.children?.some((c) => c.id === 2) + ).toBe(true) + }) + + it('should request only parent tags when no name filter is applied', () => { + expect(tagService.listFiltered).toHaveBeenCalledWith( + 1, + 25, + undefined, + undefined, + undefined, + true, + { is_root: true } + ) + }) + + it('should include child tags when a name filter is applied', () => { + listFilteredSpy.mockClear() + component['_nameFilter'] = 'Tag' + component.reloadData() + expect(tagService.listFiltered).toHaveBeenCalledWith( + 1, + 25, + undefined, + undefined, + 'Tag', + true, + null + ) + }) + + it('should include child tags when selecting all', () => { + const parent = { + id: 10, + name: 'Parent', + children: [ + { + id: 11, + name: 'Child', + }, + ], + } + + component.data = [parent as any] + component.selectPage(true) + + expect(component.selectedObjects.has(10)).toBe(true) + expect(component.selectedObjects.has(11)).toBe(true) + + component.selectPage(false) + expect(component.selectedObjects.size).toBe(0) + }) }) diff --git a/src-ui/src/app/components/manage/tag-list/tag-list.component.ts b/src-ui/src/app/components/manage/tag-list/tag-list.component.ts index 12481594f..87045a50a 100644 --- a/src-ui/src/app/components/manage/tag-list/tag-list.component.ts +++ b/src-ui/src/app/components/manage/tag-list/tag-list.component.ts @@ -1,6 +1,7 @@ import { NgClass, NgTemplateOutlet, TitleCasePipe } from '@angular/common' import { Component, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { RouterModule } from '@angular/router' import { NgbDropdownModule, NgbPaginationModule, @@ -10,9 +11,9 @@ import { FILTER_HAS_TAGS_ALL } from 'src/app/data/filter-rule-type' import { Tag } from 'src/app/data/tag' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { SortableDirective } from 'src/app/directives/sortable.directive' -import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' import { PermissionType } from 'src/app/services/permissions.service' import { TagService } from 'src/app/services/rest/tag.service' +import { ClearableBadgeComponent } from '../../common/clearable-badge/clearable-badge.component' import { TagEditDialogComponent } from '../../common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { ManagementListComponent } from '../management-list/management-list.component' @@ -26,14 +27,15 @@ import { ManagementListComponent } from '../management-list/management-list.comp PageHeaderComponent, TitleCasePipe, IfPermissionsDirective, - SafeHtmlPipe, FormsModule, ReactiveFormsModule, + RouterModule, NgClass, NgTemplateOutlet, NgbDropdownModule, NgbPaginationModule, NgxBootstrapIconsModule, + ClearableBadgeComponent, ], }) export class TagListComponent extends ManagementListComponent { @@ -49,10 +51,11 @@ export class TagListComponent extends ManagementListComponent { { key: 'color', name: $localize`Color`, - rendersHtml: true, - valueFn: (t: Tag) => { - return `${t.color}` - }, + badgeFn: (t: Tag) => ({ + text: t.color, + textColor: t.text_color, + backgroundColor: t.color, + }), }, ] } @@ -61,7 +64,33 @@ export class TagListComponent extends ManagementListComponent { return $localize`Do you really want to delete the tag "${object.name}"?` } + override reloadData(extraParams: { [key: string]: any } = null) { + const params = this.nameFilter?.length + ? extraParams + : { ...extraParams, is_root: true } + super.reloadData(params) + } + filterData(data: Tag[]) { - return data.filter((tag) => !tag.parent) + if (!this.nameFilter?.length) { + return data.filter((tag) => !tag.parent) + } + + // When filtering by name, exclude children if their parent is also present + const availableIds = new Set(data.map((tag) => tag.id)) + return data.filter((tag) => !tag.parent || !availableIds.has(tag.parent)) + } + + protected override getSelectableIDs(tags: Tag[]): number[] { + const ids: number[] = [] + for (const tag of tags.filter(Boolean)) { + if (tag.id != null) { + ids.push(tag.id) + } + if (Array.isArray(tag.children) && tag.children.length) { + ids.push(...this.getSelectableIDs(tag.children)) + } + } + return ids } } diff --git a/src-ui/src/app/data/document-suggestions.ts b/src-ui/src/app/data/document-suggestions.ts index 85f9f9d22..447c4402b 100644 --- a/src-ui/src/app/data/document-suggestions.ts +++ b/src-ui/src/app/data/document-suggestions.ts @@ -1,11 +1,17 @@ export interface DocumentSuggestions { + title?: string + tags?: number[] + suggested_tags?: string[] correspondents?: number[] + suggested_correspondents?: string[] document_types?: number[] + suggested_document_types?: string[] storage_paths?: number[] + suggested_storage_paths?: string[] dates?: string[] // ISO-formatted date string e.g. 2022-11-03 } diff --git a/src-ui/src/app/data/document.ts b/src-ui/src/app/data/document.ts index 8b7d32876..c8773e0a0 100644 --- a/src-ui/src/app/data/document.ts +++ b/src-ui/src/app/data/document.ts @@ -163,6 +163,8 @@ export interface Document extends ObjectWithPermissions { head_version?: number versions?: number[] + duplicate_documents?: Document[] + // Frontend only __changedFields?: string[] } diff --git a/src-ui/src/app/data/paperless-config.ts b/src-ui/src/app/data/paperless-config.ts index 3afca66ff..ce4faff81 100644 --- a/src-ui/src/app/data/paperless-config.ts +++ b/src-ui/src/app/data/paperless-config.ts @@ -44,12 +44,24 @@ export enum ConfigOptionType { Boolean = 'boolean', JSON = 'json', File = 'file', + Password = 'password', } export const ConfigCategory = { General: $localize`General Settings`, OCR: $localize`OCR Settings`, Barcode: $localize`Barcode Settings`, + AI: $localize`AI Settings`, +} + +export const LLMEmbeddingBackendConfig = { + OPENAI: 'openai', + HUGGINGFACE: 'huggingface', +} + +export const LLMBackendConfig = { + OPENAI: 'openai', + OLLAMA: 'ollama', } export interface ConfigOption { @@ -59,6 +71,7 @@ export interface ConfigOption { choices?: Array<{ id: string; name: string }> config_key?: string category: string + note?: string } function mapToItems(enumObj: Object): Array<{ id: string; name: string }> { @@ -258,6 +271,65 @@ export const PaperlessConfigOptions: ConfigOption[] = [ config_key: 'PAPERLESS_CONSUMER_TAG_BARCODE_MAPPING', category: ConfigCategory.Barcode, }, + { + key: 'barcode_tag_split', + title: $localize`Split on Tag Barcodes`, + type: ConfigOptionType.Boolean, + config_key: 'PAPERLESS_CONSUMER_TAG_BARCODE_SPLIT', + category: ConfigCategory.Barcode, + }, + { + key: 'ai_enabled', + title: $localize`AI Enabled`, + type: ConfigOptionType.Boolean, + config_key: 'PAPERLESS_AI_ENABLED', + category: ConfigCategory.AI, + note: $localize`Consider privacy implications when enabling AI features, especially if using a remote model.`, + }, + { + key: 'llm_embedding_backend', + title: $localize`LLM Embedding Backend`, + type: ConfigOptionType.Select, + choices: mapToItems(LLMEmbeddingBackendConfig), + config_key: 'PAPERLESS_AI_LLM_EMBEDDING_BACKEND', + category: ConfigCategory.AI, + }, + { + key: 'llm_embedding_model', + title: $localize`LLM Embedding Model`, + type: ConfigOptionType.String, + config_key: 'PAPERLESS_AI_LLM_EMBEDDING_MODEL', + category: ConfigCategory.AI, + }, + { + key: 'llm_backend', + title: $localize`LLM Backend`, + type: ConfigOptionType.Select, + choices: mapToItems(LLMBackendConfig), + config_key: 'PAPERLESS_AI_LLM_BACKEND', + category: ConfigCategory.AI, + }, + { + key: 'llm_model', + title: $localize`LLM Model`, + type: ConfigOptionType.String, + config_key: 'PAPERLESS_AI_LLM_MODEL', + category: ConfigCategory.AI, + }, + { + key: 'llm_api_key', + title: $localize`LLM API Key`, + type: ConfigOptionType.Password, + config_key: 'PAPERLESS_AI_LLM_API_KEY', + category: ConfigCategory.AI, + }, + { + key: 'llm_endpoint', + title: $localize`LLM Endpoint`, + type: ConfigOptionType.String, + config_key: 'PAPERLESS_AI_LLM_ENDPOINT', + category: ConfigCategory.AI, + }, ] export interface PaperlessConfig extends ObjectWithId { @@ -287,4 +359,12 @@ export interface PaperlessConfig extends ObjectWithId { barcode_max_pages: number barcode_enable_tag: boolean barcode_tag_mapping: object + barcode_tag_split: boolean + ai_enabled: boolean + llm_embedding_backend: string + llm_embedding_model: string + llm_backend: string + llm_model: string + llm_api_key: string + llm_endpoint: string } diff --git a/src-ui/src/app/data/paperless-task.ts b/src-ui/src/app/data/paperless-task.ts index 1bec277eb..19dd3921e 100644 --- a/src-ui/src/app/data/paperless-task.ts +++ b/src-ui/src/app/data/paperless-task.ts @@ -1,3 +1,4 @@ +import { Document } from './document' import { ObjectWithId } from './object-with-id' export enum PaperlessTaskType { @@ -11,6 +12,7 @@ export enum PaperlessTaskName { TrainClassifier = 'train_classifier', SanityCheck = 'check_sanity', IndexOptimize = 'index_optimize', + LLMIndexUpdate = 'llmindex_update', } export enum PaperlessTaskStatus { @@ -41,5 +43,7 @@ export interface PaperlessTask extends ObjectWithId { related_document?: number + duplicate_documents?: Document[] + owner?: number } diff --git a/src-ui/src/app/data/processed-mail.ts b/src-ui/src/app/data/processed-mail.ts new file mode 100644 index 000000000..7eacf2415 --- /dev/null +++ b/src-ui/src/app/data/processed-mail.ts @@ -0,0 +1,12 @@ +import { ObjectWithId } from './object-with-id' + +export interface ProcessedMail extends ObjectWithId { + rule: number // MailRule.id + folder: string + uid: number + subject: string + received: Date + processed: Date + status: string + error: string +} diff --git a/src-ui/src/app/data/share-link-bundle.ts b/src-ui/src/app/data/share-link-bundle.ts new file mode 100644 index 000000000..fe6134997 --- /dev/null +++ b/src-ui/src/app/data/share-link-bundle.ts @@ -0,0 +1,53 @@ +import { FileVersion } from './share-link' + +export enum ShareLinkBundleStatus { + Pending = 'pending', + Processing = 'processing', + Ready = 'ready', + Failed = 'failed', +} + +export type ShareLinkBundleError = { + bundle_id: number + message?: string + exception_type?: string + timestamp?: string +} + +export interface ShareLinkBundleSummary { + id: number + slug: string + created: string // Date + expiration?: string // Date + documents: number[] + document_count: number + file_version: FileVersion + status: ShareLinkBundleStatus + built_at?: string + size_bytes?: number + last_error?: ShareLinkBundleError +} + +export interface ShareLinkBundleCreatePayload { + document_ids: number[] + file_version: FileVersion + expiration_days: number | null +} + +export const SHARE_LINK_BUNDLE_STATUS_LABELS: Record< + ShareLinkBundleStatus, + string +> = { + [ShareLinkBundleStatus.Pending]: $localize`Pending`, + [ShareLinkBundleStatus.Processing]: $localize`Processing`, + [ShareLinkBundleStatus.Ready]: $localize`Ready`, + [ShareLinkBundleStatus.Failed]: $localize`Failed`, +} + +export const SHARE_LINK_BUNDLE_FILE_VERSION_LABELS: Record< + FileVersion, + string +> = { + [FileVersion.Archive]: $localize`Archive`, + [FileVersion.Original]: $localize`Original`, +} diff --git a/src-ui/src/app/data/share-link.ts b/src-ui/src/app/data/share-link.ts index debc8c111..d9710bd47 100644 --- a/src-ui/src/app/data/share-link.ts +++ b/src-ui/src/app/data/share-link.ts @@ -5,6 +5,18 @@ export enum FileVersion { Original = 'original', } +export interface ShareLinkExpirationOption { + label: string + value: number | null +} + +export const SHARE_LINK_EXPIRATION_OPTIONS: ShareLinkExpirationOption[] = [ + { label: $localize`1 day`, value: 1 }, + { label: $localize`7 days`, value: 7 }, + { label: $localize`30 days`, value: 30 }, + { label: $localize`Never`, value: null }, +] + export interface ShareLink extends ObjectWithPermissions { created: string // Date diff --git a/src-ui/src/app/data/system-status.ts b/src-ui/src/app/data/system-status.ts index 334dc54f8..7dcbffa20 100644 --- a/src-ui/src/app/data/system-status.ts +++ b/src-ui/src/app/data/system-status.ts @@ -7,6 +7,7 @@ export enum SystemStatusItemStatus { OK = 'OK', ERROR = 'ERROR', WARNING = 'WARNING', + DISABLED = 'DISABLED', } export interface SystemStatus { @@ -43,6 +44,9 @@ export interface SystemStatus { sanity_check_status: SystemStatusItemStatus sanity_check_last_run: string // ISO date string sanity_check_error: string + llmindex_status: SystemStatusItemStatus + llmindex_last_modified: string // ISO date string + llmindex_error: string } websocket_connected?: SystemStatusItemStatus // added client-side } diff --git a/src-ui/src/app/data/ui-settings.ts b/src-ui/src/app/data/ui-settings.ts index 6ace74810..9b72cb1d6 100644 --- a/src-ui/src/app/data/ui-settings.ts +++ b/src-ui/src/app/data/ui-settings.ts @@ -1,3 +1,5 @@ +import { PdfEditorEditMode } from '../components/common/pdf-editor/pdf-editor-edit-mode' +import { PdfZoomScale } from '../components/common/pdf-viewer/pdf-viewer.types' import { User } from './user' export interface UiSettings { @@ -61,6 +63,7 @@ export const SETTINGS_KEYS = { SIDEBAR_VIEWS_SHOW_COUNT: 'general-settings:saved-views:sidebar-views-show-count', TOUR_COMPLETE: 'general-settings:tour-complete', + OBJECT_LIST_SIZES: 'general-settings:object-list-sizes', DEFAULT_PERMS_OWNER: 'general-settings:permissions:default-owner', DEFAULT_PERMS_VIEW_USERS: 'general-settings:permissions:default-view-users', DEFAULT_PERMS_VIEW_GROUPS: 'general-settings:permissions:default-view-groups', @@ -70,12 +73,17 @@ export const SETTINGS_KEYS = { 'general-settings:document-editing:remove-inbox-tags', DOCUMENT_EDITING_OVERLAY_THUMBNAIL: 'general-settings:document-editing:overlay-thumbnail', + DOCUMENT_DETAILS_HIDDEN_FIELDS: + 'general-settings:document-details:hidden-fields', SEARCH_DB_ONLY: 'general-settings:search:db-only', SEARCH_FULL_TYPE: 'general-settings:search:more-link', + PDF_EDITOR_DEFAULT_EDIT_MODE: + 'general-settings:document-editing:default-edit-mode', EMPTY_TRASH_DELAY: 'trash_delay', GMAIL_OAUTH_URL: 'gmail_oauth_url', OUTLOOK_OAUTH_URL: 'outlook_oauth_url', EMAIL_ENABLED: 'email_enabled', + AI_ENABLED: 'ai_enabled', } export const SETTINGS: UiSetting[] = [ @@ -194,6 +202,16 @@ export const SETTINGS: UiSetting[] = [ type: 'boolean', default: false, }, + { + key: SETTINGS_KEYS.OBJECT_LIST_SIZES, + type: 'object', + default: { + correspondents: 25, + document_types: 25, + tags: 25, + storage_paths: 25, + }, + }, { key: SETTINGS_KEYS.DEFAULT_PERMS_OWNER, type: 'number', @@ -254,6 +272,11 @@ export const SETTINGS: UiSetting[] = [ type: 'boolean', default: true, }, + { + key: SETTINGS_KEYS.DOCUMENT_DETAILS_HIDDEN_FIELDS, + type: 'array', + default: [], + }, { key: SETTINGS_KEYS.SEARCH_DB_ONLY, type: 'boolean', @@ -287,6 +310,16 @@ export const SETTINGS: UiSetting[] = [ { key: SETTINGS_KEYS.PDF_VIEWER_ZOOM_SETTING, type: 'string', - default: 'page-width', // ZoomSetting from 'document-detail.component' + default: PdfZoomScale.PageWidth, + }, + { + key: SETTINGS_KEYS.AI_ENABLED, + type: 'boolean', + default: false, + }, + { + key: SETTINGS_KEYS.PDF_EDITOR_DEFAULT_EDIT_MODE, + type: 'string', + default: PdfEditorEditMode.Create, }, ] diff --git a/src-ui/src/app/data/workflow-action.ts b/src-ui/src/app/data/workflow-action.ts index 06c46806e..ff1509693 100644 --- a/src-ui/src/app/data/workflow-action.ts +++ b/src-ui/src/app/data/workflow-action.ts @@ -5,6 +5,7 @@ export enum WorkflowActionType { Removal = 2, Email = 3, Webhook = 4, + PasswordRemoval = 5, } export interface WorkflowActionEmail extends ObjectWithId { @@ -97,4 +98,6 @@ export interface WorkflowAction extends ObjectWithId { email?: WorkflowActionEmail webhook?: WorkflowActionWebhook + + passwords?: string[] } diff --git a/src-ui/src/app/data/workflow-trigger.ts b/src-ui/src/app/data/workflow-trigger.ts index 6e2d9cda7..2bc89f188 100644 --- a/src-ui/src/app/data/workflow-trigger.ts +++ b/src-ui/src/app/data/workflow-trigger.ts @@ -40,6 +40,24 @@ export interface WorkflowTrigger extends ObjectWithId { filter_has_tags?: number[] // Tag.id[] + filter_has_all_tags?: number[] // Tag.id[] + + filter_has_not_tags?: number[] // Tag.id[] + + filter_has_any_correspondents?: number[] // Correspondent.id[] + + filter_has_not_correspondents?: number[] // Correspondent.id[] + + filter_has_any_document_types?: number[] // DocumentType.id[] + + filter_has_not_document_types?: number[] // DocumentType.id[] + + filter_has_any_storage_paths?: number[] // StoragePath.id[] + + filter_has_not_storage_paths?: number[] // StoragePath.id[] + + filter_custom_field_query?: string + filter_has_correspondent?: number // Correspondent.id filter_has_document_type?: number // DocumentType.id diff --git a/src-ui/src/app/guards/dirty-saved-view.guard.spec.ts b/src-ui/src/app/guards/dirty-saved-view.guard.spec.ts index a430d8ac7..a7611cd78 100644 --- a/src-ui/src/app/guards/dirty-saved-view.guard.spec.ts +++ b/src-ui/src/app/guards/dirty-saved-view.guard.spec.ts @@ -4,6 +4,7 @@ import { TestBed } from '@angular/core/testing' import { RouterTestingModule } from '@angular/router/testing' import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' import { allIcons, NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' +import { provideUiTour } from 'ngx-ui-tour-ng-bootstrap' import { routes } from '../app-routing.module' import { ConfirmDialogComponent } from '../components/common/confirm-dialog/confirm-dialog.component' import { DocumentListComponent } from '../components/document-list/document-list.component' @@ -30,6 +31,7 @@ describe('DirtySavedViewGuard', () => { DocumentListComponent, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), + provideUiTour(), ], }) diff --git a/src-ui/src/app/guards/permissions.guard.spec.ts b/src-ui/src/app/guards/permissions.guard.spec.ts index 77fe615e1..c10232f2b 100644 --- a/src-ui/src/app/guards/permissions.guard.spec.ts +++ b/src-ui/src/app/guards/permissions.guard.spec.ts @@ -1,10 +1,10 @@ import { TestBed } from '@angular/core/testing' import { ActivatedRoute, RouterState } from '@angular/router' -import { TourService } from 'ngx-ui-tour-ng-bootstrap' +import { provideUiTour, TourService } from 'ngx-ui-tour-ng-bootstrap' import { PermissionAction, - PermissionType, PermissionsService, + PermissionType, } from '../services/permissions.service' import { ToastService } from '../services/toast.service' import { PermissionsGuard } from './permissions.guard' @@ -45,6 +45,7 @@ describe('PermissionsGuard', () => { }, TourService, ToastService, + provideUiTour(), ], }) diff --git a/src-ui/src/app/interceptors/api-version.interceptor.spec.ts b/src-ui/src/app/interceptors/api-version.interceptor.spec.ts index c4ddd9349..154c50bc9 100644 --- a/src-ui/src/app/interceptors/api-version.interceptor.spec.ts +++ b/src-ui/src/app/interceptors/api-version.interceptor.spec.ts @@ -1,30 +1,41 @@ -import { HttpEvent, HttpRequest } from '@angular/common/http' +import { + HttpClient, + provideHttpClient, + withInterceptors, +} from '@angular/common/http' +import { + HttpTestingController, + provideHttpClientTesting, +} from '@angular/common/http/testing' import { TestBed } from '@angular/core/testing' -import { of } from 'rxjs' import { environment } from 'src/environments/environment' -import { ApiVersionInterceptor } from './api-version.interceptor' +import { withApiVersionInterceptor } from './api-version.interceptor' describe('ApiVersionInterceptor', () => { - let interceptor: ApiVersionInterceptor + let httpClient: HttpClient + let httpMock: HttpTestingController beforeEach(() => { TestBed.configureTestingModule({ - providers: [ApiVersionInterceptor], + providers: [ + provideHttpClient(withInterceptors([withApiVersionInterceptor])), + provideHttpClientTesting(), + ], }) - interceptor = TestBed.inject(ApiVersionInterceptor) + httpClient = TestBed.inject(HttpClient) + httpMock = TestBed.inject(HttpTestingController) }) it('should add api version to headers', () => { - interceptor.intercept(new HttpRequest('GET', 'https://example.com'), { - handle: (request) => { - const header = request.headers['lazyUpdate'][0] - expect(header.name).toEqual('Accept') - expect(header.value).toEqual( - `application/json; version=${environment.apiVersion}` - ) - return of({} as HttpEvent) - }, - }) + httpClient.get('https://example.com').subscribe() + const request = httpMock.expectOne('https://example.com') + const header = request.request.headers['lazyUpdate'][0] + + expect(header.name).toEqual('Accept') + expect(header.value).toEqual( + `application/json; version=${environment.apiVersion}` + ) + request.flush({}) }) }) diff --git a/src-ui/src/app/interceptors/api-version.interceptor.ts b/src-ui/src/app/interceptors/api-version.interceptor.ts index f6ec6798d..974184675 100644 --- a/src-ui/src/app/interceptors/api-version.interceptor.ts +++ b/src-ui/src/app/interceptors/api-version.interceptor.ts @@ -1,27 +1,20 @@ import { HttpEvent, - HttpHandler, - HttpInterceptor, + HttpHandlerFn, + HttpInterceptorFn, HttpRequest, } from '@angular/common/http' -import { Injectable } from '@angular/core' import { Observable } from 'rxjs' import { environment } from 'src/environments/environment' -@Injectable() -export class ApiVersionInterceptor implements HttpInterceptor { - constructor() {} - - intercept( - request: HttpRequest, - next: HttpHandler - ): Observable> { - request = request.clone({ - setHeaders: { - Accept: `application/json; version=${environment.apiVersion}`, - }, - }) - - return next.handle(request) - } +export const withApiVersionInterceptor: HttpInterceptorFn = ( + request: HttpRequest, + next: HttpHandlerFn +): Observable> => { + request = request.clone({ + setHeaders: { + Accept: `application/json; version=${environment.apiVersion}`, + }, + }) + return next(request) } diff --git a/src-ui/src/app/interceptors/csrf.interceptor.spec.ts b/src-ui/src/app/interceptors/csrf.interceptor.spec.ts index fb2e1a2fa..2a6ec4175 100644 --- a/src-ui/src/app/interceptors/csrf.interceptor.spec.ts +++ b/src-ui/src/app/interceptors/csrf.interceptor.spec.ts @@ -1,35 +1,52 @@ -import { HttpEvent, HttpRequest } from '@angular/common/http' +import { + HttpClient, + provideHttpClient, + withInterceptors, +} from '@angular/common/http' +import { + HttpTestingController, + provideHttpClientTesting, +} from '@angular/common/http/testing' import { TestBed } from '@angular/core/testing' import { Meta } from '@angular/platform-browser' import { CookieService } from 'ngx-cookie-service' -import { of } from 'rxjs' -import { CsrfInterceptor } from './csrf.interceptor' +import { withCsrfInterceptor } from './csrf.interceptor' describe('CsrfInterceptor', () => { - let interceptor: CsrfInterceptor let meta: Meta let cookieService: CookieService + let httpClient: HttpClient + let httpMock: HttpTestingController beforeEach(() => { TestBed.configureTestingModule({ - providers: [CsrfInterceptor, Meta, CookieService], + providers: [ + Meta, + CookieService, + provideHttpClient(withInterceptors([withCsrfInterceptor])), + provideHttpClientTesting(), + ], }) meta = TestBed.inject(Meta) cookieService = TestBed.inject(CookieService) - interceptor = TestBed.inject(CsrfInterceptor) + httpClient = TestBed.inject(HttpClient) + httpMock = TestBed.inject(HttpTestingController) }) it('should get csrf token', () => { meta.addTag({ name: 'cookie_prefix', content: 'ngx-' }, true) + const cookieServiceSpy = jest.spyOn(cookieService, 'get') cookieServiceSpy.mockReturnValue('csrftoken') - interceptor.intercept(new HttpRequest('GET', 'https://example.com'), { - handle: (request) => { - expect(request.headers['lazyUpdate'][0]['name']).toEqual('X-CSRFToken') - return of({} as HttpEvent) - }, - }) + + httpClient.get('https://example.com').subscribe() + const request = httpMock.expectOne('https://example.com') + + expect(request.request.headers['lazyUpdate'][0]['name']).toEqual( + 'X-CSRFToken' + ) expect(cookieServiceSpy).toHaveBeenCalled() + request.flush({}) }) }) diff --git a/src-ui/src/app/interceptors/csrf.interceptor.ts b/src-ui/src/app/interceptors/csrf.interceptor.ts index 2f590c5eb..e7fad4481 100644 --- a/src-ui/src/app/interceptors/csrf.interceptor.ts +++ b/src-ui/src/app/interceptors/csrf.interceptor.ts @@ -1,36 +1,32 @@ import { HttpEvent, - HttpHandler, - HttpInterceptor, + HttpHandlerFn, + HttpInterceptorFn, HttpRequest, } from '@angular/common/http' -import { Injectable, inject } from '@angular/core' +import { inject } from '@angular/core' import { Meta } from '@angular/platform-browser' import { CookieService } from 'ngx-cookie-service' import { Observable } from 'rxjs' -@Injectable() -export class CsrfInterceptor implements HttpInterceptor { - private cookieService = inject(CookieService) - private meta = inject(Meta) +export const withCsrfInterceptor: HttpInterceptorFn = ( + request: HttpRequest, + next: HttpHandlerFn +): Observable> => { + const cookieService: CookieService = inject(CookieService) + const meta: Meta = inject(Meta) - intercept( - request: HttpRequest, - next: HttpHandler - ): Observable> { - let prefix = '' - if (this.meta.getTag('name=cookie_prefix')) { - prefix = this.meta.getTag('name=cookie_prefix').content - } - let csrfToken = this.cookieService.get(`${prefix}csrftoken`) - if (csrfToken) { - request = request.clone({ - setHeaders: { - 'X-CSRFToken': csrfToken, - }, - }) - } - - return next.handle(request) + let prefix = '' + if (meta.getTag('name=cookie_prefix')) { + prefix = meta.getTag('name=cookie_prefix').content } + let csrfToken = cookieService.get(`${prefix}csrftoken`) + if (csrfToken) { + request = request.clone({ + setHeaders: { + 'X-CSRFToken': csrfToken, + }, + }) + } + return next(request) } diff --git a/src-ui/src/app/pipes/safehtml.pipe.spec.ts b/src-ui/src/app/pipes/safehtml.pipe.spec.ts deleted file mode 100644 index 8ef9a9e47..000000000 --- a/src-ui/src/app/pipes/safehtml.pipe.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { TestBed } from '@angular/core/testing' -import { BrowserModule, DomSanitizer } from '@angular/platform-browser' -import { SafeHtmlPipe } from './safehtml.pipe' - -describe('SafeHtmlPipe', () => { - let pipe: SafeHtmlPipe - - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [SafeHtmlPipe], - imports: [BrowserModule], - }) - pipe = TestBed.inject(SafeHtmlPipe) - }) - - it('should bypass security and trust the url', () => { - const html = '
    some content
    ' - const domSanitizer = TestBed.inject(DomSanitizer) - const sanitizerSpy = jest.spyOn(domSanitizer, 'bypassSecurityTrustHtml') - let safeHtml = pipe.transform(html) - expect(safeHtml).not.toBeNull() - expect(sanitizerSpy).toHaveBeenCalled() - }) -}) diff --git a/src-ui/src/app/pipes/safehtml.pipe.ts b/src-ui/src/app/pipes/safehtml.pipe.ts deleted file mode 100644 index 1001b8dbf..000000000 --- a/src-ui/src/app/pipes/safehtml.pipe.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Pipe, PipeTransform, inject } from '@angular/core' -import { DomSanitizer } from '@angular/platform-browser' - -@Pipe({ - name: 'safeHtml', -}) -export class SafeHtmlPipe implements PipeTransform { - private sanitizer = inject(DomSanitizer) - - transform(html) { - return this.sanitizer.bypassSecurityTrustHtml(html) - } -} diff --git a/src-ui/src/app/pipes/safeurl.pipe.spec.ts b/src-ui/src/app/pipes/safeurl.pipe.spec.ts index b1fc16885..90cca3878 100644 --- a/src-ui/src/app/pipes/safeurl.pipe.spec.ts +++ b/src-ui/src/app/pipes/safeurl.pipe.spec.ts @@ -13,20 +13,45 @@ describe('SafeUrlPipe', () => { pipe = TestBed.inject(SafeUrlPipe) }) - it('should bypass security and trust the url', () => { - const url = 'https://example.com' + it('should trust only same-origin http/https urls', () => { + const origin = window.location.origin + const url = `${origin}/some/path` const domSanitizer = TestBed.inject(DomSanitizer) const sanitizerSpy = jest.spyOn( domSanitizer, 'bypassSecurityTrustResourceUrl' ) - let safeResourceUrl = pipe.transform(url) + const safeResourceUrl = pipe.transform(url) expect(safeResourceUrl).not.toBeNull() - expect(sanitizerSpy).toHaveBeenCalled() + expect(sanitizerSpy).toHaveBeenCalledWith(url) + }) - safeResourceUrl = pipe.transform(null) - expect(safeResourceUrl).not.toBeNull() - expect(sanitizerSpy).toHaveBeenCalled() + it('should return null for null or unsafe urls', () => { + const sanitizerSpy = jest.spyOn( + TestBed.inject(DomSanitizer), + 'bypassSecurityTrustResourceUrl' + ) + + expect(pipe.transform(null)).toBeTruthy() + expect(sanitizerSpy).toHaveBeenCalledWith('') + expect(pipe.transform('javascript:alert(1)')).toBeTruthy() + expect(sanitizerSpy).toHaveBeenCalledWith('') + const otherOrigin = + window.location.origin === 'https://example.com' + ? 'https://evil.com' + : 'https://example.com' + expect(pipe.transform(`${otherOrigin}/file`)).toBeTruthy() + expect(sanitizerSpy).toHaveBeenCalledWith('') + }) + + it('should return null for malformed urls', () => { + const sanitizerSpy = jest.spyOn( + TestBed.inject(DomSanitizer), + 'bypassSecurityTrustResourceUrl' + ) + + expect(pipe.transform('http://[invalid-url')).toBeTruthy() + expect(sanitizerSpy).toHaveBeenCalledWith('') }) }) diff --git a/src-ui/src/app/pipes/safeurl.pipe.ts b/src-ui/src/app/pipes/safeurl.pipe.ts index 37fdd743b..7a0c65a2c 100644 --- a/src-ui/src/app/pipes/safeurl.pipe.ts +++ b/src-ui/src/app/pipes/safeurl.pipe.ts @@ -1,5 +1,6 @@ import { Pipe, PipeTransform, inject } from '@angular/core' import { DomSanitizer } from '@angular/platform-browser' +import { environment } from 'src/environments/environment' @Pipe({ name: 'safeUrl', @@ -7,11 +8,23 @@ import { DomSanitizer } from '@angular/platform-browser' export class SafeUrlPipe implements PipeTransform { private sanitizer = inject(DomSanitizer) - transform(url) { - if (url == null) { + transform(url: string | null) { + if (!url) return this.sanitizer.bypassSecurityTrustResourceUrl('') + try { + const parsed = new URL(url, window.location.origin) + const allowedOrigins = new Set([ + window.location.origin, + new URL(environment.apiBaseUrl).origin, + ]) + const isHttp = ['http:', 'https:'].includes(parsed.protocol) + const originAllowed = allowedOrigins.has(parsed.origin) + + if (!isHttp || !originAllowed) { + return this.sanitizer.bypassSecurityTrustResourceUrl('') + } + return this.sanitizer.bypassSecurityTrustResourceUrl(parsed.toString()) + } catch { return this.sanitizer.bypassSecurityTrustResourceUrl('') - } else { - return this.sanitizer.bypassSecurityTrustResourceUrl(url) } } } diff --git a/src-ui/src/app/services/chat.service.spec.ts b/src-ui/src/app/services/chat.service.spec.ts new file mode 100644 index 000000000..b8ca957cb --- /dev/null +++ b/src-ui/src/app/services/chat.service.spec.ts @@ -0,0 +1,58 @@ +import { + HttpEventType, + provideHttpClient, + withInterceptorsFromDi, +} from '@angular/common/http' +import { + HttpTestingController, + provideHttpClientTesting, +} from '@angular/common/http/testing' +import { TestBed } from '@angular/core/testing' +import { environment } from 'src/environments/environment' +import { ChatService } from './chat.service' + +describe('ChatService', () => { + let service: ChatService + let httpMock: HttpTestingController + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [], + providers: [ + ChatService, + provideHttpClient(withInterceptorsFromDi()), + provideHttpClientTesting(), + ], + }) + service = TestBed.inject(ChatService) + httpMock = TestBed.inject(HttpTestingController) + }) + + afterEach(() => { + httpMock.verify() + }) + + it('should stream chat messages', (done) => { + const documentId = 1 + const prompt = 'Hello, world!' + const mockResponse = 'Partial response text' + const apiUrl = `${environment.apiBaseUrl}documents/chat/` + + service.streamChat(documentId, prompt).subscribe((chunk) => { + expect(chunk).toBe(mockResponse) + done() + }) + + const req = httpMock.expectOne(apiUrl) + expect(req.request.method).toBe('POST') + expect(req.request.body).toEqual({ + document_id: documentId, + q: prompt, + }) + + req.event({ + type: HttpEventType.DownloadProgress, + partialText: mockResponse, + } as any) + }) +}) diff --git a/src-ui/src/app/services/chat.service.ts b/src-ui/src/app/services/chat.service.ts new file mode 100644 index 000000000..9ddfb8330 --- /dev/null +++ b/src-ui/src/app/services/chat.service.ts @@ -0,0 +1,46 @@ +import { + HttpClient, + HttpDownloadProgressEvent, + HttpEventType, +} from '@angular/common/http' +import { inject, Injectable } from '@angular/core' +import { filter, map, Observable } from 'rxjs' +import { environment } from 'src/environments/environment' + +export interface ChatMessage { + role: 'user' | 'assistant' + content: string + isStreaming?: boolean +} + +@Injectable({ + providedIn: 'root', +}) +export class ChatService { + private http: HttpClient = inject(HttpClient) + + streamChat(documentId: number, prompt: string): Observable { + return this.http + .post( + `${environment.apiBaseUrl}documents/chat/`, + { + document_id: documentId, + q: prompt, + }, + { + observe: 'events', + reportProgress: true, + responseType: 'text', + withCredentials: true, + } + ) + .pipe( + map((event) => { + if (event.type === HttpEventType.DownloadProgress) { + return (event as HttpDownloadProgressEvent).partialText! + } + }), + filter((chunk) => !!chunk) + ) + } +} diff --git a/src-ui/src/app/services/document-list-view.service.spec.ts b/src-ui/src/app/services/document-list-view.service.spec.ts index 82d3ac425..fdbfa2069 100644 --- a/src-ui/src/app/services/document-list-view.service.spec.ts +++ b/src-ui/src/app/services/document-list-view.service.spec.ts @@ -651,4 +651,25 @@ describe('DocumentListViewService', () => { documentListViewService.displayFields = customFields as any expect(documentListViewService.displayFields).toEqual(['custom_field_1']) }) + + it('should generate quick filter URL with filter rules', () => { + const routerSpy = jest.spyOn(router, 'createUrlTree') + const urlTree = documentListViewService.getQuickFilterUrl(filterRules) + expect(routerSpy).toHaveBeenCalledWith(['/documents'], { + queryParams: expect.objectContaining({ + tags__id__all: tags__id__all, + }), + }) + expect(urlTree).toBeDefined() + }) + + it('should generate quick filter URL preserving default state', () => { + documentListViewService.reload() + httpTestingController.expectOne( + `${environment.apiBaseUrl}documents/?page=1&page_size=50&ordering=-created&truncate_content=true` + ) + const urlTree = documentListViewService.getQuickFilterUrl(filterRules) + expect(urlTree).toBeDefined() + expect(router.createUrlTree).toBeDefined() + }) }) diff --git a/src-ui/src/app/services/document-list-view.service.ts b/src-ui/src/app/services/document-list-view.service.ts index 9c64a7641..0bc43b782 100644 --- a/src-ui/src/app/services/document-list-view.service.ts +++ b/src-ui/src/app/services/document-list-view.service.ts @@ -1,5 +1,5 @@ import { Injectable, inject } from '@angular/core' -import { ParamMap, Router } from '@angular/router' +import { ParamMap, Router, UrlTree } from '@angular/router' import { Observable, Subject, first, takeUntil } from 'rxjs' import { DEFAULT_DISPLAY_FIELDS, @@ -483,6 +483,18 @@ export class DocumentListViewService { this.router.navigate(['documents']) } + getQuickFilterUrl(filterRules: FilterRule[]): UrlTree { + const defaultState = { + ...this.defaultListViewState(), + ...this.listViewStates.get(null), + filterRules, + } + const params = paramsFromViewState(defaultState) + return this.router.createUrlTree(['/documents'], { + queryParams: params, + }) + } + getLastPage(): number { return Math.ceil(this.collectionSize / this.pageSize) } diff --git a/src-ui/src/app/services/permissions.service.ts b/src-ui/src/app/services/permissions.service.ts index 3d88b10cc..0c36b646f 100644 --- a/src-ui/src/app/services/permissions.service.ts +++ b/src-ui/src/app/services/permissions.service.ts @@ -28,6 +28,7 @@ export enum PermissionType { ShareLink = '%s_sharelink', CustomField = '%s_customfield', Workflow = '%s_workflow', + ProcessedMail = '%s_processedmail', } @Injectable({ diff --git a/src-ui/src/app/services/rest/abstract-paperless-service.ts b/src-ui/src/app/services/rest/abstract-paperless-service.ts index 34e2c8aea..d293d6453 100644 --- a/src-ui/src/app/services/rest/abstract-paperless-service.ts +++ b/src-ui/src/app/services/rest/abstract-paperless-service.ts @@ -1,7 +1,7 @@ import { HttpClient, HttpParams } from '@angular/common/http' import { inject, Injectable } from '@angular/core' import { Observable } from 'rxjs' -import { map, publishReplay, refCount } from 'rxjs/operators' +import { map, shareReplay, tap } from 'rxjs/operators' import { ObjectWithId } from 'src/app/data/object-with-id' import { Results } from 'src/app/data/results' import { environment } from 'src/environments/environment' @@ -13,6 +13,11 @@ export abstract class AbstractPaperlessService { protected http: HttpClient protected resourceName: string + protected _loading: boolean = false + public get loading(): boolean { + return this._loading + } + constructor() { this.http = inject(HttpClient) } @@ -43,6 +48,7 @@ export abstract class AbstractPaperlessService { sortReverse?: boolean, extraParams? ): Observable> { + this._loading = true let httpParams = new HttpParams() if (page) { httpParams = httpParams.set('page', page.toString()) @@ -59,9 +65,15 @@ export abstract class AbstractPaperlessService { httpParams = httpParams.set(extraParamKey, extraParams[extraParamKey]) } } - return this.http.get>(this.getResourceUrl(), { - params: httpParams, - }) + return this.http + .get>(this.getResourceUrl(), { + params: httpParams, + }) + .pipe( + tap(() => { + this._loading = false + }) + ) } private _listAll: Observable> @@ -78,7 +90,7 @@ export abstract class AbstractPaperlessService { sortField, sortReverse, extraParams - ).pipe(publishReplay(1), refCount()) + ).pipe(shareReplay({ bufferSize: 1, refCount: true })) } return this._listAll } @@ -96,6 +108,7 @@ export abstract class AbstractPaperlessService { } getFew(ids: number[], extraParams?): Observable> { + this._loading = true let httpParams = new HttpParams() httpParams = httpParams.set('id__in', ids.join(',')) httpParams = httpParams.set('ordering', '-id') @@ -105,9 +118,15 @@ export abstract class AbstractPaperlessService { httpParams = httpParams.set(extraParamKey, extraParams[extraParamKey]) } } - return this.http.get>(this.getResourceUrl(), { - params: httpParams, - }) + return this.http + .get>(this.getResourceUrl(), { + params: httpParams, + }) + .pipe( + tap(() => { + this._loading = false + }) + ) } clearCache() { @@ -115,7 +134,12 @@ export abstract class AbstractPaperlessService { } get(id: number): Observable { - return this.http.get(this.getResourceUrl(id)) + this._loading = true + return this.http.get(this.getResourceUrl(id)).pipe( + tap(() => { + this._loading = false + }) + ) } create(o: T): Observable { diff --git a/src-ui/src/app/services/rest/document.service.spec.ts b/src-ui/src/app/services/rest/document.service.spec.ts index 9480e2816..55cbdcff9 100644 --- a/src-ui/src/app/services/rest/document.service.spec.ts +++ b/src-ui/src/app/services/rest/document.service.spec.ts @@ -357,17 +357,15 @@ it('should include custom fields in sort fields if user has permission', () => { it('should call appropriate api endpoint for email document', () => { subscription = service - .emailDocument( - documents[0].id, + .emailDocuments( + [documents[0].id], 'hello@paperless-ngx.com', 'hello', 'world', true ) .subscribe() - httpTestingController.expectOne( - `${environment.apiBaseUrl}${endpoint}/${documents[0].id}/email/` - ) + httpTestingController.expectOne(`${environment.apiBaseUrl}${endpoint}/email/`) }) afterEach(() => { diff --git a/src-ui/src/app/services/rest/document.service.ts b/src-ui/src/app/services/rest/document.service.ts index 79eb28467..511a4017d 100644 --- a/src-ui/src/app/services/rest/document.service.ts +++ b/src-ui/src/app/services/rest/document.service.ts @@ -273,14 +273,15 @@ export class DocumentService extends AbstractPaperlessService { return this._searchQuery } - emailDocument( - documentId: number, + emailDocuments( + documentIds: number[], addresses: string, subject: string, message: string, useArchiveVersion: boolean ): Observable { - return this.http.post(this.getResourceUrl(documentId, 'email'), { + return this.http.post(this.getResourceUrl(null, 'email'), { + documents: documentIds, addresses: addresses, subject: subject, message: message, diff --git a/src-ui/src/app/services/rest/log.service.spec.ts b/src-ui/src/app/services/rest/log.service.spec.ts index e3138b895..7eda9c4a3 100644 --- a/src-ui/src/app/services/rest/log.service.spec.ts +++ b/src-ui/src/app/services/rest/log.service.spec.ts @@ -49,4 +49,14 @@ describe('LogService', () => { ) expect(req.request.method).toEqual('GET') }) + + it('should pass limit param on logs get when provided', () => { + const id: string = 'mail' + const limit: number = 100 + subscription = service.get(id, limit).subscribe() + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}${endpoint}/${id}/?limit=${limit}` + ) + expect(req.request.method).toEqual('GET') + }) }) diff --git a/src-ui/src/app/services/rest/log.service.ts b/src-ui/src/app/services/rest/log.service.ts index a836fa555..d07f7cd69 100644 --- a/src-ui/src/app/services/rest/log.service.ts +++ b/src-ui/src/app/services/rest/log.service.ts @@ -1,4 +1,4 @@ -import { HttpClient } from '@angular/common/http' +import { HttpClient, HttpParams } from '@angular/common/http' import { Injectable, inject } from '@angular/core' import { Observable } from 'rxjs' import { environment } from 'src/environments/environment' @@ -13,7 +13,13 @@ export class LogService { return this.http.get(`${environment.apiBaseUrl}logs/`) } - get(id: string): Observable { - return this.http.get(`${environment.apiBaseUrl}logs/${id}/`) + get(id: string, limit?: number): Observable { + let params = new HttpParams() + if (limit !== undefined) { + params = params.set('limit', limit.toString()) + } + return this.http.get(`${environment.apiBaseUrl}logs/${id}/`, { + params, + }) } } diff --git a/src-ui/src/app/services/rest/mail-account.service.ts b/src-ui/src/app/services/rest/mail-account.service.ts index d4511e2d6..54f6051e2 100644 --- a/src-ui/src/app/services/rest/mail-account.service.ts +++ b/src-ui/src/app/services/rest/mail-account.service.ts @@ -7,18 +7,16 @@ import { AbstractPaperlessService } from './abstract-paperless-service' providedIn: 'root', }) export class MailAccountService extends AbstractPaperlessService { - loading: boolean - constructor() { super() this.resourceName = 'mail_accounts' } private reload() { - this.loading = true + this._loading = true this.listAll().subscribe((r) => { this.mailAccounts = r.results - this.loading = false + this._loading = false }) } diff --git a/src-ui/src/app/services/rest/mail-rule.service.ts b/src-ui/src/app/services/rest/mail-rule.service.ts index bb92107a9..e9923e570 100644 --- a/src-ui/src/app/services/rest/mail-rule.service.ts +++ b/src-ui/src/app/services/rest/mail-rule.service.ts @@ -7,18 +7,16 @@ import { AbstractPaperlessService } from './abstract-paperless-service' providedIn: 'root', }) export class MailRuleService extends AbstractPaperlessService { - loading: boolean - constructor() { super() this.resourceName = 'mail_rules' } private reload() { - this.loading = true + this._loading = true this.listAll().subscribe((r) => { this.mailRules = r.results - this.loading = false + this._loading = false }) } diff --git a/src-ui/src/app/services/rest/processed-mail.service.spec.ts b/src-ui/src/app/services/rest/processed-mail.service.spec.ts new file mode 100644 index 000000000..a424c2cbb --- /dev/null +++ b/src-ui/src/app/services/rest/processed-mail.service.spec.ts @@ -0,0 +1,39 @@ +import { HttpTestingController } from '@angular/common/http/testing' +import { TestBed } from '@angular/core/testing' +import { Subscription } from 'rxjs' +import { environment } from 'src/environments/environment' +import { commonAbstractPaperlessServiceTests } from './abstract-paperless-service.spec' +import { ProcessedMailService } from './processed-mail.service' + +let httpTestingController: HttpTestingController +let service: ProcessedMailService +let subscription: Subscription +const endpoint = 'processed_mail' + +// run common tests +commonAbstractPaperlessServiceTests(endpoint, ProcessedMailService) + +describe('Additional service tests for ProcessedMailService', () => { + beforeEach(() => { + // Dont need to setup again + + httpTestingController = TestBed.inject(HttpTestingController) + service = TestBed.inject(ProcessedMailService) + }) + + afterEach(() => { + subscription?.unsubscribe() + httpTestingController.verify() + }) + + it('should call appropriate api endpoint for bulk delete', () => { + const ids = [1, 2, 3] + subscription = service.bulk_delete(ids).subscribe() + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}${endpoint}/bulk_delete/` + ) + expect(req.request.method).toEqual('POST') + expect(req.request.body).toEqual({ mail_ids: ids }) + req.flush({}) + }) +}) diff --git a/src-ui/src/app/services/rest/processed-mail.service.ts b/src-ui/src/app/services/rest/processed-mail.service.ts new file mode 100644 index 000000000..e1ea327da --- /dev/null +++ b/src-ui/src/app/services/rest/processed-mail.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core' +import { ProcessedMail } from 'src/app/data/processed-mail' +import { AbstractPaperlessService } from './abstract-paperless-service' + +@Injectable({ + providedIn: 'root', +}) +export class ProcessedMailService extends AbstractPaperlessService { + constructor() { + super() + this.resourceName = 'processed_mail' + } + + public bulk_delete(mailIds: number[]) { + return this.http.post(`${this.getResourceUrl()}bulk_delete/`, { + mail_ids: mailIds, + }) + } +} diff --git a/src-ui/src/app/services/rest/saved-view.service.ts b/src-ui/src/app/services/rest/saved-view.service.ts index 4ea2cef65..7bdb890a0 100644 --- a/src-ui/src/app/services/rest/saved-view.service.ts +++ b/src-ui/src/app/services/rest/saved-view.service.ts @@ -17,7 +17,6 @@ export class SavedViewService extends AbstractPaperlessService { private settingsService = inject(SettingsService) private documentService = inject(DocumentService) - public loading: boolean = true private savedViews: SavedView[] = [] private savedViewDocumentCounts: Map = new Map() private unsubscribeNotifier: Subject = new Subject() @@ -38,12 +37,12 @@ export class SavedViewService extends AbstractPaperlessService { tap({ next: (r) => { this.savedViews = r.results - this.loading = false + this._loading = false this.settingsService.dashboardIsEmpty = this.dashboardViews.length === 0 }, error: () => { - this.loading = false + this._loading = false this.settingsService.dashboardIsEmpty = true }, }) diff --git a/src-ui/src/app/services/rest/share-link-bundle.service.spec.ts b/src-ui/src/app/services/rest/share-link-bundle.service.spec.ts new file mode 100644 index 000000000..6b87ddf04 --- /dev/null +++ b/src-ui/src/app/services/rest/share-link-bundle.service.spec.ts @@ -0,0 +1,60 @@ +import { HttpTestingController } from '@angular/common/http/testing' +import { TestBed } from '@angular/core/testing' +import { Subscription } from 'rxjs' +import { environment } from 'src/environments/environment' +import { commonAbstractPaperlessServiceTests } from './abstract-paperless-service.spec' +import { ShareLinkBundleService } from './share-link-bundle.service' + +const endpoint = 'share_link_bundles' + +commonAbstractPaperlessServiceTests(endpoint, ShareLinkBundleService) + +describe('ShareLinkBundleService', () => { + let httpTestingController: HttpTestingController + let service: ShareLinkBundleService + let subscription: Subscription | undefined + + beforeEach(() => { + httpTestingController = TestBed.inject(HttpTestingController) + service = TestBed.inject(ShareLinkBundleService) + }) + + afterEach(() => { + subscription?.unsubscribe() + httpTestingController.verify() + }) + + it('creates bundled share links', () => { + const payload = { + document_ids: [1, 2], + file_version: 'archive', + expiration_days: 7, + } + subscription = service.createBundle(payload as any).subscribe() + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}${endpoint}/` + ) + expect(req.request.method).toBe('POST') + expect(req.request.body).toEqual(payload) + req.flush({}) + }) + + it('rebuilds bundles', () => { + subscription = service.rebuildBundle(12).subscribe() + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}${endpoint}/12/rebuild/` + ) + expect(req.request.method).toBe('POST') + expect(req.request.body).toEqual({}) + req.flush({}) + }) + + it('lists bundles with expected parameters', () => { + subscription = service.listAllBundles().subscribe() + const req = httpTestingController.expectOne( + `${environment.apiBaseUrl}${endpoint}/?page=1&page_size=1000&ordering=-created` + ) + expect(req.request.method).toBe('GET') + req.flush({ results: [] }) + }) +}) diff --git a/src-ui/src/app/services/rest/share-link-bundle.service.ts b/src-ui/src/app/services/rest/share-link-bundle.service.ts new file mode 100644 index 000000000..2aa719974 --- /dev/null +++ b/src-ui/src/app/services/rest/share-link-bundle.service.ts @@ -0,0 +1,41 @@ +import { Injectable } from '@angular/core' +import { Observable } from 'rxjs' +import { map } from 'rxjs/operators' +import { + ShareLinkBundleCreatePayload, + ShareLinkBundleSummary, +} from 'src/app/data/share-link-bundle' +import { AbstractNameFilterService } from './abstract-name-filter-service' + +@Injectable({ + providedIn: 'root', +}) +export class ShareLinkBundleService extends AbstractNameFilterService { + constructor() { + super() + this.resourceName = 'share_link_bundles' + } + + createBundle( + payload: ShareLinkBundleCreatePayload + ): Observable { + this.clearCache() + return this.http.post( + this.getResourceUrl(), + payload + ) + } + rebuildBundle(bundleId: number): Observable { + this.clearCache() + return this.http.post( + this.getResourceUrl(bundleId, 'rebuild'), + {} + ) + } + + listAllBundles(): Observable { + return this.list(1, 1000, 'created', true).pipe( + map((response) => response.results) + ) + } +} diff --git a/src-ui/src/app/services/rest/workflow.service.ts b/src-ui/src/app/services/rest/workflow.service.ts index ecf564f06..5c037a8e3 100644 --- a/src-ui/src/app/services/rest/workflow.service.ts +++ b/src-ui/src/app/services/rest/workflow.service.ts @@ -7,18 +7,16 @@ import { AbstractPaperlessService } from './abstract-paperless-service' providedIn: 'root', }) export class WorkflowService extends AbstractPaperlessService { - loading: boolean - constructor() { super() this.resourceName = 'workflows' } public reload() { - this.loading = true + this._loading = true this.listAll().subscribe((r) => { this.workflows = r.results - this.loading = false + this._loading = false }) } diff --git a/src-ui/src/app/services/settings.service.ts b/src-ui/src/app/services/settings.service.ts index bf25a7912..1cfbdf4a3 100644 --- a/src-ui/src/app/services/settings.service.ts +++ b/src-ui/src/app/services/settings.service.ts @@ -136,6 +136,12 @@ const LANGUAGE_OPTIONS = [ englishName: 'Hungarian', dateInputFormat: 'yyyy.mm.dd', }, + { + code: 'id-id', + name: $localize`Indonesian`, + englishName: 'Indonesian', + dateInputFormat: 'dd-mm-yyyy', + }, { code: 'it-it', name: $localize`Italian`, diff --git a/src-ui/src/app/services/tasks.service.spec.ts b/src-ui/src/app/services/tasks.service.spec.ts index 0d4c8ee01..640f84587 100644 --- a/src-ui/src/app/services/tasks.service.spec.ts +++ b/src-ui/src/app/services/tasks.service.spec.ts @@ -51,7 +51,7 @@ describe('TasksService', () => { }) it('calls acknowledge_tasks api endpoint on dismiss and reloads', () => { - tasksService.dismissTasks(new Set([1, 2, 3])) + tasksService.dismissTasks(new Set([1, 2, 3])).subscribe() const req = httpTestingController.expectOne( `${environment.apiBaseUrl}tasks/acknowledge/` ) diff --git a/src-ui/src/app/services/tasks.service.ts b/src-ui/src/app/services/tasks.service.ts index d3a5224a1..305258d7b 100644 --- a/src-ui/src/app/services/tasks.service.ts +++ b/src-ui/src/app/services/tasks.service.ts @@ -1,7 +1,7 @@ import { HttpClient } from '@angular/common/http' import { Injectable, inject } from '@angular/core' import { Observable, Subject } from 'rxjs' -import { first, takeUntil } from 'rxjs/operators' +import { first, takeUntil, tap } from 'rxjs/operators' import { PaperlessTask, PaperlessTaskName, @@ -68,14 +68,17 @@ export class TasksService { } public dismissTasks(task_ids: Set) { - this.http + return this.http .post(`${this.baseUrl}tasks/acknowledge/`, { tasks: [...task_ids], }) - .pipe(first()) - .subscribe((r) => { - this.reload() - }) + .pipe( + first(), + takeUntil(this.unsubscribeNotifer), + tap(() => { + this.reload() + }) + ) } public cancelPending(): void { diff --git a/src-ui/src/app/utils/custom-field-query-element.spec.ts b/src-ui/src/app/utils/custom-field-query-element.spec.ts index 411dcd6f9..e01af7fd4 100644 --- a/src-ui/src/app/utils/custom-field-query-element.spec.ts +++ b/src-ui/src/app/utils/custom-field-query-element.spec.ts @@ -1,4 +1,3 @@ -import { fakeAsync, tick } from '@angular/core/testing' import { CustomFieldQueryElementType, CustomFieldQueryLogicalOperator, @@ -111,13 +110,38 @@ describe('CustomFieldQueryAtom', () => { expect(atom.serialize()).toEqual([1, 'operator', 'value']) }) - it('should emit changed on value change after debounce', fakeAsync(() => { + it('should emit changed on value change immediately', () => { const atom = new CustomFieldQueryAtom() const changeSpy = jest.spyOn(atom.changed, 'next') atom.value = 'new value' - tick(1000) expect(changeSpy).toHaveBeenCalled() - })) + }) + + it('should ignore duplicate array emissions', () => { + const atom = new CustomFieldQueryAtom() + atom.operator = CustomFieldQueryOperator.In + const changeSpy = jest.fn() + atom.changed.subscribe(changeSpy) + + atom.value = [1, 2] + expect(changeSpy).toHaveBeenCalledTimes(1) + + changeSpy.mockClear() + atom.value = [1, 2] + expect(changeSpy).not.toHaveBeenCalled() + }) + + it('should emit when array values differ while length matches', () => { + const atom = new CustomFieldQueryAtom() + atom.operator = CustomFieldQueryOperator.In + const changeSpy = jest.fn() + atom.changed.subscribe(changeSpy) + + atom.value = [1, 2] + changeSpy.mockClear() + atom.value = [1, 3] + expect(changeSpy).toHaveBeenCalledTimes(1) + }) }) describe('CustomFieldQueryExpression', () => { diff --git a/src-ui/src/app/utils/custom-field-query-element.ts b/src-ui/src/app/utils/custom-field-query-element.ts index 3438f2c85..34891641a 100644 --- a/src-ui/src/app/utils/custom-field-query-element.ts +++ b/src-ui/src/app/utils/custom-field-query-element.ts @@ -1,4 +1,4 @@ -import { Subject, debounceTime, distinctUntilChanged } from 'rxjs' +import { Subject, distinctUntilChanged } from 'rxjs' import { v4 as uuidv4 } from 'uuid' import { CUSTOM_FIELD_QUERY_VALUE_TYPES_BY_OPERATOR, @@ -110,7 +110,22 @@ export class CustomFieldQueryAtom extends CustomFieldQueryElement { protected override connectValueModelChanged(): void { this.valueModelChanged - .pipe(debounceTime(1000), distinctUntilChanged()) + .pipe( + distinctUntilChanged((previous, current) => { + if (Array.isArray(previous) && Array.isArray(current)) { + if (previous.length !== current.length) { + return false + } + for (let i = 0; i < previous.length; i++) { + if (previous[i] !== current[i]) { + return false + } + } + return true + } + return previous === current + }) + ) .subscribe(() => { this.changed.next(this) }) diff --git a/src-ui/src/app/utils/ngb-date-parser-formatter.spec.ts b/src-ui/src/app/utils/ngb-date-parser-formatter.spec.ts index 3bf12e1f6..1ede0215f 100644 --- a/src-ui/src/app/utils/ngb-date-parser-formatter.spec.ts +++ b/src-ui/src/app/utils/ngb-date-parser-formatter.spec.ts @@ -70,4 +70,26 @@ describe('LocalizedDateParserFormatter', () => { dateStr = dateParserFormatter.format(dateStruct) expect(dateStr).toEqual('04.05.2023') }) + + it('should handle years when current year % 100 < 50', () => { + jest.useFakeTimers() + jest.setSystemTime(new Date(2026, 5, 15)) + let val = dateParserFormatter.parse('5/4/26') + expect(val).toEqual({ day: 4, month: 5, year: 2026 }) + + val = dateParserFormatter.parse('5/4/75') + expect(val).toEqual({ day: 4, month: 5, year: 2075 }) + + val = dateParserFormatter.parse('5/4/99') + expect(val).toEqual({ day: 4, month: 5, year: 1999 }) + jest.useRealTimers() + }) + + it('should handle years when current year % 100 >= 50', () => { + jest.useFakeTimers() + jest.setSystemTime(new Date(2076, 5, 15)) + const val = dateParserFormatter.parse('5/4/00') + expect(val).toEqual({ day: 4, month: 5, year: 2100 }) + jest.useRealTimers() + }) }) diff --git a/src-ui/src/app/utils/ngb-date-parser-formatter.ts b/src-ui/src/app/utils/ngb-date-parser-formatter.ts index 99be6d88a..48806a80a 100644 --- a/src-ui/src/app/utils/ngb-date-parser-formatter.ts +++ b/src-ui/src/app/utils/ngb-date-parser-formatter.ts @@ -106,15 +106,25 @@ export class LocalizedDateParserFormatter extends NgbDateParserFormatter { value = this.preformatDateInput(value) let match = this.getDateParseRegex().exec(value) if (match) { + const currentYear = new Date().getFullYear() + const currentCentury = currentYear - (currentYear % 100) + + let year = +match.groups.year + if (year < 100) { + let fourDigitYear = currentCentury + year + // Mimic python-dateutil: keep result within -50/+49 years of current year + if (fourDigitYear > currentYear + 49) { + fourDigitYear -= 100 + } else if (fourDigitYear <= currentYear - 50) { + fourDigitYear += 100 + } + year = fourDigitYear + } + let dateStruct = { day: +match.groups.day, month: +match.groups.month, - year: +match.groups.year, - } - if (dateStruct.year <= new Date().getFullYear() - 2000) { - dateStruct.year += 2000 - } else if (dateStruct.year < 100) { - dateStruct.year += 1900 + year, } return dateStruct } else { diff --git a/src-ui/src/environments/environment.prod.ts b/src-ui/src/environments/environment.prod.ts index a4dfbc8b2..3ce1d16cc 100644 --- a/src-ui/src/environments/environment.prod.ts +++ b/src-ui/src/environments/environment.prod.ts @@ -6,7 +6,7 @@ export const environment = { apiVersion: '9', // match src/paperless/settings.py appTitle: 'Paperless-ngx', tag: 'prod', - version: '2.18.4', + version: '2.20.6', webSocketHost: window.location.host, webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:', webSocketBaseUrl: base_url.pathname + 'ws/', diff --git a/src-ui/src/locale/messages.af_ZA.xlf b/src-ui/src/locale/messages.af_ZA.xlf index c315b335b..153d5faea 100644 --- a/src-ui/src/locale/messages.af_ZA.xlf +++ b/src-ui/src/locale/messages.af_ZA.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Sluit @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Vorige @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Volgende @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Vorige maand @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Volgende maand @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sluit @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Kies maand @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Uur @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Kies jaar @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minute @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Eerste @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vermeerder ure @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vorige @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Verminder ure @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Volgende @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vermeerder minute @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Laaste @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Verminder minute @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekondes @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vermeerder sekondes @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Verminder sekondes @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumente @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Instellings @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Enable @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logboeke @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Laai tans… + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + What's this? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Gevorderde soektog @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Fout by die bewaar van instellings. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Lêertake @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Versteek @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Versteek gekose @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Versteek van alle @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Bevestig versteek van alle @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 queued @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 started @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completed @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 failed @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Delete selected @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Bevestig skrap @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Gebruikers & Groepe @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Wagwoord is verander, u sal vir nn oomblik afgeteken word. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Gebruiker “” is bewaar. @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Fout by bewaar van gebruiker. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Bevestig skrap van gebruikersrekening @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Hierdie bewerking sal hierdie gebruikersrekening permanent skrap. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Groep “” is bewaar. @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Fout by bewaar van groep. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Bevestig skrap van gebruikersgroep @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Hierdie bewerking sal hierdie gebruikersgroep permanent skrap. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentasie @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Bewaarde aansigte @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Open dokumente @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Sluit alles @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Bestuur @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 E-pos @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 is beskikbaar. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klik om te bekyk. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx kan outomaties na bywerkings soek @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Hoe werk dit? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Bywerking beskikbaar @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Fout by die bewaar van instellings vir soek na bywerkings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Wis @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Bevestiging @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Bevestig @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Alle @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - nou - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Toegevoeg + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + nou + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Ooreenkomsalgoritme @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Ooreenkomspatroon @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Hoofletterongevoelig @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Ken dokumenttipe toe @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Ken korrespondent toe @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Fout @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Pad @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Kleur + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inmandjie-etiket @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inmandjie-etikette word outomaties aan alle verwerkte dokumente toegewys. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Skep nuwe etiket @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Wysig etiket @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-pos @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Skep nuwe gebruikersrekening @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Wysig gebruikersrekening @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nie toegewys nie @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Voorstelle: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Voeg item toe @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Voeg etiket toe @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter dokumente met hierdie etikette @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtreer volgens korrespondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtreer volgens dokumenttipe @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtreer volgens bergpad @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ja @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nee @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Bladsy @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Fout by ophaal van metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Fout by ophaal van voorstelle. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Fout by bewaar van dokument @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Kies: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Wysig: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Sluit in: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' ” en “ @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' en “ @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Bevestig etikettoewysing @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Die etiket "" sal aan gekose dokument(e) toegevoeg word. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Hierdie bewerking sal die etikette toevoeg aan gekose dokument(e). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Die etiket “” sal van gekose dokument(e) verwyder word. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Hierdie bewerking sal die etikette van gekose dokument(e) verwyder. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Hierdie bewerking sal die etikette toevoeg en die etikette verwyder van gekose dokument(e). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Bevestig korrespondenttoewysing @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Die korrespondent “” sal aan gekose dokument(e) toegewys word. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Die korrespondent sal verwyder word van gekose dokument(e). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Bevestig toewys van dokumenttipe @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Die dokumenttipe “” sal aan gekose dokument(e) toegewys word. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Die dokumenttipe sal verwyder word van gekose dokument(e). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Bevestig bergpadtoewysing @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Die bergpad “” sal aan gekose dokument(e) toegewys word. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Die bergpad sal verwyder word van gekose dokument(e). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtreer volgens etiket @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Kies geen @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Kies blad @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Kies alles - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + Geen Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sorteer @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Aansigte @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Bewaar “ @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Bewaar as… @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 { van een dokument gekies} other { van dokumente gekies}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Een dokument} other dokumente}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (gefiltreer) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Fout by die laai van dokumente @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sorteer volgens ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sorteer volgens korrespondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sorteer volgens titel @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sorteer volgens eienaar @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sorteer volgens notas @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sorteer volgens dokumenttipe @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sorteer volgens bergpad @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sorteer volgens datum geskep @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sorteer volgens datum toegevoeg @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Wysig dokument @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Aansig “” suksesvol bewaar. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Aansig “” suksesvol geskep. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titel & inhoud @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Meer soos @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 gelyk aan @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 is leeg @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 is nie leeg nie @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 groter as @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 kleiner as @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Sonder korrespondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Sonder dokumenttipe @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Sonder enige etiket @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Titel: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Eienaar: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Eienaar nie in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Sonder ’n eienaar @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 korrespondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 korrespondente @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Laas gebruik @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Wil u regtig die korrespondent “” skrap? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 dokumenttipe @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 dokumenttipes @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Wil u regtig die dokumenttipe “” skrap? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Geen e-posreëls gedefinieer. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Rekening “” is bewaar. @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Fout by bewaar van rekening. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Bevestig skrap van e-posrekening @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Hierdie bewerking sal hierdie e-posrekening permanent skrap. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Reël “” is bewaar. @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Fout by bewaar van reël. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Bevestig skrap van e-posreël @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Hierdie bewerking sal hierdie e-posreël permanent skrap. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Een } other { totaal }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Outomaties - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Geen - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 suksesvol geskep. @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Fout by die skep van . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Fout by die skrap van . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 bergpad @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 bergpaaie @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Wil u regtig die bergpad “” skrap? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 etiket @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 etikette diff --git a/src-ui/src/locale/messages.ar_AR.xlf b/src-ui/src/locale/messages.ar_AR.xlf index 91a244f39..d9918510c 100644 --- a/src-ui/src/locale/messages.ar_AR.xlf +++ b/src-ui/src/locale/messages.ar_AR.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 إغلاق @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 السابق @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 التالي @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 الشهر السابق @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 الشهر التالي @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 إغلاق @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 تحديد الشهر @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ساعات @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 اختر السنة @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 دقائق @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 الأول @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 زيادة الساعات @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 السابق @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 إنقاص الساعات @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 التالي @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 زيادة الدقائق @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 الأخير @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 إنقاص الدقائق @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ثوانٍ @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 زيادة الثواني @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 إنقاص الثواني @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 المستندات @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 الإعدادات @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 تمكين @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 السجلات @@ -742,11 +742,35 @@ راجع ملفات السجلات للتطبيق ولفحص البريد الإلكتروني. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + إظهار + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ تحميل... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + ما هذا؟ @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 بحث متقدم @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 خطأ في استرجاع المستخدمين @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 خطأ في استرداد المجموعات @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 حدث خطأ في أثناء حفظ الإعدادات. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 ملف المهام @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 استبعاد @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 استبعاد المحدد @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 استبعاد الكل @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 تأكيد استبعاد الكل @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 استبعاد جميع المهام الـ ؟ + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 قيد الانتظار @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 بدات @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 مكتمل @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 فشل @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 سلة المهملات @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + حذف المحدد @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 تأكيد الحذف @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 المستخدمين & المجموعات @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 تم تغيير كلمة المرور ، سيتم تسجيل خروجك مؤقتاً. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 مستخدم محفوظ "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 خطأ أثناء حفظ المستخدم. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 تأكيد حذف حساب المستخدم @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 ستؤدي هذه العملية إلى حذف حساب المستخدم هذا نهائيا. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 مجموعة محفوظة "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 خطأ في حفظ المجموعة. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 تأكيد حذف مجموعة المستخدم @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 ستؤدي هذه العملية إلى حذف مجموعة المستخدمين هذه نهائيا. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 الوثائق @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 طرق العرض المحفوظة @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 فتح المستندات @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 إغلاق الكل @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 إدارة @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 البريد @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 الإدارة @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 التهيئة @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 Github @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 متوفر. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 انقر للعرض. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx يتحقق تلقائياً من وجود تحديثات @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 كيف يعمل هذا؟ @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 يتوفر تحديث @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 تم تحديث طرق عرض الشريط الجانبي @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 خطأ في تحديث طرق عرض الشريط الجانبي @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 حدث خطأ في أثناء حفظ إعدادات التحقق من التحديث. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + تنظيف @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 تأكيد @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 أكّد @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 الكل @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - الآن - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ أضيف + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + الآن + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 مطابقة الخوارزمية @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 مطابقة النمط @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 حالة غير حساسة @@ -3982,19 +4082,11 @@ إضافة خيار - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 العملة الافتراضية @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 رمز ثلاثي الحروف للعملة @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 استخدام الإعدادات المحلية @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 تعيين نوع المستند @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 تعيين جهة تراسل @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + خطأ @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 مسار @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 لون + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 وسم صندوق الوارد @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 تُعيَّن وسم صندوق الوارد تلقائياً لجميع المستندات المستهلكة. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 إنشاء وسم جديد @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 تحرير الوسم @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + البريد الإلكتروني @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 إنشاء حساب مستخدم جديد @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 تعديل حساب المستخدم @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 نوع المشغل @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 مشغل للمستندات التي تطابق جميع عوامل التصفية المحددة أدناه. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 تصفية اسم المِلَفّ @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 تطبق فقط على المستندات التي تطابق اسم هذا المِلَفّ. المحارف البديلة على سبيل المثال *.pdf أو *invoice* مسموح بها. غير حساسة لحالة الأحرف. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 تصفية المصادر @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 تصفية المسار - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - تنطبق على المستندات التي تطابق هذا المسار. يسمح باستخدام أحرف البدل المحددة كـ *. تطبيع الحالة.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 تصفية قاعدة البريد @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 تطبيق على المستندات المستهلكة عبر هذه القاعدة البريدية. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 خوارزمية مطابقة المحتوى @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 نمط مطابقة المحتوى - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - لديه أي من الوسوم + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - لديه جهة التراسل + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - لديه نوع المستند + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 نوع الإجراء @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 تعيين العنوان @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 يمكن أن تتضمن بعض العناصر النائبة، راجع <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>التوثيق</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 تعيين وسوم @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 تعيين مسار التخزين @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 تعيين حقول مخصصة @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 تعيين مالك @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 تعيين صلاحيات العرض @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 تعيين صلاحيات التحرير @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 إزالة الوسوم @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 أزاله الكل @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 إزالة جهات التراسل @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 إزالة أنواع المستندات @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 إزالة مسارات التخزين @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 إزالة الحقول المخصصة @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 إزالة المُلًاك @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 إزالة الصلاحيات @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 عرض الصلاحيات @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 تحرير الصلاحيات @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 مجلد الاستهلاك @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 تحميل API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 جلب البريد @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 بدأ الاستهلاك @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 تم إضافة المستند @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 تم تحديث المستند @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 الواجبات @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 الإزالة @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + لديه جهة التراسل + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + لديه نوع المستند + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 إنشاء سير عمل جديد @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 تحرير سير العمل + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned غير معين @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 فتح المرشح @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 الاقتراحات: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths إضافة عنصر @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 إضافة وسم @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 إزالة الوسم @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 تصفية المستندات باستخدام هذه الوسوم @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + اقرأ المزيد @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 البريد الإلكتروني يجب أن يتطابق @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 يجب أن تتطابق كلمات المرور @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 تم تحديث الملف الشخصي بنجاح @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 خطأ أثناء حفظ الملف الشخصي @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 خطأ أثناء إنشاء رمز المصادقة @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 خطأ أثناء قطع الاتصال بحساب الشبكة الاجتماعية @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 تصفية حسب جهة التراسل @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 تصفية حسب نوع المستند @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 تصفية حسب مسار التخزين @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 نعم @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 لا @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 صفحة @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 إعادة المعالجة @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 خطأ في استرجاع البيانات الوصفية @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 خطأ في استرداد الاقتراحات. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 تم حفظ المستند "بنجاح. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 خطأ أثناء حفظ المستند @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 هل تريد حقاً نقل المستند "" إلى سلة المهملات؟ @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 يمكن استعادة المستندات قبل حذفها نهائياً. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 نقل لسلة المهملات @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 خطأ أثناء حذف المستند @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 تأكيد إعادة المعالجة @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 ستؤدي هذه العملية إلى إعادة إنشاء ملف الأرشيف لهذا المستند بشكل دائم. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 سيتم إعادة إنشاء ملف الأرشيف بالإعدادات الحالية. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 خطأ أثناء تنفيذ العملية @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 احتواء الصفحة @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ لم يتم العثور على أيّ مدخلات. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - تحديد: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 تعديل: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 حقول مخصصة @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 تصفية الحقول المخصصة @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 تدوير @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 دمج @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 يحتوي على: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 الملفات المؤرشفة @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 الملفات الأصلية @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 استخدام اسم الملف المنسق @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 خطأ أثناء تنفيذ العملية بالجملة @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" و "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' و"" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 تأكيد تعيين العلامات @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 هذه العملية ستضيف العلامة "" إلى مستند (مستندات) مختارة. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 هذه العملية ستضيف العلامات إلى مستند (مستندات) مختارة. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 هذه العملية ستزيل العلامة"" من المستند (المستندات) المختارة. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 هذه العملية ستزيل العلامات من المستند (المستندات) المختارة. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 هذه العملية سوف تضيف العلامات وتزيل العلامات في مستند(مستندات) مختارة. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 تأكيد تعيين جهة التراسل @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 ستقوم هذه العملية بتعيين جهة التراسل "" للمستند (المستندات) المحددة . @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 هذه العملية ستزيل جهة التراسل من المستند أو المستندات المحددة. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 تأكيد تعيين نوع المستند @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 العملية ستعين نوع المستند "" إلى مستند (مستندات) مختارة. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 هذه العملية ستزيل نوع المستند من مستند (المستندات) مختارة. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 تأكيد تعيين مسار التخزين @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 هذه العملية ستعين مسار التخزين "" إلى مستند (مستندات) مختارة. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 هذه العملية ستزيل مسار التخزين من المستند(المستندات) المختارة. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 تأكيد تعيين الحقل المخصص @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 ستقوم هذه العملية بتعيين الحقل المخصص "" إلى المستند أو المستندات المحددة. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 ستقوم هذه العملية بتعيين الحقول المخصصة {this._localizeList( changeCustomFields.itemsToAdd )} إلى مستند (مستندات) محدد. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 ستؤدي هذه العملية إلى إزالة الحقل المخصص "" من مستند (مستندات) محدد. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 ستؤدي هذه العملية إلى إزالة الحقول المخصصة {this._localizeList( changeCustomFields.itemsToRemove )} من مستند (مستندات) محدد. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 ستقوم هذه العملية بتعيين الحقول المخصصة {this._localizeList( changeCustomFields.itemsToAdd )} وإزالة الحقول المخصصة {this._localizeList( changeCustomFields.itemsToRemove )} على مستند (مستندات) محدد. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 نقل المستند (المستندات) المحددة لسلة المهملات؟ @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 ستؤدي هذه العملية إلى إعادة إنشاء ملفات الأرشيف بشكل دائم لمستند (مستندات) محدد . @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 سيتم إعادة إنشاء ملفات الأرشيف بالإعدادات الحالية. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 تأكيد التدوير @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 هذه العملية ستؤدي إلى تدوير النسخة الأصلية من المستند أو المستندات بشكل دائم. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 تأكيد الدمج @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 ستقوم هذه العملية بدمج المستند أو المستندات المحددة في مستند جديد. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 سيتم وضع المستند المدمج في قائمة الانتظار للاستهلاك. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 تصفية حسب العلامة @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 بدون تحديد @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 تحديد صفحة @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 تحديد الكل - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - إظهار + + src/app/data/matching-model.ts + 45 + + لا شيء Sort src/app/components/document-list/document-list.component.html - 48 + 68 ترتيب @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 طرق عرض @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 حفظ "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 حفظ باسم... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 جميع طرق العرض المحفوظة @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, zero {} one {تم اختياره من مستندات} two {تم اختياره من مستندات} few {تم اختياره من مستندات} many {تم اختياره من مستندات}=1 {تم اختيار لمستند واحد} other {تم اختياره من مستندات}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, zero {} one { المزيد من المستندات} two { المزيد من المستندات} few { المزيد من المستندات} many { المزيد من المستندات}=1 {مستند واحد آخر} other { المزيد من المستندات}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (مصفاة) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 خطأ في أثناء تحميل المستندات @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 الترتيب بحسب الرقم التسلسلي للأرشفة @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 ترتيب حسب جهة التراسل @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 ترتيب حسب العنوان @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 ترتيب حسب المالك @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 ترتيب حسب الملاحظات @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 ترتيب حسب نوع المستند @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 ترتيب حسب مسار التخزين @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 ترتيب حسب تاريخ الإنشاء @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 ترتيب حسب تاريخ الاضافة @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 مُشترَك @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 تعديل المستند @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 إعادة تعيين المرشحات / التحديد @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 فتح أول مستند [محدد] @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 عرض "" حفظ بنجاح. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 فشل في حفظ طريقة العرض "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 عرض "" أنشئ بنجاح. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 العنوان & المحتوى @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 أكثر مثله @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 يساوي @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 فارغ @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 غير فارغ @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 أكبر من @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 أقل من @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 بدون مراسل @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 بدون نوع المستند @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 بدون مسار التخزين @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 بلا أي وسم @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 طلب الحقول المخصصة @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 العنوان: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 المالك: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 المالك ليس في: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 بدون مالك @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 جهة تراسل @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 جهات تراسل @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 آخر استخدام @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 هل تريد حقاً حذف جهة التراسل" @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 نوع المستند @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 أنواع المستندات @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 هل ترغب حقاً في حذف نوع المستند " @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ معطل + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 لا توجد قواعد للبريد. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 خطأ في استرداد حسابات البريد @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 خطأ في استرداد قواعد البريد @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 حفظ الحساب"". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 خطأ أثناء حفظ الحساب. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 تأكيد حذف حساب البريد @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 هذه العملية ستقوم بحذف حساب البريد هذا بشكل دائم. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 قاعدة محفوظة "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 خطأ أثناء حفظ القاعدة. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 تأكيد حذف حساب البريد @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 هذه العملية ستقوم بحذف قاعدة البريد هذه بشكل دائم. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 تم تحديث الصلاحيات @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 خطأ أثناء تحديث الصلاحيات + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, zero {} one { مجموع } two { مجموع } few { مجموع } many { مجموع }=1 {واحد } other { مجموع }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ تلقائي - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - لا شيء - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 تم إنشاء بنجاح. @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 حدث خطأ أثناء إنشاء . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 حدث خطأ أثناء حفظ . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 لن يتم حذف المستندات المرتبطة. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 خطأ أثناء حذف العنصر @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 تم تحديث الصلاحيات بنجاح @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 ستؤدي هذه العملية إلى حذف جميع الكائنات نهائيا. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 تمّ حذف الكائنات بنجاحٍ @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 خطأ أثناء حذف الكائنات @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 مسار التخزين @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 مسارات التخزين @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 هل تريد حقاً حذف مسار التخزين " @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 الوسم @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 الوسوم diff --git a/src-ui/src/locale/messages.be_BY.xlf b/src-ui/src/locale/messages.be_BY.xlf index 49d09501a..91a80a340 100644 --- a/src-ui/src/locale/messages.be_BY.xlf +++ b/src-ui/src/locale/messages.be_BY.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Закрыць @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Папярэдняя @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Наступная @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Папярэдні месяц @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Наступны месяц @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Закрыць @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Абраць месяц @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Гадзіны @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Абраць год @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Хвіліны @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Першы @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Прыбавіць гадзіну @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Папярэдняя @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Адняць гадзіну @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Наступная @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Прыбавіць хвіліну @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 На апошнюю @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Адняць хвіліну @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Секунды @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Прыбавіць секунду @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Адняць секунду @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Дакументы @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Наладкі @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Enable @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Логі @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Загрузка... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + What's this? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Пашыраны пошук @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Адбылася памылка пры захаванні налад. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Файлавыя задачы @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Адхіліць @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Адхіліць выбранае @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Адхіліць усе @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Пацвердзіць Адхіліць усе @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 queued @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 пачата @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completed @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 failed @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Delete selected @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Пацвердзіце выдаленне @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Users & Groups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Password has been changed, you will be logged out momentarily. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Saved user "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Error saving user. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirm delete user account @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 This operation will permanently delete this user account. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error saving group. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirm delete user group @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 This operation will permanently delete this user group. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Дакументацыя @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Захаваныя выгляды @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Адкрыць дакументы @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Закрыць усё @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Кіраванне @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 даступна. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Націсніце, каб убачыць. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx можа аўтаматычна правяраць наяўнасць абнаўленняў @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Як гэта працуе? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Даступна абнаўленне @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Адбылася памылка падчас захавання налад праверкі абнаўленняў. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Ачысціць @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Пацвярджэнне @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Пацвердзіць @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Усё @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - now - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Дададзена + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + now + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Алгарытм супастаўлення @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Шаблон супадзення @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Без уліку рэгістра @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assign document type @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assign correspondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Памылка @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Шлях @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Колер + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Тэг паштовай скрыні @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Тэгі ўваходняй скрыні аўтаматычна прысвойваюцца ўсім спажываным дакументам. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Стварыць новы тэг @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Рэдагаваць тэг @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Create new user account @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Edit user account @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Не прызначана @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Прапановы: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Дадаць элемент @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Дадаць тэг @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documents with these Tags @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Фільтр па карэспандэнту @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Фільтраваць па тыпе дакумента @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Фільтраваць па шляху захавання @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Так @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Не @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Старонка @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Выбраць: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Рэдагаваць: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Include: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" і "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' і "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Пацвярдзіць прызначэнне тэгаў @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Гэтая аперацыя дадасць тэг "" да выбраных дакументаў. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Гэтая аперацыя дадасць тэгі "" да выбраных дакументаў. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Гэтая аперацыя выдаліць тэг "" з выбраных дакументаў. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Гэтая аперацыя выдаліць тэгі "" з выбраных дакументаў. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Гэтая аперацыя дадасць тэгі і выдаліць тэгі на выбраных дакументах. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Пацвердзіць прызначэнне карэспандэнта @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Гэтая аперацыя прызначыць карэспандэнта "" абраным дакументам. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Гэтая аперацыя выдаліць карэспандэнта з выбраных дакументаў. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Пацвердзіце прызначэнне тыпу дакумента @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Гэтая аперацыя прысвоіць тып "" абраным дакументам. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Гэтая аперацыя выдаліць тып з абраных дакументаў. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Пацвердзіце прызначэнне шляху захоўвання @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Гэтая аперацыя прызначыць шлях захоўвання "" да выбраных дакументаў. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Гэтая аперацыя выдаліць шлях захоўвання з выбраных дакументаў. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Фільтр па тэгу @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Нічога не выбіраць @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Выбраць старонку @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Выбраць усё - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + None Sort src/app/components/document-list/document-list.component.html - 48 + 68 Сартаваць @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Прагляды @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Захаваць "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Захаваць як... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Выдзелена дакументаў: з 1} other {Выдзелена дакументаў: з }} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Адзін дакумент} other { дакумента(аў)}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (адфільтравана) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Памылка пры загрузцы дакументаў @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sort by ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sort by title @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sort by owner @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by document type @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by storage path @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sort by created date @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sort by added date @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Рэдагаваць дакумент @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Прагляд "" паспяхова захаваны. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Прагляд "" створаны паспяхова. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Назва & змест @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Больш падобных @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 супадае з @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 пусты @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 не пусты @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 большы за @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 менш за @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Без карэспандэнта @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Без тыпу дакумента @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Без усялякага тэга @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Назва: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 карэспандэнт @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 карэспандэнты @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Апошняе выкарыстанне @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Вы сапраўды хочаце выдаліць карэспандэнта ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 тып дакумента @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 тыпы дакументаў @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Вы сапраўды хочаце выдаліць тып дакумента ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {} few { усяго } many { усяго }=1 {Адзін } other { усяго }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Аўтаматычна - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - None - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 шлях захоўвання @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 шляхі захоўвання @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Вы сапраўды хочаце выдаліць шлях захоўвання ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 тэг @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 тэгі diff --git a/src-ui/src/locale/messages.bg_BG.xlf b/src-ui/src/locale/messages.bg_BG.xlf index 89b593505..a3c9a11e4 100644 --- a/src-ui/src/locale/messages.bg_BG.xlf +++ b/src-ui/src/locale/messages.bg_BG.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Затвори @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Назад @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Напред @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Предишен месец @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Следващ месец @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Затвори @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Изберете месец @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Часове @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ММ @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Изберете година @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Минути @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Първи @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Увеличете часове @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Предишен @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Намалете часовете @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Напред @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Увеличете минутите @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Последен @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Намалете минутите @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Секунди @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Увеличете секундите @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Намалете секундите @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Документи @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Настройки @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Активирай @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Дневници @@ -742,11 +742,35 @@ Прегледайте регистрационните файлове за приложението и за проверка на имейл. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Покажи + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Зареждане... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Какво е това? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Подробно търсене @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Грешка при извличане на потребители @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Грешка при извличане на групи @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Възникна грешка при запазване на настройките. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Файлови задачи @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Отхвърляне @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Резултат @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Отхвърляне на селекцията @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Отхвърляне на всичко @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Потвърдете отхвърлянето на всичко @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Отхвърляне на всички задачи? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 на опашка @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 стартирано @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 завършени @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 неуспял @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Кошче @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Изтрии избраните @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Потвърдете изтриването @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Потребители & Групи @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Паролата е променена, ще излезете моментално. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Запазен потребител "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Възникна грешка при запазване на потребител. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Потвърдете изтриването на потребителски профил @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Тази операция ще изтрие завинаги този потребителски профил. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Изтрит потребител "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Грешка при изтриване на потребител "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Запазена група "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Грешка при запазване на група. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Потвърдете изтриването на потребителска група @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Тази операция ще изтрие завинаги тази потребителска група. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Изтрита група "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Грешка при изтриването на групата "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Документация @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Запазени изгледи @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Отворени документи @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Затвори всички @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Управление @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Поща @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Администрация @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Конфигурация @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 е налично. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Натисни за преглед. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx може автоматично да проверява за актуализации @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Как работи това? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Налична актуализация @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Изгледите на страничната лента са актуализирани @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Грешка при актуализиране на изгледите на страничната лента @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Възникна грешка при запазване на настройките за проверка за актуализация. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Изчистване @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Потвърждение @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Потвърди @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Правилно @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Грешно @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Търсене в документи... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Всички @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Не @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Добавете заявка @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Добавете израз @@ -3758,18 +3830,6 @@ Относителни дати - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - сега - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Добавен + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + сега + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 В рамките на 1 седмица @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 В рамките на 1 месец @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 В рамките на 3 месеца @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 В рамките на 1 година @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Тази година @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Този месец @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Вчера + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Алгоритъм за съвпадение @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Модел за съвпадение @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Без чувствителност към големината на буквите @@ -3982,19 +4082,11 @@ Добавяне на опция - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Предупреждение: Съществуващите случаи на това поле ще запазят техния текущ индекс на стойността (напр. Вариант № 1, №2, №3) след редактиране на опциите тук - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Валута по подразбиране @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3 знака валутен код @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Използвайте локално @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Задаване на тип на документ @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Задаване на кореспондент @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Грешка @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Път @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Цвят + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Етикет за входяща поща @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Етикетите на входящата поща се задават автоматично за всички консумирани документи. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Създаване на нов етикет @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Редактиране на етикет @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Имейл @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Двуфакторното удостоверяване @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Деактивирайте двуфакторното удостоверяване @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Създаване на нов потребителски профил @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Промяна на потребителски профил @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp е деактивиран @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Грешка при деактивиране на Totp @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Тип на тригъра @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Задайте планирано отместване на тригера и кое поле за дата да използвате. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Дата на отместване @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Спрямо @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Персонализирано поле @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Персонализирано поле за използване за дата. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Повтарящи се @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Тригерът се повтаря. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Повтарящи се интервални дни @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Повторете задействането на всеки n дни. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Тригер за съвпадащи документи all филтри, посочени по-долу. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Филтриране по файлово име @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Прилага се към документи, които отговарят на това файлово име. Позволени са заместващи символи като *.pdf или *invoice*. Нечувствителен към големи и малки букви. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Филтриране на източници @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Филтриране на път - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Прилагане към документи, които съответстват на този път. Разрешени са заместващи символи, посочени като *. Нормализирани по случай.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Правило за филтриране на поща @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Прилагане за документи, консумирани чрез това правило за поща. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Алгоритъм за съвпадение на съдържанието @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Модел за съвпадение на съдържанието - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Има някой от етикетите + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Има кореспондент + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Има тип на документ + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Тип на действие @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Задаване на заглавие @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Може да включи някои контейнери, вижте <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>документация</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Задаване на етикет @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Задаване нa път за съхранение @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Присвояване на персонализирани полета @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Задаване на собственик @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Задаване на права за разглеждане @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Задаване на права за промяна @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Премахни тагове @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Премахни всички @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Премахни кореспонденти @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Премахни типове документи @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Премахнете пътищата за съхранение @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Премахнете персонализираните полета @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Премахни собственици @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Премахване на права @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Права за преглед @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Редакция на права @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Имейл тема @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Имейл съобщение @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Получатели на имейл @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Прикачете документ @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Url адрес на известяване @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Избери параметри за известяване със съобщение @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Изпратете известяване като JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Известяване параметри @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Известяване съобщение @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Заглавия за известяване @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Добави документа @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Папка за консумация @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Качване от API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Извличане на поща @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Уеб интерфейс @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Персонализирано поле @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Стартирана обработка @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Документът е добавен @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Документът е обновен @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Планирано @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Задача @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Премахване @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Известяване + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Има кореспондент + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Има тип на документ + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Създай нов работен процес @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Редактирай работен процес + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Имейл адрес(и) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Тема @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Съобщение @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Използвайте архивна версия @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Изпратете имейл - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Имейл документ + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Изпратен имейл + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Не е зададен @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Отвори филтър @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Предложения: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Добавяне на елемент @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Добавяне на етикет @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Премахване на етикет @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Филтриране на документи с тези етикети @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Прочети повече @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Сканирайте QR кода с вашето приложение за удостоверяване и след това въведете кода по-долу @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Ключ на автентификатора @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Можете да съхраните този ключ и да го използвате, за да преинсталирате приложението си за удостоверяване по-късно. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Код @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Кодовете за възстановяване няма да се показват отново, не забравяйте да ги запазите. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Копирайте кода @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Имейлите трябва да съвпадат @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Паролите трябва да съвпадат @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Профила е актуализиран успешно @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Грешка при запазването на профила @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Грешка при генериране на auth токен @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Грешка при прекъсване на връзката със социалния акаунт @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Грешка при извличане на настройките за TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP е активиран успешно @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Грешка при активирането на TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP е деактивиран успешно @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Грешка при деактивирането на TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Филтриране по кореспондент @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Филтриране по тип на документ @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Филтриране по път за съхранение @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Да @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Не @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Страница @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Преработен @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Грешка при извличане на метаданни @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Грешка при извличане на предложения. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Документ "" запазен успешно. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Грешка при запазване на документ "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Грешка при запазване на документа @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Наистина ли искате да преместите документа "" в кошчето? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Документите могат да бъдат възстановени преди перманентното им изтриване. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Премести в кошчето @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Грешка при изтриване на документа @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Потвърди преработване @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Тази операция ще пресъздаде архивен файл за този документ. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Архивният файл ще бъде отново генериран с текущите настройки. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Операция за преработка на "", ще започне на заден план. Затворете и отворете или презаредете този документ след приключване на операцията, за да видите ново съдържание. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Грешка при изпълнение на операцията @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Грешка при изтегляне на документа @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Побиране на страницата @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Възникна грешка при зареждането на tiff: @@ -7882,19 +8098,11 @@ Няма намерени записи. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Избор: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Редактиране: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Персонализирани полета @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Филтриране на потребителски полета @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Задайте стойности @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Завъртете @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Обединяване @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Включете: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Архивирани файлове @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Оригинални файлове @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Използвайте форматирано име на файл @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Грешка при изпълнение на групова операция @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" и "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' и "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Потвърждаване на задаването на етикети @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Тази операция ще добави етикета "" към избрани документ(и). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Тази операция ще добави етикети "" към избрани документ(и). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Тази операция ще премахне етикета "" към избрани документ(и). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Тази операция ще премахне етикетите "" към избрани документ(и). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Тази операция ще добави етикетите и премахне етикетите на избраните документ(и). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Потвърждаване на задаването на кореспондент @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Тази операция ще зададе кореспонта "" към избраните документ(и). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Тази операция ще премахне кореспонта от "" избраните документ(и). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Потвърждаване на заданието за тип документ @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Тази операция ще зададе типа документ "" към избраните документ(и). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Тази операция ще премахне типа документ от "" избраните документ(и). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Потвърждаване на задаването на път към хранилище @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Тази операция ще зададе път към хранилище "" към избраните документ(и). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Тази операция ще премахне пътя към хранилище от "" избраните документ(и). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Потвърдете персонализираното присвояване на полето @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Тази операция ще присвои персонализираното поле "" to на избран документ(и). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Тази операция ще присвои потребителските полета към избран документ(и). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Тази операция ще премахне потребителското поле "" от избран документ(и). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Тази операция ще премахне персонализираните полета от избран(и) документ(и). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Тази операция ще присвои потребителските полета и ще премахне персонализираните полета на избран документ(и). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Премеси избраните документ(и) в кошчето? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Тази операция ще пресъздаде за постоянно архивните файлове за избран документ(и). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Архивните файлове ще бъдат повторно генерирани с текущите настройки. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Потвърждение за завъртане @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Тази операция ще завърти за постоянно оригиналната версия на документ(и). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Потвърждаване на сливането @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Тази операция ще се обедини избрани документи в нов документ. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Обединеният документ ще бъде поставен в опашка за обработване. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Персонализираните полета са актуализирани. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Грешка при актуализиране на персонализирани полета. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Филтриране по етикет @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Изчисти избора @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Избери страница @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Избери всички - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Покажи + + src/app/data/matching-model.ts + 45 + + Нищо Sort src/app/components/document-list/document-list.component.html - 48 + 68 Сортиране @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Изгледи @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Запази "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Запази като... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Всички запазени изгледи @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Селектирано: от един документ} other {Селектирано: от }} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, one {}=1 {Един документ} other { документи}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (филтрирано) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Грешка при зареждане на документи @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Сортиране по Архивен номер @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Сортиране по кореспондент @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Сортирай по заглавие @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Сортиране по собственик @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Сортиране по бележки @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Сортиране по вид документ @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Сортиране по път за съхранение @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Сортиране по дата на създаване @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Подреди по дата на добавяне @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Сортиране по брой страници @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Споделено @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Сортирай по: @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Редактиране на документа @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Визуализация на документа @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Нулиране на филтри/селекция @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Отворете първия [selected] документ @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Предишна страница @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Следваща страница @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Изглед "" записан успешно. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Неуспешно запазване на изгледа "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Изглед "" създаден успешно. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Заглавие & съдържание @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Тип файл @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Още като @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 е равно на @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 е празно @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 не е празно @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 по-голямо от @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 по-малко от @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Кореспондент: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Без кореспондент @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Тип документ: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Без тип на документа @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Път за съхранение: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Без път за съхранение @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Етикет: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Без никакъв етикет @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Заявка за персонализирани полета @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Заглавие: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 Архивен номер: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Собственик: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Собственикът не е в: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Без собственик @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 кореспондент @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 кореспонденти @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Последно използан @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Наистина ли искате да изтриете кореспондента ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Филтриране на документи () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 тип на документа @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 типове документи @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Наистина ли искате да изтриете този тип документ ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Деактивиран + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Няма дефинирани правила за поща. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Грешка при извличането на пощенски профили @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Грешка при извличането на правила за поща @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 удостоверяване успешно @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 удостоверяването е неуспешно, вижте регистрационни файлове за подробности @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Запазен профил "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Грешка при запазване на профил. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Потвърдете изтриването на имейл профил @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Тази операция ще изтрие за постоянно този имейл профил. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Изтрит имейл акаунт "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Грешка при изтриване на имейл профил "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Обработване на имейл акаунт "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Грешка при обработката на имейл акаунта "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Запазено правило "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Грешка при запазване на правилото. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Правило "" активирано. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Правило "" забранено. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Грешка при превключване на правило "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Потвърдете изтриването на имейл правилото @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Тази операция ще изтрие за постоянно това правило за имейл. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Правило за изтрита поща "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Грешка при изтриване на правилото за поща "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Правата са актуализирани @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Грешка при актуализиране на правата + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {}=1 {Едно } other { общо }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Автоматично - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Нищо - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Успешно създаден . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Възникна грешка при създаването . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Успешно актуализиран "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Възникна грешка при запазване . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Свързаните документи няма да бъдат изтрити. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Грешка при изтриване на елемент @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Правата са актуализирани успешно @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Тази операция ще изтрие завинаги всички обекти. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Обектите са успешно изтрити @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Грешки при изтриване на обектите @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 път към хранилище @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 пътища за съхранение @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Наистина ли искате да изтриете пътя за съхранение ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 етикет @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 етикети diff --git a/src-ui/src/locale/messages.ca_ES.xlf b/src-ui/src/locale/messages.ca_ES.xlf index c68e2aed7..6378cdc45 100644 --- a/src-ui/src/locale/messages.ca_ES.xlf +++ b/src-ui/src/locale/messages.ca_ES.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Tanca @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Anterior @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Següent @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mes anterior @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mes següent @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Tanca @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seleccioneu mes @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Hores @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seleccioneu un any @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuts @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Primer @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementa hores @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Anterior @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Disminuir hores @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Següent @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementar minuts @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Últim @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Disminuir minuts @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Segons @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementar segons @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Disminuir segons @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documents @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Opcions @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Activa @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Registres @@ -742,11 +742,35 @@ Revisa els fitxers de registre de l'aplicació i per a la comprovació del correu electrònic. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Mostra + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + línies + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Carregant... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Vés al final + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Què és això? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Cerca avançada @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error recuperant l'usuari @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error recuperant els grups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Error al guardar opcions. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Tasques d'arxiu @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Descarta @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Resultat @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Descarta seleccionats @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Descarta tot @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirma Descarta Tot @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Descarta totes tasques? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error descartant tasques + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error descartant tasques + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 a la cua @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 començat @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 acabat @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 Ha fallat @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Brossa @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Suprimeix selecció @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirma eliminació @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Usuaris i grups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Contrasenya desada, es tancarà la sessió momentàniament. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Desat usuari "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Error desant usuari. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirma esborrat compte usuari @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Això esborrarà definitivament aquest compte d'usuari. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Esborrat usuari "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error esborrant usuari "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Grup desat "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error desant grup. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirma esborrat grup usuari @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Operació esborrarà aquest grup d'usuari. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Esborrat grup "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error esborrant grup "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentació @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Vistes guardades @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Obre document @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Tanca-ho tot @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Gestiona @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Correu @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administració @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuració @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 està disponible. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Cliqueu per veure. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx pot cercar actualitzacions automàticament @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Com funciona? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Actualització disponible @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Vistes laterals actualitzades @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error a l'actualitzar vistes laterals @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 S'ha produït un error en desar la configuració de comprovació d'actualitzacions. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Neteja @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirmació @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Confirma @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Vertader @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Fals @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Cerca docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Tot @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 No @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Afegir consulta @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Afegir expressió @@ -3758,18 +3830,6 @@ Dates relatives - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - ara - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Afegit + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + ara + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 En 1 setmana @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 En 1 mes @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 En 3 mesos @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 En 1 any @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Aquest any @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Aquest mes @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Ahir + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Setmana anterior + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Mes anterior + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Quatrimestre Ant + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Any passat + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritme coincident @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Patró coincident @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 No distingeix majúscules - minúscules @@ -3982,19 +4082,11 @@ Afegir opció - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Avís: les instàncies existents d'aquest camp conservaran el seu índex de valor actual (per exemple, opció #1, #2, #3) després d'editar les opcions aquí - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Moneda per defecte @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 caràcters codi moneda @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Empra local @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assigna tipus document @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assigna corresponsal @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Error @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Camí @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Color + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Pare + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Etiqueta d'entrada @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Etiquetes d'entrada son assignades automàticament a tots els document consumits. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Crea nova etiqueta @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Eedita etiqueta @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Autenticació de doble factor @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Desactivar l'autentificació de doble factor @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Crea nou compte usuari @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Editar compte usuari @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp desactivat @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Desactivació de Totp fallit @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Tipus disparador @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Estableix el desplaçament de l'activador programat i quin camp de data s'utilitza. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Dies de compensació @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Els valors positius s'activaran després de la data, els valors negatius abans. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relatiu a @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Camp personalitzat @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Camp personalitzat per emprar data. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurrent @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Disparador és recurrent. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Dies d'interval recurrent @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeteix disparador cada n dies. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Disparadors per documents coincidents amb all filtres especificats a continuació. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtra nom arxiu @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Aplica als documents que coincideixen amb aquest nom de fitxer. Es permeten els comodins com ara *.pdf o *factura*. Cas insensible. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtra orígens @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtra ruta - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filtra regla de correu @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Aplica a documents consumits amb aquesta regla de correu. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Algorisme concordança contingut @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Algorisme concordança patró - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Té alguna etiqueta + Filtresavançats - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Té corresponsal + Afegeix filtre - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Té tipus de document + No s'han definit filtres avançats de flux de treball. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Completeu la configuració de la consulta de camp personalitzat. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Tipus acció @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assigna títol @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Pot incloure marcadors, vegeu <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentació</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assigna etiquetes @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assigna ruta emmagatzematge @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assigna camps personalitzats @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assigna propietari @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assigna permisos de visionat @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assigna permisos d'edició @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Elimina etiquetes @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Eliminar tot @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Elimina corresponsals @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Elimina tipus de documents @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Elimina rutes d'emmagatzematge @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Elimina camps personalitzats @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Elimina propietaris @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Elimina permisos @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Veure permisos @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edita permisos @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Assumpte de l'Email @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Cos de l'Email @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Destinataris del mail @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Adjuntar document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Empra paràmetres pel cos del webhook @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Enviar webhook com a JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Paràmetres del webhook @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Cos del Webhook @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Capçaleres del Webhook @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Incloure documents @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Directori consumició @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Pujada API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Recollida de correu @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Camp personalitzat @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Començada Consumpció @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Afegit @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Actualitzat @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Programat @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignació @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Elimina @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Té totes aquestes etiquetes + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Té totes aquestes etiquetes + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + No té aquestes etiquetes + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Té corresponsal + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + No té corresponsals + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Té tipus de document + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + No té tipus de documens + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Té ruta emmagatzematge + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + No té rutes d'emmagatzematge + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Coincideix amb la consulta de camp personalitzat + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Afegir flux de treball @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Editar flux + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, one {}=1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Adreces de Correu @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Assumpte @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Missatge @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Empra versió arxivada @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Envia correu - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Document correu + Alguns servidors de correu electrònic poden rebutjar missatges amb fitxers adjunts grans. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Correu enviat + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error enviant documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned No assignat @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Obrir filtre @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Suggeriments: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Afegir element @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Afegir etiqueta @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Treure etiqueta @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtra documents amb aquestes etiquetes @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Més informació @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Escaneja el codi QR amb la teva app d'autentificació i insereix el codi @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Secret d'Autentificació @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Pots desar el codi secret i usar més tard per reinstalar la teva app d'autentificació. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Codi @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Els codis de recuperació no es tornaran a mostrar, assegura't de desar-los. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copia els Codis @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Email ha de coindidir @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Contrasenya ha de coincidir @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Perfil actualitzat corrcetament @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error desant perfil @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generant auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error desconnectant compte social @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error obtenint les opcions TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activat correctament @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activant TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP desactivat correctament @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error desactivant TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtra per corresponsal @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtra per tipus de documents @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtra per ruta emmagatzematge @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 No @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Pàgina @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocesa @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Imprimir More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 Editor PDF @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error recuperant les metadades @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error recuperant els suggeriments. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" desat satisfactòriament. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error desant document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error guardant document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Realment vols moure el document "" a la brossa? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Els documents es poden restaurar abans de l'esborrat definitiu. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Mou a la brossa @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error esborrant document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Confirma Reprocès @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Aquesta operació recrearà l'arxivat per aquest document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Els arxius arxivats seran regenerats amb les opcions actuals. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocessament per "" començarà en segon pla. Tanca i reobre o recarrega el documentper a veure el nou contingut. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executant operació @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error descarregant document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Encaix Pàgina @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 Operació d'edició de PDF per a "" començarà en segon pla. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error en executar l'edició del PDF @@ -7850,27 +8066,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Impressió fallida. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Error carregant document per imprimir. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Error al carregar tiff: @@ -7882,19 +8098,11 @@ Sense registres. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Selecciona: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Edita: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Camps personalitzats @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filtra camps personalitzats @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Estableix valors @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rota @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Combina @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Inclou: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Arxius arxivats @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Fitxers originals @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Utilitza nom arxiu formatat @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executant operació en massa @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" i "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' i "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirma assignació etiquetes @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Això afegirà l'etiqueta "" a document(s) seleccionat(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Això afegirà etiqueta a document(s) seleccionat(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Això esborarrà etiqueta "" de document(s) seleccionat(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Això esborrarà etiquetes de document(s) seleccionat(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Això afegirà les etiquetes i eliminarà les etiquetes de document(s) seleccionat(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirma assignació corresponsal @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Això assignarà el corresponsal "" a document(s) seleccionat(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Això treurà el corresponsal de document(s) seleccionat(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirma assignació del tipus de document @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Això assignarà el tipus de document "" a document(s) seleccionat(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 L'operació treurà el tipus de document desde document(s) seleccionats. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirma assignació del camí d'emmagatzematge @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 L'operació assignarà el camí d'emmagatzematge "" to document(s) seleccionats. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 L'operació esborrarà el camí d'emmagatzematge "" de document(s) seleccionats. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirma assignació camp personalitzat @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 L'operació assignarà el camp personalitzat "" a element(s) seleccionat(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 L'operació assignarà els camps personalitzats als documents seleccionats. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 L'operació esborrarà el camp personalitzat de document(s) seleccionat(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 L'operació esborrarpa el camp personalitzat de document(s) seleccionat(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 L'operació assignarà els camps personalitzats i esborrarà els camps personalitzats de document(s) seleccionat(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Moure documents(s) seleccionat(s) a la brossa? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Aquesta operació recrearà els arxius arxiats per al(s) document(s) seleccionat(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Els arxius arxivats seran regenerats amb les opcions actuals. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Confirma rotació @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Aquesta operació girarà permanentment la versió original de document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Confirma combinació @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Aquesta operació combinarà documents seleccionats en un document nou. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 El document combinat es posarà en cua per al seu consum. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Camps personalitzats actualitzats. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error actualitzant camps personalitzats. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtra per etiqueta @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Selecciona Res @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Selecciona pàgina @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Selecciona tot - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Selecciona: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Mostra + + src/app/data/matching-model.ts + 45 + + Cap Sort src/app/components/document-list/document-list.component.html - 48 + 68 Ordena @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Vistes @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Desa "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Desa com a... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Vistes guardades @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, one {}=1 {Seleccionat d'un document} other {Selected de documents}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, one {}=1 {Un document} other { documents}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrat) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Error al carregar documents @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Ordena per ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Ordena per corresponsal @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Ordena per títol @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Ordena per propietari @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Ordena per notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Ordena per tipus de document @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Ordena per ruta emmagatzematge @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Ordena per data de creació @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Ordena per data de creació @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Ordena per número de pàgines @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Compartit @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Ordena per @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Edita document @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Previsualitza document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reseteja filtres / selecció @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Obrer el primer [seleccionat] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Pàgina anterior @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Pàgina següent @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Vista "" desada correctament. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Error desant vista "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Vista "" creada correctament. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Títol i contingut @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Tipus de fitxer @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Més com @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 és igual a @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 està buit @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 no està buit @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 més gran que @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 més petit que @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Corresponsal: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Sense corresponsal @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Tipus Document: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Sense tipus de document @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Ruta Emmagazematge: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Sense ruta emmagatzematge @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Etiqueta: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Sense cap etiqueta @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Consulta de camps personalitzats @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Títol: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Propietari: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Propietari no és: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Sense propietari @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 corresponsal @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 corresponsals @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Últim usat @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Esborrar corresponsal ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filtra Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 tipus de document @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 tipus de document @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Esborrar tipus de document ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Desactivat + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Veure correu processat + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Sense regles del correu definides. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error recuperant els comptes de correu @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error recuperant les regles del correu @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Autenticació OAuth2 correcte @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 Autenticació OAuth2 fallida, mirar logs per detalls @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Compte desat "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error desant compte. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirma l'esborrat del compte de correu @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 L'operació esborrarà aquest compte de correu. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Esborrat compte de correu "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error esborrant compte de correu "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processant compte de correu "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processant compte de correu "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Desada regla "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error desant regla. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Regla "" activada. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Regla "" desactivada. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Eror alternant regla "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirma l'esborrat de la regla del correu @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Això esborrarà definitivament la regla de correu. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Regla de correu "" esborrada @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Regla de correu "" esborrada. @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permisos actualitzats @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error actualitzant permisos + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processat mail per + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Sense correus processats trobats. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Rebut + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processat + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Correu(s) rprocessats esborrats + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {}=1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automàtic - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Cap - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Creat correctament . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error creant . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Actualitzat correctament "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error al guardar . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Documents assocuiats no seran esborrats. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error esborrant element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permisos actualitzats correctament @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Aquesta operació esborrarà tots els objectes. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objecte esborrat correctament @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error esborrant objectes @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 ruta emmagatzematge @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 rutes emmagatzematge @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Esborrar ruta emmagatzematge ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 etiqueta @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 etiquetes @@ -10180,7 +10436,7 @@ src/app/data/custom-field.ts 55 - Long Text + Text Llarg Search score diff --git a/src-ui/src/locale/messages.cs_CZ.xlf b/src-ui/src/locale/messages.cs_CZ.xlf index 5da5f9616..7b74628b6 100644 --- a/src-ui/src/locale/messages.cs_CZ.xlf +++ b/src-ui/src/locale/messages.cs_CZ.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Zavřít @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Předchozí @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Následující @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Předchozí měsíc @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Následující měsíc @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zavřít @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vybrat měsíc @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Hodin @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vybrat rok @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuty @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 První @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zvýšení počtu hodin @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Předchozí @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Snížení počtu hodin @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Následující @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zvýšení počtu minut @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Poslední @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Snížení počtu minut @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekundy @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zvýšení počtu sekund @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Snížení počtu sekund @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumenty @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Nastavení @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Povolit @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Záznamy @@ -742,11 +742,35 @@ Prohlédněte si soubory protokolu pro aplikaci a pro kontrolu e-mailů. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Zobrazit + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + řádky + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Načítání... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Přejít na konec + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Co je to? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Pokročilé vyhledávání @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Chyba při načítání uživatelů @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Chyba při načítání skupin @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Při ukládání nastavení došlo k chybě. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Úlohy souborů @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Zahodit @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Výsledek @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Zahodit vybrané @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Zahodit vše @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Potvrdit zahození všech @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Zahodit všech úloh? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Chyba při odstraňování úkolů + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Chyba při odstraňování úkolu + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 ve frontě @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 zahájeno @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 dokončené @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 selhané @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Koš @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Smazat vybrané @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Potvrdit smazání @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Uživatelé a skupiny @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Heslo bylo změněno, za chvíli budete odhlášeni. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Uživatel „“ uložen. @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Chyba při ukládání uživatele. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Potvrdit smazání uživatelského účtu @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Tato operace trvale odstraní tento uživatelský účet. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Uživatel „“ odstraněn @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Chyba při odstraňování uživatele „“. @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Skupina „“ uložena. @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Chyba při ukládání skupiny. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Potvrdit odstranění skupiny uživatelů @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Tato operace trvale odstraní tuto skupinu uživatelů. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Skupina „“ odstraněna @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Chyba při odstraňování skupiny „“. @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentace @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Uložené pohledy @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Otevřené dokumenty @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Zavřít vše @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Správa @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Pošta @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administrace @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfigurace @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 je k dispozici. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klikněte pro zobrazení. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx umí automaticky kontrolovat aktualizace @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Jak to funguje? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Je dostupná aktualizace @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Pohledy postranního panelu aktualizovány @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Chyba při aktualizaci pohledů postranního panelu @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Došlo k chybě při ukládání nastavení kontroly aktualizací. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Smazat @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Potvrzení @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Potvrdit @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Pravda @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Nepravda @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Hledat dokumenty... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Vše @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Není @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Přidat dotaz @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Přidat výraz @@ -3758,18 +3830,6 @@ Relativní datum - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - nyní - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Přidáno + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + nyní + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Během 1 týdne @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Během 1 měsíce @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Během 3 měsíců @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Během 1 roku @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Tento rok @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Tento měsíc @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Včera + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Předchozí týden + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Předchozí měsíc + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Předchozí čtvrtletí + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Předchozí rok + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Porovnávací algoritmus @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Vzor shody @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Nerozlišovat velikost písmen @@ -3982,19 +4082,11 @@ Přidat možnost - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Upozornění: existující instance tohoto pole si po úpravě zde uvedených možností zachovají svůj aktuální index hodnot (např. možnost č. 1, 2, 3) - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Výchozí měna @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Třímístný kód měny @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Použít národní prostředí @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Přiřadit typ dokumentu @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Přiřadit korespondenta @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Chyba @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Cesta @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Barva + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Nadřazený + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Štítek schránky @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Štítky doručené pošty jsou automaticky přiřazeny ke všem importovaným dokumentům. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Vytvořit nový štítek @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Upravit štítek @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-mail @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Dvoufázové ověření @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Zakázat dvoufázové ověření @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Vytvořit nový uživatelský účet @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Upravit uživatelský účet @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 TOTP deaktivováno @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Deaktivace TOTP selhala @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Typ spouštěče @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Nastavit posun naplánovaného spouštěče a použité pole data. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Posun ve dnech @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Kladné hodnoty spustí plán po vybraném datu, záporné před. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Ve vztahu k @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Vlastní pole @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Vlastní pole použité pro datum. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Opakující se @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Spouštěč se opakuje. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Interval opakování ve dnech @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Opakovat spouštěč kadých n dní. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Spouštěč pro dokumenty, které odpovídají všem níže zadaným filtrům. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtr názvu souboru @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Použít na dokumenty odpovídající tomuto názvu souboru. Zástupné symboly, jako *.pdf nebo *faktura*, jsou povoleny. Nerozlišuje velká a malá písmena. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtr zdrojů @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtr cesty - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Použít na dokumenty odpovídající této cestě. Zástupné symboly zadané jako * jsou povoleny. Velká a malá písmena jsou normalizována.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Pravidlo filtrování pošty @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Použít na dokumenty zpracované pomocí tohoto pravidla pošty. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Algoritmus shody obsahu @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Vzor shody obsahu - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Má některý ze štítků + Pokročilé filtry - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Má korespondenta + Přidat filtr - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Má typ dokumentu + Nebyly definovány žádné pokročilé filtry pracovního postupu. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Dokončete konfiguraci dotazu na vlastní pole. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Typ akce @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Přiřadit název @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Může zahrnovat některé zástupné symboly, viz <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>dokumentace</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Přiřadit štítky @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Přiřadit cestu k úložišti @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Přiřadit vlastní pole @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Přiřadit vlastníka @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Přiřadit oprávnění k zobrazení @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Přiřadit oprávnění k úpravě @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Odstranit štítky @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Odstranit vše @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Odstranit korespondenty @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Odstranit typy dokumentů @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Odstranit cesty k úložišti @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Odstranit vlastní pole @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Odstranit vlastníky @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Odstranit oprávnění @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Oprávnění k zobrazení @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Oprávnění k úpravě @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Předmět e-mailu @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Tělo e-mailu @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Příjemci e-mailu @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Přiložit dokument @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 URL webhooku @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Použít parametry pro tělo webhooku @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Odeslat data webhooku jako JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Parametry webhooku @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Tělo webhooku @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Hlavičky webhooku @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Zahrnout dokument @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Složka zpracování @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Nahrání pomocí API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Načíst poštu @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Webové rozhraní @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Vlastní pole @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Spuštěno zpracování @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Dokument přidán @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Dokument aktualizován @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Naplánováno @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Přidělení @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Odstranění @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Má některý z těchto štítků + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Má všechny tyto štítky + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Nemá tyto štítky + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Má korespondenta + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Nemá tyto korespondenty + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Má typ dokumentu + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Nemá tyto typy dokumentů + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Má cestu k úložišti + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Nemá tyto cesty k úložišti + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Odpovídá dotazu na vlastní pole + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Vytvořit nový pracovní postup @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Upravit pracovní postup + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Odeslat dokument emailem} few {Odeslat dokumenty emailem} other {Odeslat dokumentů emailem}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 E-mailové adresy @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Předmět @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Zpráva @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Použít archivní verzi @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Poslat e-mail - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - E-mailový dokument + Některé e-mailové servery mohou odmítnout zprávy s velkými přílohami. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 E-mail odeslán + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Chyba při odesílání dokumentů + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nepřiřazeno @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Otevřít filtr @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Návrhy: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Přidat položku @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Přidat štítek @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Odstranit štítek @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtrovat dokumenty s těmito štítky @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Zjistit více @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Naskenujte kód QR pomocí ověřovací aplikace a poté zadejte níže uvedený kód @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Tajný klíč ověření @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Tento tajný klíč můžete uložit a později jej použít k opětovné instalaci ověřovací aplikace. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Kód @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Obnovovací kódy se znovu nezobrazí, nezapomeňte si je uložit. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Kopírovat kódy @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 E-maily se musí shodovat @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Hesla se musí shodovat @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profil úspěšně aktualizován @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Chyba při ukládání profilu @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Chyba při generování ověřovacího tokenu @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Chyba při odpojování účtu sociální sítě @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Chyba při získávání nastavení TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP úspěšně aktivováno @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Chyba při aktivaci TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP úspěšně deaktivováno @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Chyba při deaktivaci TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6874,7 +7090,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + Připojení k WebSocket OK @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + OK Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrovat podle korespondenta @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtrovat podle typu dokumentu @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtrovat podle cesty k úložišti @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ano @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ne @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Strana @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Znovu zpracovat @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Tisk More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Chyba při načítání metadat @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Chyba při načítání návrhů. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Dokument „“ úspěšně uložen. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Chyba při ukládání dokumentu „ @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Chyba při ukládání dokumentu @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Opravdu chcete přesunout dokument „“ do koše? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Dokumenty lze obnovit před trvalým odstraněním. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Přesunout do koše @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Chyba při mazání dokumentu @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Potvrzení opětovného zpracování @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Tato operace trvale obnoví archivní soubor pro tento dokument. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Archivní soubor bude znovu vytvořen s aktuálním nastavením. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Operace opětovného zpracování souboru „“ bude spuštěna na pozadí. Pro zobrazení nového obsahu zavřete a znovu otevřete nebo znovu načtěte tento dokument po dokončení operace. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Chyba při provádění operace @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Chyba při stahování dokumentu @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Přizpůsobení stránky @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 Operace editace PDF pro "" bude zahájena na pozadí. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Chyba při provádění operace editace PDF @@ -7850,27 +8066,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Tisk selhal. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Chyba při načítání dokumentu pro tisk. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Došlo k chybě při načítání tiff: @@ -7882,19 +8098,11 @@ Nenalezeny žádné záznamy. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Vybrat: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Upravit: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Vlastní pole @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filtrovat vlastní pole @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Nastavit hodnoty @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Otočit @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Sloučit @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Zahrnout: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archivované soubory @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Původní soubory @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Použít formátovaný název souboru @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Chyba při provádění hromadné operace @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 " @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" a "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' a "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Potvrdit přiřazení štítků @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Tato operace přidá štítek "" k vybraným dokumentům. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Tato operace přidá štítky k vybraným dokumentům. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Tato operace odstraní štítek "" z vybraných dokumentů. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Tato operace odstraní štítky z vybraných dokumentů. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Tato operace přidá štítky a odstraní štítky u vybraných dokumentů. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Potvrdit přiřazení korespondenta @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Tato operace přiřadí korespondenta "" k vybraným dokumentům. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Tato operace odstraní korespondenta z vybraných dokumentů. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Potvrdit přiřazení typu dokumentu @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Tato operace přiřadí typ dokumentu "" vybraným dokumentům. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Tato operace odstraní typ dokumentu vybraných dokumentů. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Potvrdit přiřazení cesty k úložišti @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Tato operace nastaví cestu úložiště „“ k vybraným dokumentům. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Tato operace odstraní cestu úložiště u vybraných dokumentů. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Potvrdit přidělení vlastního pole @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Tato operace nastaví vlastní pole „“ k vybraným dokumentům. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Tato operace nastaví vlastní pole k vybraným dokumentům. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Tato operace odstraní vlastní pole „“ u vybraných dokumentů. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Tato operace odstraní vlastní pole u vybraných dokumentů. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Tato operace nastaví vlastní pole a odstraní vlastní pole u vybraných dokumentů. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Přesunout vybraných dokumentů do koše? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Tato operace trvale obnoví archivní soubory pro vybraných dokumentů. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Archivní soubory bude znovu vytvořeny s aktuálním nastavením. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Potvrzení otočení @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Tato operace nenávratně otočí původní verzi dokumentů. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Potvrdit sloučení @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Tato operace sloučí vybraných dokumentů do nového dokumentu. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Sloučený dokument bude zařazen do fronty ke zpracování. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Aktualizována vlastní pole. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Nepodařilo se aktualizovat vlastní pole. @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrovat podle štítku @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Zrušit výběr @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Vybrat stránku @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Vybrat vše - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Vybrat: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Zobrazit + + src/app/data/matching-model.ts + 45 + + Žádný Sort src/app/components/document-list/document-list.component.html - 48 + 68 Řazení @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Pohledy @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Uložit "" @@ -8561,7 +8781,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Uložit jako... @@ -8569,7 +8789,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Všechny uložené pohledy @@ -8577,7 +8797,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, one {} few {Vybráno z dokumentů} many {Vybráno z dokumentů} =1 {Vybráno z dokumentu} other {Vybráno z dokumentů}} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, one {} few { dokumenty} many { dokument} =1 {dokument} other { dokumentů}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrováno) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,7 +8833,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Chyba při načítání dokumentů @@ -8621,7 +8841,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Seřadit podle SČA @@ -8629,11 +8849,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8649,7 +8869,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Seřadit podle korespondenta @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Seřadit podle názvu @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Seřadit podle vlastníka @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Seřadit podle poznámek @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Seřadit podle typu dokumentu @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Seřadit podle cesty k úložišti @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Seřadit podle data vytvoření @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Seřadit podle data přidání @@ -8729,7 +8949,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Seřadit podle počtu stránek @@ -8737,7 +8957,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Sdílené @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Seřadit podle @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Upravit dokument @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Náhled dokumentu @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Resetovat filtry / výběr @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Otevřít první [vybraný] dokument @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Předchozí stránka @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Další stránka @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Zobrazení "" bylo úspěšně uloženo. @@ -8829,7 +9049,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Nepodařilo se uložit pohled „“. @@ -8837,7 +9057,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Zobrazení "" bylo úspěšně vytvořeno. @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Název a obsah @@ -8861,7 +9081,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Typ souboru @@ -8869,7 +9089,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Podobné @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 rovná se @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 je prázdný @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 není prázdný @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 větší než @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 menší než @@ -8917,7 +9137,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Korespondent: @@ -8925,7 +9145,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Bez korespondenta @@ -8933,7 +9153,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Typ dokumentu: @@ -8941,7 +9161,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Bez typu dokumentu @@ -8949,7 +9169,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Cesta k úložišti: @@ -8957,7 +9177,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Bez cesty k úložišti @@ -8965,7 +9185,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Štítek: @@ -8973,7 +9193,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Bez štítku @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Dotaz na vlastní pole @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Název: @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 SČA: @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Vlastník: @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Vlastník není v: @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Bez vlastníka @@ -9157,7 +9377,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 korespondent @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 korespondenti @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Naposledy použito @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Opravdu chcete smazat korespondenta ""? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filtrovat dokumenty () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 typ dokumentu @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 typy dokumentů @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Opravdu chcete smazat typ dokumentu""? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ Zakázáno + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Zobrazit zpracovanou poštu + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Nejsou nastavena žádná pravidla pošty. @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Chyba při načítání účtů pošty @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Chyba při načítání pravidel pošty @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Ověření pomocí OAuth2 bylo úspěšné @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 Ověření pomocí OAuth2 selhalo, podrobnosti naleznete v záznamech @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Uložený účet „“. @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Chyba při ukládání účtu. @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Potvrdit odstranění účtu pošty @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Tato operace nenávratně odstraní tento účet pošty. @@ -9477,7 +9705,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Účet pošty „“ odstraněn @@ -9485,7 +9713,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Chyba při odstraňování účtu pošty „“. @@ -9493,7 +9721,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Zpracovávání účtu pošty „ @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Chyba při zpracovávání účtu pošty „ @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Uloženo pravidlo „“. @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Chyba při ukládání pravidla. @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Pravidlo „“ povoleno. @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Pravidlo „“ zakázáno. @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Chyba při přepínání pravidla „“. @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Potvrdit odstranění pravidla pošty @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Tato operace nenávratně odstraní toto pravidlo pošty. @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Pravidlo pošty „“ odstraněno @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Chyba při odstraňování pravidla pošty „“. @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Oprávnění aktualizována @@ -9589,14 +9817,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Chyba při aktualizaci oprávnění + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Zpracovaná pošta pro + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Nebyly nalezeny žádné zpracované e-mailové zprávy. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Přijato + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Zpracováno + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Zpracované zprávy byly odstraněny + Filter by: @@ -9661,19 +9929,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Jeden } other {Celkem }} @@ -9681,7 +9949,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9957,11 @@ Automaticky - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Žádný - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Úspěšně vytvořeno . @@ -9713,7 +9969,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Došlo k chybě při vytváření . @@ -9721,7 +9977,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 “ úspěšně aktualizován. @@ -9729,7 +9985,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Došlo k chybě při ukládání . @@ -9737,7 +9993,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Související dokumenty nebudou odstraněny. @@ -9745,7 +10001,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Chyba při odstraňování prvku @@ -9753,7 +10009,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Oprávnění úspěšně aktualizována @@ -9761,7 +10017,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Tato operace trvale odstraní všechny objekty. @@ -9769,7 +10025,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objekty úspěšně odstraněny @@ -9777,7 +10033,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Chyba při odstraňování objektů @@ -9865,7 +10121,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 cesta k úložišti @@ -9873,7 +10129,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 cesty k úložišti @@ -9881,7 +10137,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Opravdu chcete odstranit cestu k úložišti „“? @@ -9889,7 +10145,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 štítek @@ -9897,7 +10153,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 štítky @@ -10179,7 +10435,7 @@ src/app/data/custom-field.ts 55 - Long Text + Dlouhý text Search score diff --git a/src-ui/src/locale/messages.da_DK.xlf b/src-ui/src/locale/messages.da_DK.xlf index 51961c12a..adb6883e7 100644 --- a/src-ui/src/locale/messages.da_DK.xlf +++ b/src-ui/src/locale/messages.da_DK.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Luk @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Forrige @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Næste @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Forrige måned @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Næste måned @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Luk @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vælg måned @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Timer @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vælg år @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutter @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Første @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Forøg timer @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Forrige @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Reducer timer @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Næste @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Forøg minutter @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sidste @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Reducer minutter @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekunder @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Forøg sekunder @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Reducer sekunder @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumenter @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Indstillinger @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Enable @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logninger @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Indlæser... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + What's this? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Avanceret søgning @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 An error occurred while saving settings. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 File Tasks @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dismiss @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dismiss selected @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Dismiss all @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirm Dismiss All @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 queued @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 started @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completed @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 failed @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Delete selected @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Bekræft sletning @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Users & Groups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Password has been changed, you will be logged out momentarily. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Saved user "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Error saving user. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirm delete user account @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 This operation will permanently delete this user account. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error saving group. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirm delete user group @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 This operation will permanently delete this user group. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentation @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Gemte visninger @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Åbn dokumenter @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Luk alle @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Administrér @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 er tilgængelig. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klik for at se. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx can automatically check for updates @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 How does this work? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Opdatering tilgængelig @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 An error occurred while saving update checking settings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Ryd @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Bekræftelse @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Bekræft @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Alle @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - now - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Tilføjet + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + now + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Matching algoritme @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Match mønster @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Skelner ikke mellem store og små bogstaver @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assign document type @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assign correspondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Fejl @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Path @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Farve + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Indbakkeetiket @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Indbakkeetiketter er automatisk tildelt til alle bearbejdede dokumenter. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Opret ny etiket @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Redigér etiket @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Create new user account @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Edit user account @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Ikke tildelt @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Forslag: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Tilføj element @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Tilføj etiket @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documents with these Tags @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrer efter korrespondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filter by document type @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter by storage path @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ja @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nej @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Side @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Vælg: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Redigér: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Include: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" og "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' og "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Bekræft tildeling af etiketter @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Denne handling vil tilføje etiketten "" til valgte dokument(er). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Denne handling vil tilføje etiketterne "" til valgte dokument(er). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Denne handling vil fjerne etiketten "" fra valgte dokument(er). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Denne handling vil fjerne etiketterne "" fra valgte dokument(er). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Denne handling vil tilføje etiketterne og fjerne etiketterne fra valgte dokument(er). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Bekræft korrespondenttildeling @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Denne handling vil tildele korrespondenten "" til valgte dokument(er). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Denne handling vil fjerne korrespondenten fra valgte dokument(er). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Bekræft tildeling af dokumenttype @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Denne handling vil tildele dokumenttypen "" til valgte dokument(er). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Denne handling vil fjerne dokumenttypen fra valgte dokument(er). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrer efter tag @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Vælg ingen @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Vælg side @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Vælg alle - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + None Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sortér @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Visninger @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Gem "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Gem som... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Valgte af et dokument} other {Valgte af dokumenter}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Et dokument} other { dokumenter}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtreret) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Fejl ved indlæsning af dokumenter @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sort by ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sort by title @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sort by owner @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by document type @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by storage path @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sort by created date @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sort by added date @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Edit document @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Visning "" er gemt. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Visning "" er oprettet. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titel & indhold @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Mere som @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 equals @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 is empty @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 is not empty @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 greater than @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 less than @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Uden korrespondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Uden dokumenttype @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Uden nogen etiket @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Titel: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 korrespondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 korrespondenter @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Last used @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Er du sikker på, at du vil slette korrespondenten ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 dokumenttype @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 dokumenttyper @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Er du sikker på, at du vil slette dokumenttypen ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatisk - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - None - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 storage path @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 storage paths @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 etiket @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 etiketter diff --git a/src-ui/src/locale/messages.de_DE.xlf b/src-ui/src/locale/messages.de_DE.xlf index 9c09297bd..9079c21b0 100644 --- a/src-ui/src/locale/messages.de_DE.xlf +++ b/src-ui/src/locale/messages.de_DE.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Schließen @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Vorherige @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Nächste @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Vorheriger Monat @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Nächster Monat @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Schließen @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Monat auswählen @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Stunden @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Jahr auswählen @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuten @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Erste @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Stunden erhöhen @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vorherige @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Stunden verringern @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Nächste @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuten erhöhen @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Letzte @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuten verringern @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekunden @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekunden erhöhen @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekunden verringern @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumente @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Einstellungen @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Aktivieren @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Protokolle @@ -742,11 +742,35 @@ Überprüfen Sie die Protokolldateien für die Anwendung und den E-Mail-Abruf. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Anzeigen + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + Zeilen + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Wird geladen... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Nach unten + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Was ist das? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Erweiterte Suche @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Fehler beim Abrufen der Benutzer @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Fehler beim Abrufen der Benutzergruppen @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Fehler beim Speichern der Einstellungen. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Dateiaufgaben @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Verwerfen @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Ergebnis @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Ausgewählte verwerfen @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Alle verwerfen @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Alle verwerfen bestätigen @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Alle Aufgaben verwerfen? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Fehler beim Verwerfen der Aufgaben + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Fehler beim Verwerfen der Aufgabe + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 ausstehend @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 gestartet @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 abgeschlossen @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 fehlgeschlagen @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Papierkorb @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Ausgewählte löschen @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Löschen bestätigen @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Benutzer & Gruppen @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Das Kennwort wurde geändert, Sie werden nun abgemeldet. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Benutzerkonto „“ gespeichert. @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Fehler beim Speichern des Benutzers. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Löschen des Benutzerkontos bestätigen @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Dieser Vorgang wird dieses Benutzerkonto unwiderruflich löschen. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Benutzer „“ gelöscht @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Fehler beim Löschen des Benutzers „“. @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Gruppe „“ gespeichert. @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Fehler beim Speichern der Gruppe. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Löschen der Benutzergruppe bestätigen @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Dieser Vorgang wird diese Benutzergruppe unwiderruflich löschen. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Gruppe „“ gelöscht @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Fehler beim Löschen der Gruppe „“. @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentation @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Gespeicherte Ansichten @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Geöffnete Dokumente @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Alle schließen @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Verwaltung @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 E-Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfiguration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 ist verfügbar. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Zum Anzeigen klicken. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx kann automatisch auf Aktualisierungen überprüfen @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Wie funktioniert das? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Aktualisierung verfügbar @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Seitenleisten-Ansichten aktualisiert @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Fehler beim Aktualisieren der Seitenleisten-Ansichten @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Fehler beim Speichern der Einstellungen für die Aktualisierungsüberprüfung. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Zurücksetzen @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Bestätigung @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Bestätigen @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Wahr @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Falsch @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Suche Dokumente... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Alle @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Nicht @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Abfrage hinzufügen @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Ausdruck hinzufügen @@ -3758,18 +3830,6 @@ Relative Datumsangaben - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - jetzt - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Hinzugefügt am + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + jetzt + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Innerhalb einer Woche @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Innerhalb eines Monats @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Innerhalb von 3 Monaten @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Innerhalb eines Jahres @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Aktuelles Jahr @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Aktueller Monat @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Gestern + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Vorherige Woche + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Vorheriger Monat + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Vorheriges Quartal + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Vorheriges Jahr + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Zuweisungsalgorithmus @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Zuweisungsmuster @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Groß-/Kleinschreibung irrelevant @@ -3982,19 +4082,11 @@ Option hinzufügen - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warnung: Bestehende Instanzen dieses Feldes behalten Ihren aktuellen Werteindex (z. B. Option #1, #2, #3) nach der Bearbeitung der Optionen hier - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Standardwährung @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Dreistelliger ISO-Währungscode @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Gebietsschema verwenden @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Dokumenttyp zuweisen @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Korrespondent zuweisen @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Fehler @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Pfad @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Farbe + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Übergeordnetes Element + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Posteingangs-Tag @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Ein Tag mit dieser Option wird automatisch allen neuen Dokumenten zugewiesen. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Neues Tag erstellen @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Tag bearbeiten @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-Mail @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Zwei-Faktor-Authentifizierung @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Zwei-Faktor-Authentifizierung deaktivieren @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Neues Benutzerkonto erstellen @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Benutzerkonto bearbeiten @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 TOTP deaktiviert @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 TOTP-Deaktivierung fehlgeschlagen @@ -4968,7 +5076,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html 31 - Workflow auslösen bei: + Arbeitsablauf auslösen bei: Add Trigger @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Auslösertyp @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Legen Sie die Verzögerung des geplanten Auslösers und das zu verwendende Datumsfeld fest. @@ -5014,23 +5122,23 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Verzögerung (Tage) - + Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 - Positive Werte werden nach dem Datum ausgelöst, negative Werte davor. + Positive Werte werden nach dem Datum ausgelöst, negative Werte davor. Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Bezogen auf @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Benutzerdefiniertes Feld @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Benutzerdefiniertes Feld, das als Datum verwendet wird. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Wiederkehrend @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Der Auslöser ist wiederkehrend. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Wiederkehrendes Intervall (Tage) @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Wiederholt den Auslöser alle n Tage. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Auslöser für Dokumente, die mit allen unten angegebenen Filtern übereinstimmen. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Dateinamen filtern @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Auf Dokumente anwenden, die mit diesem Dateinamen übereinstimmen. Platzhalter wie *.pdf oder *rechung* sind erlaubt. Groß- und Kleinschreibung wird nicht beachtet. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Quellen filtern @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Pfad filtern - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Auf Dokumente anwenden, die mit diesem Pfad übereinstimmen. Platzhalter wie * sind zulässig. Groß- und Kleinschreibung normalisiert.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 E-Mail-Regel filtern @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Auf Dokumente anwenden, die über diese E-Mail-Regel verarbeitet wurden. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Inhaltsabgleichsalgorithmus @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Inhaltsabgleichsmuster - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Hat eines der Tags + Erweiterte Filter - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Hat Korrespondent + Filter hinzufügen - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Hat Dokumenttyp + Keine erweiterten Arbeitsablauf-Filter definiert. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Hat Speicherpfad + Benutzerdefinierte Feldabfragekonfiguration abschließen. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Aktionstyp @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Titel zuweisen @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Kann einige Platzhalter enthalten, siehe <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>Dokumentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Tags zuweisen @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Speicherpfad zuweisen @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Benutzerdefinierte Felder zuweisen @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Eigentümer zuweisen @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Anzeigeberechtigungen zuweisen @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Bearbeitungsberechtigungen zuweisen @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Tags entfernen @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Alle entfernen @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Korrespondenten entfernen @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Dokumenttypen entfernen @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Speicherpfade entfernen @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Benutzerdefinierte Felder entfernen @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Eigentümer entfernen @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Berechtigungen entfernen @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Anzeigeberechtigungen @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Bearbeitungsberechtigungen @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 E-Mail-Betreff @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 E-Mail-Inhalt @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 E-Mail-Empfänger @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Dokument anhängen @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook-URL @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Parameter für Webhook-Inhalt verwenden @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Webhook-Payload als JSON senden @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook-Parameter @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook-Inhalt @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook-Kopfzeilen @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Dokument einbeziehen @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Importordner @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API-Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 E-Mail-Abruf @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Weboberfläche @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Benutzerdefiniertes Feld @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Verarbeitung gestartet @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Dokument hinzugefügt @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Dokument aktualisiert @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Geplant @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Zuordnung @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Entfernung @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Hat beliebige dieser Tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Hat alle diese Tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Hat diese Tags nicht + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Hat Korrespondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Korrespondent ist nicht + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Hat Dokumenttyp + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Dokumenttyp ist nicht + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + hat Speicherpfad + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Speicherpfad ist nicht + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Stimmt mit benutzerdefinierter Feldabfrage überein + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Neuen Arbeitsablauf erstellen @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Arbeitsablauf bearbeiten + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Dokument mailen} other { Dokumente mailen}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 E-Mail-Adresse(n) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Betreff @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Nachricht @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Archivversion verwenden @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 E-Mail senden - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Dokument per E-Mail senden + Einige E-Mail-Server lehnen Nachrichten mit großen Anhängen ab. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 E-Mail gesendet + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Fehler beim Senden der Dokumente + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nicht zugewiesen @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Filter öffnen @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Vorschläge: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Element hinzufügen @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Tag hinzufügen @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Tag entfernen @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Dokumente mit diesen Tags filtern @@ -6002,119 +6210,123 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Weiterlesen - + Select all pages src/app/components/common/pdf-editor/pdf-editor.component.html 9 - Alle Seiten auswählen + Alle Seiten auswählen - + Deselect all pages src/app/components/common/pdf-editor/pdf-editor.component.html 12 - Alle Seiten abwählen + Alle Seiten abwählen - + Rotate selected pages counter-clockwise src/app/components/common/pdf-editor/pdf-editor.component.html 17 - Ausgewählte Seiten gegen den Uhrzeigersinn drehen + Ausgewählte Seiten gegen den Uhrzeigersinn rotieren - + Rotate selected pages clockwise src/app/components/common/pdf-editor/pdf-editor.component.html 20 - Ausgewählte Seiten im Uhrzeigersinn drehen + Ausgewählte Seiten im Uhrzeigersinn rotieren - + Delete selected pages src/app/components/common/pdf-editor/pdf-editor.component.html 23 - Ausgewählte Seiten löschen + Ausgewählte Seiten löschen - + Rotate page counter-clockwise src/app/components/common/pdf-editor/pdf-editor.component.html 33 - Seite gegen Uhrzeigersinn drehen + Seite gegen Uhrzeigersinn rotieren - + Rotate page clockwise src/app/components/common/pdf-editor/pdf-editor.component.html 36 - Seite im Uhrzeigersinn drehen + Seite im Uhrzeigersinn rotieren - + Delete page src/app/components/common/pdf-editor/pdf-editor.component.html 41 - Seite löschen + Seite löschen - + Add / remove document split here src/app/components/common/pdf-editor/pdf-editor.component.html 44 - Dokumenttrennung hier hinzufügen / entfernen + Dokumenttrennung hier hinzufügen / entfernen - + Split here src/app/components/common/pdf-editor/pdf-editor.component.html 70 - Hier teilen + Hier teilen - + Create new document(s) src/app/components/common/pdf-editor/pdf-editor.component.html 82 - Neue(s) Dokument(e) erstellen + Neue(s) Dokument(e) erstellen - + Update existing document src/app/components/common/pdf-editor/pdf-editor.component.html 87 - Bestehendes Dokument aktualisieren + Bestehendes Dokument aktualisieren - + Copy metadata src/app/components/common/pdf-editor/pdf-editor.component.html 94 - Metadaten kopieren + Metadaten kopieren - + Delete original src/app/components/common/pdf-editor/pdf-editor.component.html 98 - Original löschen + Original löschen Merge with existing permissions @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scannen Sie den QR-Code mit Ihrer Authentifizierungs-App und geben Sie anschließend den Code unten ein @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authentifizierungsschlüssel @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Sie können diesen Schlüssel speichern und verwenden, um Ihre Authentifizierungs-App zu einem späteren Zeitpunkt neu zu installieren. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Wiederherstellungscodes werden nicht erneut angezeigt. Stellen Sie sicher, dass sie gesichert wurden. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Codes kopieren @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 E-Mail-Adressen müssen übereinstimmen @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Kennwörter müssen übereinstimmen @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profil erfolgreich aktualisiert @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Fehler beim Speichern des Profils @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Fehler beim Generieren des Authentifizierungstokens @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Fehler beim Trennen des Drittanbieterkontos @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Fehler beim Abrufen der TOTP-Einstellungen @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP erfolgreich aktiviert @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Fehler beim Aktivieren von TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP erfolgreich deaktiviert @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Fehler beim Deaktivieren von TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6868,21 +7084,21 @@ Letzte Ausführung - + WebSocket Connection src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - Websocket Verbindung + WebSocket-Verbindung - + OK src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + OK Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Nach Korrespondent filtern @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Nach Dokumenttyp filtern @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Nach Speicherpfad filtern @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ja @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nein @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,18 +7425,18 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Seite - + of src/app/components/document-detail/document-detail.component.html 7,8 - von + von - @@ -7254,17 +7470,17 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Erneut verarbeiten - + Print src/app/components/document-detail/document-detail.component.html 58 - Drucken + Drucken More like this @@ -7278,7 +7494,7 @@ Ähnliche Dokumente - + PDF Editor src/app/components/document-detail/document-detail.component.html @@ -7286,9 +7502,9 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 - PDF-Editor + PDF-Editor Send @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Fehler beim Abrufen der Metadaten @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Fehler beim Abrufen der Vorschläge. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Dokument „“ erfolgreich gespeichert. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Fehler beim Speichern des Dokuments „ @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Fehler beim Speichern des Dokuments @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Möchten Sie das Dokument „“ wirklich in den Papierkorb verschieben? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Dokumente können wiederhergestellt werden, bevor sie unwiderruflich gelöscht werden. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 In den Papierkorb verschieben @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Fehler beim Löschen des Dokuments @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Erneut verarbeiten bestätigen @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Dieser Vorgang wird die Archivdatei dieses Dokuments unwiderruflich neu erstellen. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Die Archivdatei wird mit den aktuellen Einstellungen neu generiert. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Die erneute Verarbeitung von „“ wird im Hintergrund gestartet. Schließen und öffnen Sie dieses Dokument nach Abschluss des Vorgangs erneut oder laden Sie es neu, um neue Inhalte anzuzeigen. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Fehler beim Ausführen der Aktion @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Fehler beim Herunterladen des Dokuments @@ -7826,51 +8042,51 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Seite einpassen - + PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 - PDF-Bearbeitung für "" wird im Hintergrund gestartet. + PDF-Bearbeitung für "" wird im Hintergrund gestartet. - + Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 - Fehler beim Ausführen der PDF-Bearbeitung + Fehler beim Ausführen der PDF-Bearbeitung - + Print failed. - - src/app/components/document-detail/document-detail.component.ts - 1452 - - Drucken fehlgeschlagen. - - - Error loading document for printing. src/app/components/document-detail/document-detail.component.ts 1460 - Fehler beim Laden des Dokuments für den Druck. + Drucken fehlgeschlagen. + + + Error loading document for printing. + + src/app/components/document-detail/document-detail.component.ts + 1472 + + Fehler beim Laden des Dokuments für den Druck. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Fehler beim Laden des TIFF: @@ -7882,19 +8098,11 @@ Keine Einträge gefunden. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Auswählen: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Bearbeiten: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Benutzerdefinierte Felder @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Benutzerdefinierte Felder filtern @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Werte setzen @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotieren @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Zusammenführen @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Einschließen: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archivierte Dateien @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Originaldateien @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Verwende formatierten Dateinamen @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Fehler bei der Massenbearbeitung @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' “ und „ @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' und „ @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Tag-Zuweisung bestätigen @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Dieser Vorgang wird ausgewählten Dokumenten das Tag „“ hinzufügen. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Dieser Vorgang wird die Tags zu ausgewählten Dokumenten hinzufügen. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Dieser Vorgang wird das Tag „“ von ausgewählten Dokumenten entfernen. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Dieser Vorgang wird die Tags von ausgewählten Dokumenten entfernen. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Dieser Vorgang wird ausgewählten Dokumenten die Tags hinzufügen und die Tags entfernen. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Korrespondent-Zuweisung bestätigen @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Dieser Vorgang wird ausgewählten Dokumenten den Korrespondenten „“ zuweisen. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Dieser Vorgang wird bei ausgewählten Dokumenten den Korrespondent entfernen. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Dokumenttyp-Zuweisung bestätigen @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Dieser Vorgang wird ausgewählten Dokumenten den Dokumenttyp „“ zuweisen. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Dieser Vorgang wird den Dokumenttyp von ausgewählten Dokumenten entfernen. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Zuordnung des Speicherpfads bestätigen @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Dieser Vorgang wird ausgewählten Dokumenten den Speicherpfad „“ zuweisen. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Dieser Vorgang wird den Speicherpfad von ausgewählten Dokumenten entfernen. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Benutzerdefinierte Feldzuweisung bestätigen @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Dieser Vorgang wird ausgewählten Dokumenten das benutzerdefinierte Feld „“ zuweisen. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Dieser Vorgang wird ausgewählten Dokumenten die benutzerdefinierten Felder zuweisen. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Dieser Vorgang wird das benutzerdefinierte Feld „“ von ausgewählten Dokumenten entfernen. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Dieser Vorgang wird die benutzerdefinierten Felder von ausgewählten Dokumenten entfernen. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Dieser Vorgang wird ausgewählten Dokumenten die benutzerdefinierten Felder zuweisen und die benutzerdefinierten Felder entfernen. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 ausgewählte Dokumente in den Papierkorb verschieben? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Dieser Vorgang wird die Archivdateien von ausgewählten Dokumenten unwiderruflich neu erstellen. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Die Archivdateien werden wird mit den aktuellen Einstellungen neu generiert. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotieren bestätigen @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Dieser Vorgang wird die Originalversion von Dokument(en) permanent rotieren. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Zusammenführen bestätigen @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Dieser Vorgang wird ausgewählte Dokumente zu einem neuen Dokument zusammenführen. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Das zusammengeführte Dokument wird zur Verarbeitung in die Warteschlange eingereiht. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Benutzerdefinierte Felder aktualisiert. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Fehler beim Aktualisieren der benutzerdefinierten Felder. @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Nach Tag filtern @@ -8357,7 +8565,7 @@ Notizen anzeigen - + Created: src/app/components/document-list/document-card-large/document-card-large.component.html @@ -8371,7 +8579,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 91,92 - Erstellt: + Erstellt: Added: @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Auswahl aufheben @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Seite auswählen @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Alles auswählen - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Auswählen: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Anzeigen + + src/app/data/matching-model.ts + 45 + + Keine Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sortieren @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Ansicht @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 “ speichern @@ -8561,7 +8781,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Speichern als... @@ -8569,7 +8789,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Alle gespeicherten Ansichten @@ -8577,7 +8797,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 { von 1 Dokument ausgewählt} other { von Dokumenten ausgewählt}} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Ein Dokument} other { Dokumente}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (gefiltert) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,7 +8833,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Fehler beim Laden der Dokumente @@ -8621,7 +8841,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Nach ASN sortieren @@ -8629,11 +8849,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8649,7 +8869,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Nach Korrespondent sortieren @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Nach Titel sortieren @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Nach Eigentümer sortieren @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Nach Notizen sortieren @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Nach Dokumenttyp sortieren @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Nach Speicherpfad sortieren @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Nach Ausstellungsdatum sortieren @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Nach „Hinzugefügt am“ sortieren @@ -8729,7 +8949,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Nach Seitenanzahl sortieren @@ -8737,7 +8957,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Freigegeben @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Nach sortieren @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Dokument bearbeiten @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Dokumentenvorschau @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Filter / Auswahl zurücksetzen @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Erstes [ausgewähltes] Dokument öffnen @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Vorherige Seite @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Nächste Seite @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Ansicht „“ erfolgreich gespeichert. @@ -8829,7 +9049,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Fehler beim Speichern der Ansicht „“. @@ -8837,7 +9057,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Ansicht „“ erfolgreich erstellt. @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titel & Inhalt @@ -8861,7 +9081,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Dateityp @@ -8869,7 +9089,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Ähnlich zu @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 entspricht @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 ist leer @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 ist nicht leer @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 größer als @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 kleiner als @@ -8917,7 +9137,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Korrespondent: @@ -8925,7 +9145,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Ohne Korrespondent @@ -8933,7 +9153,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Dokumenttyp: @@ -8941,7 +9161,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Ohne Dokumenttyp @@ -8949,7 +9169,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Speicherpfad: @@ -8957,7 +9177,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Ohne Speicherpfad @@ -8965,7 +9185,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8973,7 +9193,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Ohne Tag @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Benutzerdefinierte Feldabfrage @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Titel: @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Eigentümer: @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Eigentümer nicht in: @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Ohne Eigentümer @@ -9145,19 +9365,19 @@ Beginne Upload... - + Failed to read dropped items: src/app/components/file-drop/file-drop.component.ts 142 - Fehler beim Lesen der abgelegten Elemente: + Fehler beim Lesen der abgelegten Elemente: correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 Korrespondent @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 Korrespondenten @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Zuletzt benutzt @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Möchten Sie den Korrespondenten „“ wirklich löschen? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Dokumente filtern () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 Dokumenttyp @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 Dokumenttypen @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Möchten Sie den Dokumenttyp „“ wirklich löschen? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ Deaktiviert + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Verarbeitete Mail anzeigen + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Keine E-Mail-Regeln vorhanden. @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Fehler beim Abrufen der E-Mail-Konten @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Fehler beim Abrufen der E-Mail-Regeln @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2-Authentifizierung erfolgreich @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2-Authentifizierung fehlgeschlagen, siehe Protokolle für Details @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Benutzerkonto „“ gespeichert. @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Fehler beim Speichern des Kontos. @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Löschen des E-Mail-Kontos bestätigen @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Dieser Vorgang wird dieses E-Mail-Konto unwiderruflich löschen. @@ -9477,7 +9705,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 E-Mail-Konto „“ gelöscht @@ -9485,7 +9713,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Fehler beim Löschen des E-Mail-Kontos „“. @@ -9493,7 +9721,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 E-Mail-Konto „“ wird verarbeitet @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Fehler beim Verarbeiten des E-Mail-Kontos „ @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Regel „“ gespeichert. @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Fehler beim Speichern der Regel. @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Regel „“ aktiviert. @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Regel „“ deaktiviert. @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Fehler beim Umschalten der Regel „“. @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Löschen der E-Mail-Regel bestätigen @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Dieser Vorgang wird diese E-Mail-Regel unwiderruflich löschen. @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 E-Mail-Regel „“ gelöscht @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Fehler beim Löschen der E-Mail-Regel „“. @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Berechtigungen aktualisiert @@ -9589,14 +9817,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Fehler beim Aktualisieren der Berechtigungen + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Mails für verarbeitet + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Keine verarbeiteten E-Mail-Nachrichten gefunden. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Empfangen + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Verarbeitet + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Verarbeitete Mail(s) gelöscht + Filter by: @@ -9661,19 +9929,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Ein } other {Insgesamt }} @@ -9681,7 +9949,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9957,11 @@ Automatisch - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Keiner - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 erfolgreich erstellt. @@ -9713,7 +9969,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Fehler beim Erstellen von . @@ -9721,7 +9977,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 “ erfolgreich aktualisiert. @@ -9729,7 +9985,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Fehler beim Speichern von . @@ -9737,7 +9993,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Verknüpfte Dokumente werden nicht gelöscht. @@ -9745,7 +10001,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Fehler beim Löschen des Elements @@ -9753,7 +10009,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Berechtigungen wurden erfolgreich aktualisiert @@ -9761,7 +10017,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Dieser Vorgang wird alle Objekte unwiderruflich löschen. @@ -9769,7 +10025,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objekte erfolgreich gelöscht @@ -9777,7 +10033,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Fehler beim Löschen der Objekte @@ -9865,7 +10121,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 Speicherpfad @@ -9873,7 +10129,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 Speicherpfade @@ -9881,7 +10137,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Möchten Sie den Speicherpfad „“ wirklich löschen? @@ -9889,7 +10145,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 Tag @@ -9897,7 +10153,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 Tags @@ -10173,13 +10429,13 @@ Dokumentenverknüpfung - + Long Text src/app/data/custom-field.ts 55 - Long Text + Langer Text Search score @@ -10284,7 +10540,7 @@ src/app/data/matching-model.ts 46 - Keine: Deaktiviere automatische Zuweisung + Keiner: Automatische Zuweisung deaktivieren General Settings @@ -10446,13 +10702,13 @@ Barcode-Zeichenkette - + Retain Split Pages src/app/data/paperless-config.ts 207 - Geteilte Seiten behalten + Geteilte Seiten behalten Enable ASN diff --git a/src-ui/src/locale/messages.el_GR.xlf b/src-ui/src/locale/messages.el_GR.xlf index 87dfb79cd..374944b04 100644 --- a/src-ui/src/locale/messages.el_GR.xlf +++ b/src-ui/src/locale/messages.el_GR.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Κλείσιμο @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Προηγούμενο @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Επόμενο @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Προηγούμενος μήνας @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Επόμενος μήνας @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Κλείσιμο @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Επιλογή μήνα @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ώρες @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ΜΜ @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Επιλογή έτους @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Λεπτά @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Πρώτο @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Προσαύξηση ωρών @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Προηγούμενο @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Μείωση ωρών @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Επόμενο @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Προσαύξηση λεπτών @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Τελευταίο @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Μείωση λεπτών @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Δευτερόλεπτα @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Προσαύξηση δευτερολέπτων @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Μείωση δευτερολέπτων @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Έγγραφα @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Ρυθμίσεις @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Ενεργοποίηση @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Αρχεία Καταγραφής @@ -742,11 +742,35 @@ Ελέγξτε τα αρχεία καταγραφής για την εφαρμογή και για τον έλεγχο ηλεκτρονικού ταχυδρομείου. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Φόρτωση... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Τι είναι αυτό; @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Σύνθετη αναζήτηση @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Σφάλμα στην ανάκτηση χρηστών @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Σφάλμα κατά την ανάκτηση ομάδων @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Παρουσιάστηκε σφάλμα κατά την αποθήκευση των ρυθμίσεων. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Εργασίες Αρχείων @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Παράβλεψη @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Αποτέλεσμα @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Παράβλεψη επιλεγμένων @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Παράβλεψη όλων @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Επιβεβαίωση Παράβλεψης Όλων @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Παράβλεψη όλων εργασιών; + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 στην ουρά @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 ξεκίνησε @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 ολοκληρώθηκε @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 απέτυχε @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Κάδος απορριμμάτων @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Διαγραφή επιλεγμένου/ων @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Επιβεβαίωση διαγραφής @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Χρήστες & Ομάδες @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Ο κωδικός πρόσβασης έχει αλλάξει, θα αποσυνδεθείτε αμέσως. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Αποθηκεύτηκε ο χρήστης "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Σφάλμα αποθήκευσης χρήστη. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Επιβεβαίωση διαγραφής λογαριασμού χρήστη @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Αυτή η λειτουργία θα διαγράψει μόνιμα αυτόν τον λογαριασμό χρήστη. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Αποθηκεύτηκε η ομάδα "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Σφάλμα αποθήκευσης ομάδας. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Επιβεβαίωση διαγραφής ομάδας χρηστών @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Αυτή η λειτουργία θα διαγράψει μόνιμα αυτήν την ομάδα χρηστών. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Τεκμηρίωση @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Αποθηκευμένες προβολές @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Άνοιγμα εγγράφων @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Κλείσιμο όλων @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Διαχείριση @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Αλληλογραφία @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 είναι διαθέσιμο. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Κάνε κλικ για προβολή. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Το Paperless-ngx μπορεί να ελέγξει αυτόματα για ενημερώσεις @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Πώς λειτουργεί; @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Υπάρχει διαθέσιμη ενημέρωση @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Παρουσιάστηκε σφάλμα κατά την αποθήκευση των ρυθμίσεων ελέγχου ενημερώσεων. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Καθαρισμός @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Επιβεβαίωση @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Επιβεβαίωση @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Όλα @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - τώρα - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Προστέθηκε + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + τώρα + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Αλγόριθμος αντιστοίχισης @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Μοτίβο αντιστοίχισης @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Χωρίς διάκριση πεζών/κεφαλαίων @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Ανάθεση τύπου εγγράφου @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Ανάθεση ανταποκριτή @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Σφάλμα @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Διαδρομή @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Χρώμα + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Ετικέτα εισερχόμενων @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Οι ετικέτες εισερχόμενων αντιστοιχίζονται αυτόματα σε όλα τα καταναλωμένα έγγραφα. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Δημιουργία νέας ετικέτας @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Επεξεργασία ετικέτας @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-mail @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Δημιουργία νέου λογαριασμού χρήστη @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Επεξεργασία λογαριασμού χρήστη @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Η Κατανάλωση Ξεκίνησε @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Δεν έχει ανατεθεί @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Προτάσεις: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Προσθήκη αντικειμένου @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Προσθήκη ετικέτας @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Φιλτράρισμα εγγράφων με αυτές τις ετικέτες @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Φιλτράρισμα ανά ανταποκριτή @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Φιλτράρισμα ανά τύπο εγγράφου @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Φιλτράρισμα ανά διαδρομή αποθήκευσης @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ναι @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Όχι @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Σελίδα @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Σφάλμα ανάκτησης μεταδεδομένων @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Σφάλμα στην ανάκτηση προτάσεων. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Σφάλμα αποθήκευσης του εγγράφου @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Σφάλμα διαγραφής εγγράφου @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Σφάλμα εκτέλεσης λειτουργίας @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Επιλογή: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Επεξεργασία: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Συμπερίληψη: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Σφάλμα εκτέλεσης της μαζικής λειτουργίας @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" και "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' και "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Επιβεβαίωση ανάθεσης ετικετών @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Αυτή η λειτουργία θα προσθέσει την ετικέτα "" στο(α) επιλεγμένο(α) έγγραφο(α). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Αυτή η λειτουργία θα προσθέσει τις ετικέτες στα επιλεγμένα έγγραφα. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Αυτή η λειτουργία θα αφαιρέσει την ετικέτα "" από το(α) επιλεγμένο(α) έγγραφο(α). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Αυτή η λειτουργία θα αφαιρέσει τις ετικέτες από το επιλεγμένο(α) έγγραφο(α). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Αυτή η λειτουργία θα προσθέσει τις ετικέτες και θα αφαιρέσει τις ετικέτες στα επιλεγμένα έγγραφα. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Επιβεβαίωση ανάθεσης ανταποκριτή @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Αυτή η ενέργεια θα αναθέσει τον ανταποκριτή "" στο επιλεγμένο(α) έγγραφο(α). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Αυτή η λειτουργία θα αφαιρέσει τον ανταποκριτή από το επιλεγμένο(α) έγγραφο(α). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Επιβεβαιώστε την ανάθεση τύπου εγγράφου @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Αυτή η λειτουργία θα αναθέσει τον τύπο εγγράφου "" στο επιλεγμένο(α) έγγραφο(α). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Αυτή η λειτουργία θα αφαιρέσει τον τύπο εγγράφου από το επιλεγμένο(α) έγγραφο(α). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Επιβεβαίωση ανάθεσης διαδρομής αποθήκευσης @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Αυτή η λειτουργία θα αναθέσει τη διαδρομή αποθήκευσης "" στο επιλεγμένο(α) έγγραφο(α). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Αυτή η λειτουργία θα αφαιρέσει τη διαδρομή αποθήκευσης από το επιλεγμένο(α) έγγραφο(α). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Φιλτράρισμα κατά ετικέτα @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Επιλογή κανενός @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Επιλέξτε σελίδα @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Επιλογή όλων - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + Κανένα Sort src/app/components/document-list/document-list.component.html - 48 + 68 Ταξινόμηση @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Προβολές @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Αποθήκευση "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Αποθήκευση ως... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, one {}=1 {Επιλέχθηκε από ένα έγγραφο} other {Επιλέχθηκε από έγγραφα}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, one {}=1 {Ένα έγγραφο} other { έγγραφα}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (φιλτραρισμένα) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Σφάλμα κατά τη φόρτωση εγγράφων @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Ταξινόμηση κατά ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Ταξινόμηση κατά ανταποκριτή @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Ταξινόμηση κατά τίτλο @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Ταξινόμηση κατά ιδιοκτήτη @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Ταξινόμηση ανά σημείωση @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Ταξινόμηση κατά τύπο εγγράφου @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Ταξινόμηση κατά διαδρομή αποθήκευσης @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Ταξινόμηση κατά ημερομηνία δημιουργίας @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Ταξινόμηση κατά ημερομηνία προσθήκης @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Επεξεργασία εγγράφου @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Η προβολή "" αποθηκεύτηκε επιτυχώς. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Η προβολή "" δημιουργήθηκε επιτυχώς. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Τίτλος & περιεχόμενο @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Περισσότερα σαν @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 ίσον @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 είναι κενό @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 δεν είναι κενό @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 μεγαλύτερο από @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 μικρότερο από @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Χωρίς ανταποκριτή @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Χωρίς τύπο εγγράφου @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Χωρίς διαδρομή αποθήκευσης @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Χωρίς καμία ετικέτα @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Τίτλος: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Ιδιοκτήτης: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Ιδιοκτήτης όχι σε: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Χωρίς ιδιοκτήτη @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 ανταποκριτής @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 ανταποκριτές @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Τελευταία χρήση @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Θέλετε πραγματικά να διαγράψετε τον ανταποκριτή ""; @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 τύπος εγγράφου @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 τύποι εγγράφων @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Θέλετε πραγματικά να διαγράψετε τον τύπο εγγράφου ""; @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Δεν έχουν οριστεί κανόνες αλληλογραφίας. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Σφάλμα στην ανάκτηση λογαριασμών αλληλογραφίας @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Σφάλμα κατά την ανάκτηση κανόνων αλληλογραφίας @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Αποθηκεύτηκε ο λογαριασμός "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Σφάλμα αποθήκευσης λογαριασμού. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Επιβεβαίωση διαγραφής λογαριασμού αλληλογραφίας @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Αυτή η λειτουργία θα διαγράψει μόνιμα αυτόν τον λογαριασμό email. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Αποθηκεύτηκε κανόνας "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Σφάλμα αποθήκευσης κανόνα. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Επιβεβαίωση διαγραφής κανόνα αλληλογραφίας @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Αυτή η λειτουργία θα διαγράψει μόνιμα αυτόν τον κανόνα αλληλογραφίας. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Αυτόματο - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Κανένα - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Δημιουργήθηκε επιτυχώς . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Παρουσιάστηκε σφάλμα κατά τη δημιουργία του . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Παρουσιάστηκε σφάλμα κατά την αποθήκευση του . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Σφάλμα κατά τη διαγραφή του στοιχείου @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 διαδρομή αποθήκευσης @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 διαδρομές αποθήκευσης @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Θέλετε πραγματικά να διαγράψετε τη διαδρομή αποθήκευσης ""; @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 ετικέτα @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 ετικέτες diff --git a/src-ui/src/locale/messages.es_ES.xlf b/src-ui/src/locale/messages.es_ES.xlf index fcdc834a3..f64704898 100644 --- a/src-ui/src/locale/messages.es_ES.xlf +++ b/src-ui/src/locale/messages.es_ES.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Cerrar @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Anterior @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Siguiente @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mes anterior @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mes siguiente @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Cerrar @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seleccionar mes @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Horas @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seleccionar año @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutos @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Primero @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementar horas @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Anterior @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Disminuir horas @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Siguiente @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementar minutos @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Último @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Disminuir minutos @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Segundos @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementar segundos @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Disminuir segundos @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documentos @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Ajustes @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Activar @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Registros @@ -742,11 +742,35 @@ Revise los archivos de registro de la aplicación y de la comprobación de correo electrónico. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Mostrar + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Cargando... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + ¿Qué es esto? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Búsqueda avanzada @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error al obtener los usuarios @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error al obtener los grupos @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Se produjo un error al guardar los ajustes. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Tareas de archivo @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Descartar @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Resultado @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Descartar seleccionados @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Descartar todo @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirmar Descartar Todo @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Descartar todas las tareas? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 puesta/s en cola @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 iniciada/s @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completada/s @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 fallidas @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Papelera @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Eliminar selección @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirmar borrado @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Usuarios & Grupos @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 La contraseña ha sido cambiada, tu sesión será cerrada en un momento. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Usuario guardado "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Error al guardar el usuario. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirmar eliminación de cuenta de usuario @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Esta operación eliminará permanentemente esta cuenta de usuario. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Usuario eliminado "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error al eliminar el usuario "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Grupo guardado "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error al guardar el grupo. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirmar eliminación de grupo de usuarios @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Esta operación eliminará permanentemente este grupo de usuarios. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Grupo eliminado "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error al eliminar el grupo "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentación @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Vistas guardadas @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Abrir documentos @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Cerrar todos @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Organizar @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Correo @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administración @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuración @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 está disponible. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Haz clic para ver. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx puede comprobar automáticamente si hay actualizaciones @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 ¿Cómo funciona? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Actualización disponible @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Vistas de la barra lateral actualizadas @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error al actualizar las vistas de la barra lateral @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Se produjo un error al guardar la configuración de comprobación de actualizaciones. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Limpiar @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirmación @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Confirmar @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Verdadero @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Falso @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Buscar documentos... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Todos @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 No @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Añadir consulta @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Añadir expresión @@ -3758,18 +3830,6 @@ Fechas relativas - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - ahora - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Agregado + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + ahora + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 En 1 semana @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 En 1 mes @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 En 3 meses @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 En 1 año @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Este año @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Este mes @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Ayer + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritmo del patrón de búsqueda @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Patrón de busqueda @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Insensible a mayúsculas y minusculas @@ -3982,19 +4082,11 @@ Añadir opción - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Advertencia: las instancias existentes de este campo conservarán su índice de valor actual (por ejemplo, opción #1, #2, #3) después de editar las opciones aquí - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Moneda predeterminada @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Código de moneda de 3 caracteres @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Utilizar la configuración regional @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Asignar tipo de documento @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Asignar interlocutor @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Error @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Ruta @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Color + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Etiqueta de entrada @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Las etiquetas de la bandeja son asignadas automáticamente a todos los documentos consumidos. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Crear nueva etiqueta @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Editar etiqueta @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-mail @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Autenticación de dos factores @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Deshabilitar la autenticación de doble factor @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Crear nuevo usuario @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Editar cuenta de usuario @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp desactivado @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Falló la desactivación del Totp @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Tipo de activador @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Establezca el desplazamiento programado del disparador y el campo de fecha a utilizar. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Desplazamiento días @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relativo a @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Campo personalizado @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Campo personalizado a utilizar para la fecha. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurrente @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 El disparador es recurrente. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Días del intervalo recurrente @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repita el disparador cada n días. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Activador para documentos que coincidan con todos los filtros especificados a continuación. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtrar nombre del archivo @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Aplicar a documentos que coincidan con este nombre de archivo. Comodines como *.pdf o *factura* están permitidos. No distingue mayúsculas. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtrar fuentes @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtrar ruta - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Aplicar a documentos que coincidan con esta ruta. Comodines especificados como * están permitidos. No distingue mayúsculas.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filtrar regla de correo @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Aplicar a los documentos consumidos mediante esta regla de correo. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Algoritmo de coincidencia de contenido @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Patrón de coincidencia de contenido - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Tiene alguna de las etiquetas + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Tiene interlocutor + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Tiene tipo de documento + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Tipo de acción @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Asignar título @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Puede incluir algunos marcadores de posición, vea <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Asignar etiquetas @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Asignar ruta de almacenamiento @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Asignar campos personalizados @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Asignar dueño @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Asignar permisos de vista @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Asignar permisos de edición @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Eliminar etiquetas @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Eliminar todo @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Eliminar interlocutores @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Eliminar tipos de documentos @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Eliminar rutas de almacenamiento @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Eliminar campos personalizados @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Eliminar propietarios @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Eliminar permisos @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Ver permisos @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Editar permisos @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Asunto del correo electrónico @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Cuerpo del correo electrónico @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Destinatarios de correo @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Adjuntar un documento @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 URL del webhook @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Usar parámetros para el cuerpo del webhook @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Enviar payload del webhook como JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Parámetros del webhook @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Cuerpo del webhook @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Encabezados del Webhook @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Incluir documento @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consumir carpeta @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Carga de API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Buscar correo @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Interfaz de usuario web @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Campo Personalizado @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Inicio de Análisis @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Documento Añadido @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Documento Actualizado @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Programado @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Tarea @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Eliminar @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Tiene interlocutor + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Tiene tipo de documento + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Crear nuevo flujo de trabajo @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Editar flujo de trabajo + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Correos electrónico(s) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Asunto @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Mensaje @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Usar versión de archivo @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Enviar correo electrónico - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Enviar documento + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Correo electrónico enviado + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Sin asignar @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Abrir filtro @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Sugerencias: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Añadir elemento @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Añadir etiqueta @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remover etiqueta @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtrar documentos con estas etiquetas @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Leer más @@ -6066,7 +6278,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 41 - Delete page + Eliminar página Add / remove document split here @@ -6082,7 +6294,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 70 - Split here + Dividir aquí Create new document(s) @@ -6106,7 +6318,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 94 - Copy metadata + Copiar metadatos Delete original @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Escanee el código QR con su aplicación de autenticación e ingrese el código de abajo @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Secreto de autenticación @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Puedes guardar este secreto y usarlo para reinstalar tu aplicación de autenticación más adelante. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Código @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Los códigos de recuperación no se mostrarán de nuevo, asegúrese de guardarlos. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copiar códigos @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Las direcciones de correo deben coincidir @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Las contraseñas deben coincidir @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Perfil actualizado correctamente @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error al guardar el perfil @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generando token de autenticación @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error al desconectar la cuenta de red social @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error obteniendo ajustes TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activado correctamente @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activando TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP desactivado correctamente @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error desactivando TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrar por interlocutor @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtrar por tipo de documento @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtrar por ruta de almacenamiento @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Si @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 No @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Página @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocesar @@ -7286,9 +7502,9 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 - PDF Editor + Editor de PDF Send @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error al recuperar los metadatos @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error al recuperar las sugerencias. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Documento "" guardado correctamente. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error al guardar el documento "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error al guardar el documento @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 ¿Estás seguro de querer borrar el documento ""? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Los documentos pueden ser restaurados antes de la eliminación permanente. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Mover a la papelera @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error al eliminar documento @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Confirmar reprocesado @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Esta operación recreará permanentemente el archivo de archivo para este documento. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 El archivo se regenerará con la configuración actual. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 La operación de reprocesamiento para "" comenzará en segundo plano. Cerrar y volver a abrir o volver a cargar este documento una vez finalizada la operación para ver el nuevo contenido. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error al ejecutar la operación @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error al descargar el documento @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Ajuste de página @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,15 +8058,15 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 - Error executing PDF edit operation + Error al ejecutar la operación de edición PDF Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Se ha producido un error al cargar el tif: @@ -7882,19 +8098,11 @@ No se han encontrado entradas. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Seleccionar: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Editar: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Campos personalizados @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filtrar campos personalizados @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Establecer valores @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotar @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Combinar @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Incluir: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archivos archivados @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Archivos originales @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Usar nombre de archivo formateado @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error al ejecutar operación en masa @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" y "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' y "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirmar etiquetas asignadas @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Esta operación agregará la etiqueta "" a documento(s) seleccionado(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Esta operación agregará las etiquetas a documento(s) seleccionado(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Esta operacion eliminará la etiqueta "" de documento(s) seleccionado(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Esta operacion eliminará las etiquetas de documento(s) seleccionado(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Esta operacion agregará las etiquetas y eliminará las etiquetas en documento(s) seleccionado(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirmar asignación interlocutor @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Esta operación asignará el interlocutor "" a documento(s) seleccionado(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Esta operación eliminará el interlocutor de documento(s) seleccionado(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirmar asignación de tipo de documento @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Esta operacion asignará el tipo de documento "" a documento(s) seleccionado(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Esta operación eliminará el tipo de documento de documento(s) seleccionado(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirmar asignación de ruta de almacenamiento @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Esta operación asignará la ruta de almacenamiento "" a documento(s) seleccionados. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Esta operación eliminará la ruta de almacenamiento de documento(s) seleccionados. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirmar asignación de campo personalizado @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Esta operación asignará el campo personalizado "" a documento(s) seleccionados. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Esta operación asignará los campos personalizados a documento(s) seleccionados. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Esta operación eliminará el campo personalizado "" de documento(s) seleccionados. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Esta operación eliminará los campos personalizados de documento(s) seleccionados. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Esta operación asignará los campos personalizados y eliminará los campos personalizados en documento(s) seleccionados. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 ¿Mover el(los) documento(s) a la papelera? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Esta operación borrará permanentemente documento(s) seleccionado(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 El archivo se regenerará con la configuración actual. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Confirmar rotación @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Esta operación girará permanentemente la versión original de documento(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Confirmar combinación @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Esta operación dividirá los documento(s) seleccionados en nuevos documentos. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 El documento combinado se pondrá en cola para su procesamiento. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Campos personalizados actualizados. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error al actualizar campos personalizados. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrar por etiqueta @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Seleccionar ninguno @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Seleccionar página @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Seleccionar todo - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Mostrar + + src/app/data/matching-model.ts + 45 + + Ninguno Sort src/app/components/document-list/document-list.component.html - 48 + 68 Ordenar @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Vistas @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Guardar "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Guardar como... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Todas las vistas guardadas @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Seleccionado de un documento} other {Seleccionados de documentos}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Un documento} other { documentos}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrado) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Error al cargar los documentos @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Ordenar por ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Filtrar por interlocutor @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Ordenar por título @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Ordenar por propietario @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Ordenar por notas @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Ordenar por tipo de documento @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Ordenar por ruta de almacenamiento @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Ordenar por fecha de creación @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Ordenar por fecha de creación @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Ordenar por número de páginas @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Compartido @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Ordenar por @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Editar documento @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Previsualizar documento @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Restablecer filtros / selección @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Abrir primero documento [seleccionado] @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Página anterior @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Página siguiente @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Ver "" guardado satisfactoriamente. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 No se pudo guardar la vista "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Ver "" creado satisfactoriamente. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titulo y contenido @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Tipo archivo @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Más parecido @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 es igual a @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 está vacío @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 no está vacío @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 es mayor que @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 es menor que @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Sin interlocutor @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Sin tipo de documento @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Sin ruta de almacenamiento @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Sin ninguna etiqueta @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Consulta de campos personalizados @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Título: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 NSA: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Propietario: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Propietario no en: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Sin un propietario @@ -9152,13 +9372,13 @@ src/app/components/file-drop/file-drop.component.ts 142 - Failed to read dropped items: + Error al leer elementos soltados: correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 interlocutor @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 interlocutores @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Usado por última vez @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 ¿Estás seguro de querer borrar el interlocutor ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filtrar documentos () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 tipo de documento @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 tipos de documento @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 ¿Estás seguro de querer borrar el tipo de documento ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Desactivado + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No hay reglas de correo definidas. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error al recuperar cuentas de correo @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error al recuperar las reglas de correo @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Autenticación OAuth2 correcta @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 La autenticación de OAuth2 falló, vea los registros para más detalles @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Cuenta guardada "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error al guardar la cuenta. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirmar eliminación de cuenta de correo @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Esta operación eliminará permanentemente esta cuenta de correo. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Regla de correo eliminada "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error al eliminar la cuenta de correo electrónico "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Procesando cuenta de correo electrónico "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error procesando la cuenta de correo electrónico "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Regla guardada "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error al guardar la regla. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Regla "" habilitada. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Regla "" deshabilitada. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error al cambiar la regla "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirmar eliminación de regla de correo @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Esta operación eliminará permanentemente esta regla de correo. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Regla de correo eliminada "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error al eliminar la regla de correo electrónico "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permisos actualizados @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error al actualizar permisos + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {}=1 {Uno } other { en total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automático - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Ninguno - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Creado correctamente . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Ha ocurrido un error al crear . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Actualizado correctamente "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Ha ocurrido un error al guardar . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Los documentos asociados no se eliminarán. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error al eliminar el elemento @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permisos correctamente actualizados @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Esta operación eliminará todos los objetos permanentemente. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objetos eliminados con éxito @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error al eliminar objetos @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 ruta de almacenamiento @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 rutas de almacenamiento @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 ¿Realmente desea eliminar la ruta de almacenamiento ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 etiqueta @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 etiquetas @@ -10461,7 +10717,7 @@ src/app/data/paperless-config.ts 214 - Enable ASN + Habilitar ASN ASN Prefix @@ -10469,7 +10725,7 @@ src/app/data/paperless-config.ts 221 - ASN Prefix + Prefijo ASN Upscale diff --git a/src-ui/src/locale/messages.et_EE.xlf b/src-ui/src/locale/messages.et_EE.xlf index 05386e73b..f308118cf 100644 --- a/src-ui/src/locale/messages.et_EE.xlf +++ b/src-ui/src/locale/messages.et_EE.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Close @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Previous @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Next @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Previous month @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Next month @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Close @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Select month @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Hours @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Select year @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutes @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 First @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Increment hours @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Previous @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrement hours @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Next @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Increment minutes @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Last @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrement minutes @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seconds @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Increment seconds @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrement seconds @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documents @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Settings @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Enable @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logs @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Loading... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + What's this? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Advanced search @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 An error occurred while saving settings. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 File Tasks @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dismiss @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dismiss selected @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Dismiss all @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirm Dismiss All @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 queued @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 started @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completed @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 failed @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Delete selected @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirm delete @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Users & Groups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Password has been changed, you will be logged out momentarily. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Saved user "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Error saving user. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirm delete user account @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 This operation will permanently delete this user account. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error saving group. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirm delete user group @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 This operation will permanently delete this user group. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentation @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Saved views @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Open documents @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Close all @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Manage @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 is available. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Click to view. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx can automatically check for updates @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 How does this work? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Update available @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 An error occurred while saving update checking settings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Clear @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirmation @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Confirm @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 All @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - now - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Added + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + now + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Matching algorithm @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Matching pattern @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Case insensitive @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assign document type @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assign correspondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Error @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Path @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Color + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inbox tag @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inbox tags are automatically assigned to all consumed documents. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Create new tag @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Edit tag @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Create new user account @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Edit user account @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Not assigned @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Suggestions: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Add item @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Add tag @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documents with these Tags @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filter by correspondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filter by document type @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter by storage path @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Yes @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 No @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Page @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Select: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Edit: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Include: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" and "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' and "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirm tags assignment @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 This operation will add the tag "" to selected document(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 This operation will add the tags to selected document(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 This operation will remove the tag "" from selected document(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 This operation will remove the tags from selected document(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 This operation will add the tags and remove the tags on selected document(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirm correspondent assignment @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 This operation will assign the correspondent "" to selected document(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 This operation will remove the correspondent from selected document(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirm document type assignment @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 This operation will assign the document type "" to selected document(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 This operation will remove the document type from selected document(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filter by tag @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Select none @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Select page @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Select all - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + None Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sort @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Views @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Save "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Save as... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {One document} other { documents}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtered) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Error while loading documents @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sort by ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sort by title @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sort by owner @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by document type @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by storage path @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sort by created date @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sort by added date @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Edit document @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 View "" saved successfully. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 View "" created successfully. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Title & content @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 More like @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 equals @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 is empty @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 is not empty @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 greater than @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 less than @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Without correspondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Without document type @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Without any tag @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Title: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 correspondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 correspondents @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Last used @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Do you really want to delete the correspondent ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 document type @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 document types @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Do you really want to delete the document type ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatic - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - None - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 storage path @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 storage paths @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tag @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 tags diff --git a/src-ui/src/locale/messages.fa_IR.xlf b/src-ui/src/locale/messages.fa_IR.xlf index 9dfefe0d8..f60ffb4a0 100644 --- a/src-ui/src/locale/messages.fa_IR.xlf +++ b/src-ui/src/locale/messages.fa_IR.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 نزدیک @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 قبلی @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 طرف دیگر @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 ماه قبل @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 ماه بعد @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 نزدیک @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ماه را انتخاب کنید @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ساعت @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 " @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 مگنی @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 سال را انتخاب کنید @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 دقایقی @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 اولی @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ساعات افزایشی @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 قبلی @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ساعات کاهش @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 طرف دیگر @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 چند دقیقه افزایشی @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 آخرین @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 دقیقه کاهش @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ثانیه @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ثانیه های افزایشی @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ثانیه کاهش @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 اسناد @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 تنظیمات @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 فعال کردن @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 سیاهه ها @@ -742,11 +742,35 @@ پرونده های ورود به سیستم را برای برنامه و برای بررسی ایمیل مرور کنید. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + نشان دادن + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ بارگیری ... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + این چیه؟ @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 جستجوی پیشرفته @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 خطا در بازیابی کاربران @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 گروه های بازیابی خطا @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 هنگام صرفه جویی در تنظیمات ، خطایی روی داد. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 وظایف پرونده @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 برکناری @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 نتیجه @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 انتخاب شده انتخاب شده @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 همه را برکنار کنید @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 تأیید همه را تأیید کنید @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 صف @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 آغاز @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 کامل @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 ناموفق @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 زباله @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + حذف انتخاب شده @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 حذف را تأیید کنید @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Users & Groups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 رمز عبور تغییر کرده است ، شما لحظه به لحظه از سیستم خارج می شوید. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Saved user "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 خطا در ذخیره کاربر. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 تأیید حساب کاربری را تأیید کنید @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 این عملیات به طور دائم این حساب کاربری را حذف می کند. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 گروه صرفه جویی در خطا. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 تأیید گروه کاربر را تأیید کنید @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 این عمل به طور دائم این گروه کاربر را حذف می کند. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 مستند سازی @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 نماهای ذخیره شده @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 اسناد باز @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 همه را ببندید @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 مدیریت کردن @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 پست @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 تجویز @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 پیکربندی @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 لوب @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 موجود است @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 برای مشاهده کلیک کنید @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-NGX به طور خودکار می تواند به روزرسانی ها را بررسی کند @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 این چگونه کار می کند؟ @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 به روز رسانی موجود است @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 نمای نوار کناری به روز شده است @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 خطا به روزرسانی نماهای نوار کناری @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 هنگام ذخیره تنظیمات بررسی به روزرسانی ، خطایی روی داد. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + پاک کردن @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 تأیید @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 تأیید کردن @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 درست @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 دروغ @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 اسناد جستجو ... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 همه @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 نه @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 اضافه کردن پرس و جو @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 بیان را اضافه کنید @@ -3758,18 +3830,6 @@ خرمای نسبی - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - در حال حاضر - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ اضافه شده + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + در حال حاضر + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 ظرف 1 هفته @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 طی 1 ماه @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 ظرف 3 ماه @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 ظرف 1 سال @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 امسال @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 این ماه @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ دیروز + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 الگوریتم تطبیق @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 الگوی تطبیق @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 غیر حساس @@ -3982,19 +4082,11 @@ گزینه اضافه کردن - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - هشدار: نمونه های موجود در این زمینه پس از ویرایش گزینه ها در اینجا ، شاخص ارزش فعلی خود (به عنوان مثال گزینه شماره 1 ، شماره 2 ، شماره 3) را حفظ می کند - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 ارز پیش فرض @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 کد ارز 3 کاراکتر @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 از محل استفاده کنید @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 نوع سند را اختصاص دهید @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 خبرنگار را اختصاص دهید @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + خطا @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 مسیر @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 رنگ + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 برچسب ورودی @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 برچسب های صندوق ورودی به طور خودکار به کلیه اسناد مصرفی اختصاص می یابد. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 برچسب جدید ایجاد کنید @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 برچسب ویرایش @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + ایمیل @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 احراز هویت دو عاملی @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 تأیید اعتبار دو عاملی را غیرفعال کنید @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 حساب کاربری جدید ایجاد کنید @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 ویرایش حساب کاربری @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 TOTP غیرفعال @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 غیرفعال کردن TOTP انجام نشد @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 نوع ماشه @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 تنظیم برنامه ریزی شده را جبران کنید و از کدام قسمت تاریخ استفاده کنید. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 روزهای جبران @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 نسبت به @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 قسمت سفارشی @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 قسمت سفارشی برای استفاده برای تاریخ. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 عود @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 ماشه در حال تکرار است. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 روزهای مکرر @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 ماشه را هر n روز تکرار کنید. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 نام پرونده فیلتر @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 به اسنادی که مطابق با این نام پرونده هستند ، مراجعه کنید. کارتهای وحشی مانند *.pdf یا *فاکتور *مجاز است. مورد غیر حساس @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 منابع فیلتر @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 مسیر فیلتر - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 قانون نامه نامه فیلتر @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 به اسناد مصرفی از طریق این قانون نامه استفاده کنید. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 الگوریتم تطبیق محتوا @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 الگوی تطبیق محتوا - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - هیچ یک از برچسب ها دارد + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - خبرنگار + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - نوع سند دارد + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 نوع عمل @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 عنوان اختصاص دادن @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 اختصاص برچسب ها @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 مسیر ذخیره سازی را اختصاص دهید @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 اختصاص زمینه های سفارشی @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 مالک @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 مجوزهای مشاهده را اختصاص دهید @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 مجوزهای ویرایش را اختصاص دهید @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 حذف برچسب ها @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 حذف همه @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 خبرنگاران را حذف کنید @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 حذف انواع سند @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 مسیرهای ذخیره سازی را حذف کنید @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 زمینه های سفارشی را حذف کنید @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 صاحبان را حذف کنید @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 مجوزها را حذف کنید @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 مشاهده مجوزها @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 مجوزها را ویرایش کنید @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 موضوع ایمیل @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 بدنه ایمیل @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 دریافت کنندگان ایمیل @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 سند پیوست @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 URL Webhook @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 از پارامترهایی برای بدنه Webhook استفاده کنید @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 ارسال Webhook Payload به عنوان JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 پارامترهای وب @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 بدنه وب @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 هدرهای Webhook @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 شامل سند @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 پوشه مصرف کنید @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 بارگذاری API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 نامه واکشی @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 UI وب @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 قسمت سفارشی @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 مصرف آغاز شد @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 سند اضافه شده است @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 سند به روز شده @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 برنامه ریزی شده @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 تخصیص @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 حذف @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 شبکه وب + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + خبرنگار + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + نوع سند دارد + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 گردش کار جدید ایجاد کنید @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 گردش کار را ویرایش کنید + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 آدرس ایمیل (ES) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 موضوع @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 پیام @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 از نسخه بایگانی استفاده کنید @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 ارسال ایمیل - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - سند ایمیل + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 ایمیل ارسال شده + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned اختصاص داده نشده است @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 پیشنهادات: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths مورد را اضافه کنید @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 اضافه کردن @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 حذف برچسب @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 اسناد را با این برچسب ها فیلتر کنید @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + بیشتر بخوانید @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 کد QR را با برنامه تأیید کننده خود اسکن کرده و سپس کد زیر را وارد کنید @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 راز تأیید کننده @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 می توانید این راز را ذخیره کرده و از آن برای نصب مجدد برنامه تأیید کننده خود در زمان بعدی استفاده کنید. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 رمز @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 کدهای بازیابی دوباره نشان داده نمی شوند ، حتماً آنها را ذخیره کنید. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 کپی کدها @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 ایمیل باید مطابقت داشته باشد @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 رمزهای عبور باید مطابقت داشته باشند @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 پروفایل با موفقیت به روز شد @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 نمایه ذخیره خطا @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 خطای ایجاد کننده AUTH @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 قطع خطا حساب اجتماعی @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 خطا در تنظیمات TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP با موفقیت فعال شد @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 خطا در فعال کردن TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP با موفقیت غیرفعال شد @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 خطای غیرفعال کردن TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 فیلتر توسط خبرنگار @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 فیلتر بر اساس نوع سند @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 فیلتر با مسیر ذخیره سازی @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 بله @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 هیچ @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget با @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 صفحه @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 نزاع @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 خطا در بازیابی ابرداده @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 خطای بازیابی پیشنهادات. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 سند ذخیره خطا @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 اسناد را می توان قبل از حذف دائمی بازیابی کرد. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 حرکت به سطل زباله @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 خطای حذف سند @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 پردازش مجدد تأیید @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 این عملیات دائمی پرونده بایگانی را برای این سند بازآفرینی می کند. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 پرونده بایگانی با تنظیمات فعلی دوباره تولید می شود. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 عملیات اجرای خطا @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 سند بارگیری خطا @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 صفحه مناسب @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ هیچ مدخلی یافت نشد. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - انتخاب کنید: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 ویرایش: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 زمینه های سفارشی @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 فیلدهای سفارشی را فیلتر کنید @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 مقادیر تنظیم @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 چرخیدن @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 ادغام کردن @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 شامل: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 پرونده های بایگانی شده @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 پرونده های اصلی @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 از نام پرونده فرمت شده استفاده کنید @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 خطا در اجرای عمل فله @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" and "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' and "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 تکالیف برچسب را تأیید کنید @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 This operation will add the tag "" to selected document(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 This operation will add the tags to selected document(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 This operation will remove the tag "" from selected document(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 This operation will remove the tags from selected document(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 This operation will add the tags and remove the tags on selected document(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 تکالیف خبرنگار را تأیید کنید @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 This operation will assign the correspondent "" to selected document(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 This operation will remove the correspondent from selected document(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 تأیید تکلیف نوع سند @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 This operation will assign the document type "" to selected document(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 This operation will remove the document type from selected document(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 انتساب مسیر ذخیره سازی را تأیید کنید @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 تکلیف زمینه سفارشی را تأیید کنید @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 پرونده های بایگانی با تنظیمات فعلی دوباره تولید می شوند. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 چرخش را تأیید کنید @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 ادغام را تأیید کنید @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 سند ادغام شده برای مصرف صف می شود. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 زمینه های سفارشی به روز شده است. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 خطا در به روزرسانی فیلدهای سفارشی. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 فیلتر توسط برچسب @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 هیچ یک را انتخاب کنید @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 صفحه را انتخاب کنید @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 همه را انتخاب کنید - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - نشان دادن + + src/app/data/matching-model.ts + 45 + + هیچ کدام Sort src/app/components/document-list/document-list.component.html - 48 + 68 مرتب @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 نمایش @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Save "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 ذخیره به عنوان ... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 همه نماهای ذخیره شده @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {One document} other { documents}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (فیلتر شده) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 خطا هنگام بارگیری اسناد @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 مرتب سازی بر اساس ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 مرتب سازی بر اساس خبرنگار @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 مرتب سازی بر اساس عنوان @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 مرتب سازی بر اساس مالک @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 مرتب سازی بر اساس یادداشت ها @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 مرتب سازی بر اساس نوع سند @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 مرتب سازی بر اساس مسیر ذخیره سازی @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 مرتب سازی بر اساس تاریخ ایجاد شده @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 مرتب سازی بر تاریخ اضافه شده @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 مرتب سازی بر اساس تعداد صفحات @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 مشترک @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 سند ویرایش @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 سند پیش نمایش @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 تنظیم مجدد فیلترها / انتخاب @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 اولین سند [انتخاب شده] را باز کنید @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 صفحه قبلی @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 صفحه بعدی @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 View "" saved successfully. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 View "" created successfully. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Title & content @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 نوع پرونده @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 بیشتر شبیه @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 برابر است @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 خالی است @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 خالی نیست @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 بزرگتر از @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 کمتر از @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 بدون خبرنگار @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 بدون نوع سند @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 بدون مسیر ذخیره سازی @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 بدون هیچ برچسب @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 پرس و جو زمینه های سفارشی @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Title: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 بدون مالک @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 خبرنگار @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 خبرنگاران @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 آخرین مورد استفاده @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Do you really want to delete the correspondent ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 نوع سند @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 انواع اسناد @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Do you really want to delete the document type ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ معلول + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 هیچ قانون نامه ای تعریف نشده است. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 خطا در بازیابی حساب های نامه @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 خطای بازیابی قوانین نامه پستی @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 موفقیت احراز هویت OAUTH2 @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 احراز هویت OAuth2 انجام نشد ، برای جزئیات بیشتر به سیاهههای مربوطه مراجعه کنید @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 حساب ذخیره خطا. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 تأیید حساب نامه را تأیید کنید @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 این عملیات به طور دائم این حساب نامه را حذف می کند. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 قانون صرفه جویی در خطا. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 تأیید قانون پستی را تأیید کنید @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 این عمل به طور دائم این قانون نامه را حذف می کند. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 مجوزها به روز شده @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 خطای به روزرسانی مجوزها + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ خودکار - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - هیچ کدام - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 اسناد مرتبط حذف نمی شوند. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 خطا هنگام حذف عنصر @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 مجوزها با موفقیت به روز شد @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 این عمل به طور دائم تمام اشیاء را حذف می کند. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 اشیاء با موفقیت حذف شدند @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 خطای حذف اشیاء @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 مسیر ذخیره سازی @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 مسیرهای ذخیره سازی @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 نشان @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 برچسب ها diff --git a/src-ui/src/locale/messages.fi_FI.xlf b/src-ui/src/locale/messages.fi_FI.xlf index 747ab7fcf..90e871c6e 100644 --- a/src-ui/src/locale/messages.fi_FI.xlf +++ b/src-ui/src/locale/messages.fi_FI.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Sulje @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Edellinen @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Seuraava @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Edellinen kuukausi @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Seuraava kuukausi @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sulje @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Valitse kuukausi @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Tuntia @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Valitse vuosi @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuuttia @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ensimmäinen @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Lisää tunteja @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Edellinen @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pienennä tunteja @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seuraava @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Lisää minuutteja @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Viimeinen @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pienennä minuutteja @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekuntia @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Lisäys sekunteina @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vähennys sekunteina @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Asiakirjat @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Asetukset @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Käytä @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Lokit @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Näytä + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Ladataan... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Mikä tämä on? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Laajennettu haku @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Virhe käyttäjiä noutaessa @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Virhe ryhmiä noutaessa @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Virhe tallennettaessa asetuksia. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Tiedostotehtävät @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Hylkää @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Poista valitut @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Poista kaikki @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Vahvista "poista kaikki" @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 jonossa @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 aloitettu @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 valmistui @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 epäonnistui @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Poista valitut @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Vahvista poisto @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Käyttäjät & ryhmät @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Salasana on vaihdettu, sinut kirjataan ulos hetken kuluttua. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Tallennettu käyttäjä "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Virhe tallentaessa käyttäjää. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Vahvista käyttäjätilin poistaminen @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Tämä toiminto poistaa pysyvästi tämän käyttäjätilin. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,15 +2866,15 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 - Deleted user "" + Poistettu käyttäjä "" Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Virhe poistaessa käyttäjää "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Tallennettu ryhmä "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Virhe tallentaessa ryhmää. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Vahvista käyttäjäryhmän poistaminen @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Tämä toiminto poistaa pysyvästi tämän käyttäjäryhmän. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Poistettu ryhmä "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Virhe poistaessa ryhmää "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentaatio @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Tallennetut näkymät @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Avaa asiakirjat @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Sulje kaikki @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Hallitse @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Sähköposti @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Ylläpito @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 on saatavilla. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Näytä klikkaamalla. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx voi tarkistaa päivitykset automaattisesti @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Kuinka tämä toimii? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Päivitys saatavilla @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Virhe tallennettaessa päivitystarkistuksen asetuksia @@ -3180,7 +3248,7 @@ src/app/components/app-frame/global-search/global-search.component.html 26 - Search + Hae Open @@ -3208,7 +3276,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 143 - Open + Avaa Filter documents @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Tyhjennä @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Vahvistus @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Vahvista @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,43 +3714,43 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 - True + Tosi False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 - False + Epätosi Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Kaikki @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - nyt - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Lisätty + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + nyt + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Eilen + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Tunnistusalgoritmi @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Hakumalli @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Kirjainkoko ei vaikuta @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-merkkinen valuuttakoodi @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Määritä asiakirjatyyppi @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Määritä yhteyshenkilö @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Virhe @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Polku @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Väri + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Saapuneiden tagi @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Saapuneet-tagi annetaan automaattisesti kaikille löydetyille asiakirjoille. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Luo uusi tägi @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Muokkaa tagia @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Sähköposti @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Luo uusi käyttäjätili @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Muokkaa käyttäjätiliä @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Mukautettu kenttä @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Suodata tiedostonimi @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Suodata lähteet @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Suodata polku - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Suodata sähköpostisääntö @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Määritä omistaja @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Määritä katseluoikeudet @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Määritä muokkausoikeudet @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Poista tunnisteet @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Poista kaikki @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Poista mukautetut kentät @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Poista omistajat @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Poista oikeudet @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Näytä oikeudet @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Muokkaa oikeuksia @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API-lähetys @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Mukautettu kenttä @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Asiakirja lisätty @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Asiakirja päivitetty @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Luo uusi työnkulku @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Muokkaa työnkulkua + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Sähköpostiosoitteet @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Aihe @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Viesti @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Lähetä sähköposti - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Lähetä asiakirja sähköpostitse + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Sähköposti lähetetty + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Ei määritetty @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Ehdotukset: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Lisää kohde @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Lisää tunniste @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Poista tunniste @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documents with these Tags @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Lisätietoja @@ -6010,7 +6222,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 9 - Select all pages + Valitse kaikki sivut Deselect all pages @@ -6026,7 +6238,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 17 - Rotate selected pages counter-clockwise + Kierrä valittuja sivuja vastapäivään Rotate selected pages clockwise @@ -6034,7 +6246,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 20 - Rotate selected pages clockwise + Kierrä valittuja sivuja myötäpäivään Delete selected pages @@ -6042,7 +6254,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 23 - Delete selected pages + Poista valitut sivut Rotate page counter-clockwise @@ -6050,7 +6262,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 33 - Rotate page counter-clockwise + Kierrä sivua vastapäivään Rotate page clockwise @@ -6058,7 +6270,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 36 - Rotate page clockwise + Kierrä sivua myötäpäivään Delete page @@ -6066,7 +6278,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 41 - Delete page + Poista sivu Add / remove document split here @@ -6106,7 +6318,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 94 - Copy metadata + Kopioi metatiedot Delete original @@ -6114,7 +6326,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 98 - Delete original + Poista alkuperäinen Merge with existing permissions @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Koodi @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Palautuskoodeja ei näytetä uudelleen; varmista, että tallennat ne. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Kopioi koodit @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Sähköpostien on vastattava toisiaan @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Salasanojen pitää täsmätä @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profiili päivitetty onnistuneesti @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Virhe profiilia tallentaessa @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Virhe yhteyttä sosiaaliseen tiliin katkaistaessa @@ -6500,35 +6712,35 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 - Error fetching TOTP settings + Virhe haettaessa TOTP-asetuksia TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 - TOTP activated successfully + TOTP aktivoitu onnistuneesti Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 - Error activating TOTP + Virhe aktivoitaessa TOTP:tä TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,13 +6748,13 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 - Error deactivating TOTP + Virhe poistettaessa käytöstä TOTP:tä No existing links @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + OK Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Suodata yhteyshenkilön mukaan @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Suodata asiakirjatyypin mukaan @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Suodata tallennuspolun mukaan @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Kyllä @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ei @@ -7098,7 +7314,7 @@ src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 6 - Upload documents + Lähetä asiakirjoja or drop files anywhere @@ -7106,7 +7322,7 @@ src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 7 - or drop files anywhere + tai pudota tiedostoja mihin tahansa Dismiss completed @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Sivu @@ -7220,7 +7436,7 @@ src/app/components/document-detail/document-detail.component.html 7,8 - of + / - @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Käsittele uudelleen @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Tulosta More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Virhe haettaessa metatietoja @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Virhe ehdotuksia noutaessa. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Asiakirja "" tallennettu onnistuneesti. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Virhe tallentaessa asiakirjaa "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Virhe tallennettaessa asiakirjaa @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Haluatko varmasti siirtää asiakirjan "" roskakoriin? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Siirrä roskakoriin @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Virhe asiakirjaa poistaessa @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Uudelleenkäsittelyn vahvistus @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Virhe toimintoa suoritettaessa @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Sivun sovitus @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,15 +8066,15 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Tulostus epäonnistui. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Valitse: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Muokkaa: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Mukautetut kentät @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Suodata mukautetut kentät @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Aseta arvot @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Kierrä @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Yhdistä @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Sisällytä: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Arkistoidut tiedostot @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Alkuperäiset tiedostot @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Käytä muotoiltua tiedostonimeä @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Virhe massatoiminnon suorittamisessa @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" ja "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' ja "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Varmista tagien asetus @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Tämä toiminto lisää tagin "" valittuun tai valittuihin asiakirjoihin. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Tämä toiminto lisää tunnisteet valittuun tai valittuihin asiakirjoihin. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Tämä toiminto poistaa tagin "" valitusta dokumentista. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Tämä toiminto tulee poistamaan tagit valitusta dokumentista. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Tämä toiminto lisää tagit ja poistaa tagit :sta valiltusta dokumentista. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Vahvista yhteyshenkilön asetus @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Tämä toiminto lisää yhteyshenkilön "" valittuun tai valittuihin asiakirjoihin. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Tämä toiminto poistaa yhteyshenkilön "":sta valitusta asiakirjasta. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Vahvista asiakirjan tyypin määritys @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Tämä toiminto lisää asiakirjatyypin"" :een valittuun asiakirjaan. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Tämä toiminto poistaa asiakirjatyypin"":sta valitusta asiakirjasta. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Vahvista tallennuspolun asetus @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Tämä toiminto asettaa tallennuspolun "" :een valittuun asiakirjaan. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Tämä toiminto poistaa tallennuspolun "":sta valitusta asiakirjasta. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Mukautetut kentät päivitetty. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Suodata tagien mukaan @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Tyhjennä valinnat @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Valitse sivu @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Valitse kaikki - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Valitse: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Näytä + + src/app/data/matching-model.ts + 45 + + Ei mitään Sort src/app/components/document-list/document-list.component.html - 48 + 68 Lajittele @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Näkymät @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Tallenna "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Tallenna nimellä... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, one {}=1 {Valittu yhdestä asiakirjasta} other {Valitut asiakirjasta}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, one {}=1 {Yksi asiakirja} other { asiakirjaa}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (suodatettu) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Virhe ladattaessa asiakirjoja @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Järjestä ASN:n mukaan @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Suodata yhteyshenkilön mukaan @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Järjestä otsikon mukaan @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Järjestä omistajan mukaan @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Järjestä muistiinpanojen mukaan @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Lajittele asiakirjatyypin mukaan @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Lajittele tallennuspolun mukaan @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Lajittele luontipäivän mukaan @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Lajittele lisäyspäivän mukaan @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Jaettu @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Muokkaa asiakirjaa @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Esikatsele asiakirja @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Nollaa suodattimet / valinta @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Edellinen sivu @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Seuraava sivu @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Näkymä "" tallennettu onnistuneesti. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Näkymä "" luotu onnistuneesti. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Otsikko & sisältö @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Tiedostotyyppi @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Enemmän kuin @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 on yhtä kuin @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 on tyhjä @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 ei ole tyhjä @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 suurempi kuin @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 pienempi kuin @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Ilman kirjeenvaihtajaa @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Ilman asiakirjatyyppiä @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Ilman tunnistetta @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Otsikko: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Omistaja: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 yhteyshenkilö @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 yhteyshenkilöt @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Viimeksi käytetty @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Haluatko varmasti poistaa kirjeenvaihtajan ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 asiakirjatyyppi @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 asiakirjatyypit @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Haluatko varmasti poistaa asiakirjan tyypin ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Pois käytöstä + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Sähköpostisääntöjä ei ole määritelty. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Virhe sähköpostitilejä noutaessa @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Virhe sähköpostisääntöjä noutaessa @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Tallennettu tili "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Virhe tiliä tallentaessa. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Vahvista sähköpostitilin poisto @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Tämä toiminto poistaa tämän sähköpostitilin pysyvästi. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Poistettu sähköpostitili "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Virhe poistaessa sähköpostitiliä "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Tallennettu sääntö "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Virhe sääntöä tallentaessa. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Sääntö "" käytössä. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Sääntö "" poistettu käytöstä. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Vahvista sähköpostisäännön poisto @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Tämä toiminto poistaa tämän sähköpostisäännön pysyvästi. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Käyttöoikeudet päivitetty @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Virhe käyttöoikeuksia päivittäessä + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {}=1 {Yksi } other { yhteensä }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automaattinen - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Ei mitään - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Onnistuneesti luotu . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Virhe luotaessa . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Virhe tallennettaessa : . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Virhe elementtiä poistaessa @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Käyttöoikeudet päivitettiin onnistuneesti @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 tallennustilan polku @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 tallennustilan polut @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Haluatko varmasti poistaa asiakirjapolun ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tunniste @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 tunnisteet @@ -10060,7 +10316,7 @@ src/app/data/custom-field-query.ts 28 - Contains + Sisältää Contains (case-insensitive) @@ -10068,7 +10324,7 @@ src/app/data/custom-field-query.ts 29 - Contains (case-insensitive) + Sisältää (kirjainkoolla ei merkitystä) Greater than @@ -10116,7 +10372,7 @@ src/app/data/custom-field.ts 19 - Boolean + Totuusarvo Date @@ -10309,7 +10565,7 @@ src/app/data/paperless-config.ts 52 - Barcode Settings + Viivakoodin asetukset Output Type @@ -10437,7 +10693,7 @@ src/app/data/paperless-config.ts 193 - Enable TIFF Support + Ota TIFF-tuki käyttöön Barcode String diff --git a/src-ui/src/locale/messages.fr_FR.xlf b/src-ui/src/locale/messages.fr_FR.xlf index a8eb2d542..2ddc5554f 100644 --- a/src-ui/src/locale/messages.fr_FR.xlf +++ b/src-ui/src/locale/messages.fr_FR.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Fermer @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Précédent @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Suivant @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mois précédent @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mois suivant @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Fermer @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sélectionner le mois @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Heures @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sélectionner l'année @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutes @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Premier @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrémenter les heures @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Précédent @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Décrémenter les heures @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Suivant @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrémenter les minutes @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Dernier @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Décrémenter les minutes @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Secondes @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrémenter les secondes @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Décrémenter les secondes @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documents @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Paramètres @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Activer @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Journaux @@ -742,11 +742,35 @@ Consultez les journaux de l'application ainsi que ceux des courriels. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Afficher + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lignes + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Chargement... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Aller au bas + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Qu'est-ce ? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Recherche avancée @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Erreur lors de la récupération des utilisateurs @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Erreur lors de la récupération des groupes @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Une erreur est survenue lors de la sauvegarde des paramètres. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Tâches sur les fichiers @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Ignorer @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Résultat @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Ignorer la sélection @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Tout ignorer @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirmer « Tout ignorer » @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Ignorer toutes () les tâches ? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Erreur lors du rejet des tâches + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Erreur lors du rejet de la tâche + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 en attente @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 commencé @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 terminé(s) @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 échec @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Corbeille @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Effacer le(s) sélectionné(s) @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirmer la suppression @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Utilisateurs & Groupes @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Le mot de passe a été modifié, vous serez déconnecté momentanément. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Utilisateur « » enregistré. @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Erreur lors de l'enregistrement de l'utilisateur. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirmer la suppression du compte utilisateur @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Cette opération supprimera définitivement ce compte utilisateur. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Groupe «  » supprimé @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Erreur lors de la supression de l’utilisateur «  ». @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Groupe « » enregistré. @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Erreur lors de l'enregistrement du groupe. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirmer la suppression du groupe d'utilisateurs @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Cette opération supprimera définitivement ce groupe d'utilisateurs. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Groupe «  » supprimé @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Erreur lors de la supression du groupe «  ». @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentation @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Vues enregistrées @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Documents ouverts @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Tout fermer @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Gestion @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Courriel @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 est disponible. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Cliquer pour visualiser. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx peut automatiquement vérifier la disponibilité des mises à jour @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Comment ça fonctionne ? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Mise à jour disponible @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Vues sur la barre latérale mises à jour @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Erreur lors de la mise à jour des vues de la barre latérale @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Une erreur s'est produite lors de l'enregistrement des paramètres de vérification des mises à jour. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Réinitialiser @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirmation @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Confirmer @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Vrai @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Faux @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Rechercher un document... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Tout @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Non @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Ajouter une requête @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Ajouter une expression @@ -3758,18 +3830,6 @@ Dates relatives - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - maintenant - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Date d'ajout + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + maintenant + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Dans un délai de 1 semaine @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Dans un délai de 1 mois @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Dans un délai de 3 mois @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Dans un délai de 1 an @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Cette année @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Ce mois-ci @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Hier + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Semaine dernière + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Mois dernier + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Trimestre dernier + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Année dernière + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algorithme de rapprochement @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Modèle de rapprochement @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Insensible à la casse @@ -3982,19 +4082,11 @@ Ajouter une option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Attention : les instances existantes de ce champ conserveront leur indice de valeur actuel (par ex. option n° 1, n° 2, n° 3) après avoir modifié les options ici - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Devise par défaut @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Code devise à 3 caractères @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Utiliser la langue @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Affectation du type de document @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Affecter le correspondant @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Erreur @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Chemin @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Couleur + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Étiquette de boîte de réception @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Les étiquettes de boîte de réception sont automatiquement affectées à tous les documents traités. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Créer une nouvelle étiquette @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Modifier l'étiquette @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Adresse électronique @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Authentification à deux facteurs @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Désactiver l'authentification à deux facteurs @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Créer un nouveau compte utilisateur @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Modifier le compte utilisateur @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 TOTP désactivé @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 La désactivation du TOTP a échoué @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Type de déclenchement @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Définissez le décalage du déclencheur planifié et le champ de date à utiliser. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Décalage en jours @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Les valeurs positives se déclencheront après la date et les valeurs négatives avant. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relatif à @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Champ personnalisé @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Champ personnalisé à utiliser pour la date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Récurrent @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Le déclencheur est récurrent. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Intervalle récurrent en jours @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Répétez le déclencheur tous les n jours. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Déclenche pour les documents qui correspondent à tousles filtres spécifiés ci-dessous. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtrer le nom de fichier @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Appliquer aux documents qui correspondent à ce nom de fichier. Les expressions telles que *.pdf ou *facture* sont autorisées. Insensible à la casse. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtrer les sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtrer le chemin - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Appliquer aux documents qui correspondent à ce chemin. Les caractères génériques tels que "*" sont autorisés. Normalisation de la casse.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Règle de filtrage des messages @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Appliquer aux documents traités par cette règle de courrier. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Algorithme de correspondance de contenu @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Modèle de correspondance au contenu - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - A n'importe quelle étiquette + Filtres avancés - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - A le correspondant + Ajouter un filtre - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - A le type de document + Aucun filtre de workflow avancé défini. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - A un chemin de sauvegarde + Complétez la configuration de requête de champ personnalisée. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Type d'action @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Attribuer un titre @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Peut inclure certains caractères génériques, voir la <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assigner des étiquettes @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Attribuer un chemin de stockage @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Affecter des champs personnalisés @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Affecter un propriétaire @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Affecter des autorisations de consultation @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assigner des autorisations d'édition @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Supprimer des étiquettes @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Tout supprimer @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Supprimer des correspondants @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Supprimer des types de document @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Supprimer des chemins de stockage @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Supprimer des champs personnalisés @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Supprimer des propriétaires @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Supprimer des autorisations @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Autorisations de consultation @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Autorisations de modification @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Objet du courriel @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Corps du courriel @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Destinatires du courriel @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Joindre un document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 URL du Webhook @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Utiliser les paramètres pour le corps du webhook @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Envoyer le payload au format JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Paramètres du webhook @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Corps du Webhook @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 En-têtes Webhook @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Inclure le document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Dossier de traitement @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Chargement de l'API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Récupération du courrier @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Champ personnalisé @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Début de consommation @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document ajouté @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document mis à jour @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Planifié @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignation @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Suppression @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + A l'un de ces tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + A tous ces tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Ne possède pas ces tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + A le correspondant + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + N'a pas de correspondant + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + A le type de document + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + N'a pas de type de document + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + A un chemin de sauvegarde + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + N'a pas de chemins de stockage + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Correspond à la requête de champ personnalisé + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Créer un nouveau workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Modifier le workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural,=1 {Envoyer le document} other {Envoyer les documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Adresse(s) électronique(s) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Objet @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Utiliser la version d'archive @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Envoyer le courriel - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Envoyer le document par courriel + Certains serveurs de messagerie peuvent rejeter les messages comportant de grandes pièces jointes. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Courriel envoyé + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Erreur lors de l'envoi des documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Non affecté @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Ouvrir le filtre @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Suggestions : @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Ajouter un élément @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Ajouter une étiquette @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Supprimer l'étiquette @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtrer les documents avec ces étiquettes @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + En savoir plus @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scannez le code QR avec votre application d'authentification puis saisissez le code ci-dessous @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Secret d'authentification @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Vous pouvez conserver ce secret et l’utiliser pour réinstaller votre application d’authentification ultérieurement. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Les codes de secours ne seront plus affichés, assurez-vous de les sauvegarder. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copier les codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Les e-mails doivent correspondre @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Les mots de passe doivent correspondre @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profil mis à jour avec succès @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Erreur lors de l'enregistrement du profil @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Erreur lors de la génération du jeton d'authentification @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Erreur lors de la déconnexion du compte social @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Erreur lors de la récupération des paramètres du TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activé avec succès @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Erreur lors de l’activation du TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP désactivé avec succès @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Erreur lors de la désactivation du TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrer par correspondant @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtrer par type de document @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtrer par chemin de stockage @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Oui @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Non @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Page @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Retraiter @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 Éditeur PDF @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Erreur lors de la récupération des métadonnées @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Erreur lors de la récupération des suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document «  » enregistré avec succès. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Erreur lors de la sauvegarde du document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Erreur lors de la sauvegarde du document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Voulez-vous vraiment déplacer le document «  » vers la corbeille ? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Les documents peuvent être restaurés avant la suppression définitive. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Déplacer vers la corbeille @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Erreur lors de la suppression du document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Confirmer le retraitement @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Cette action recréera définitivement le fichier d'archive pour ce document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Le fichier d'archive va être régénéré avec les paramètres actuels. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 L'opération de retraitement pour "" commencera en arrière-plan. Fermez et rouvrez ou rechargez ce document une fois l'opération terminée pour voir le nouveau contenu. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Erreur lors de l'exécution de l'opération @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Erreur lors du téléchargement du document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Ajustement de la page @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 L'opération de modification du PDF pour "" commencera en arrière-plan. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Erreur lors de l’exécution de l’opération de modification du PDF @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Impression échouée. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Erreur lors du chargement du document pour impression. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Une erreur s’est produite lors du chargement du tiff : @@ -7882,19 +8098,11 @@ Aucune entrée trouvée. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Sélectionner : - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Modifier : @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Champs personnalisés @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filtrer des champs personnalisés @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Définir des valeurs @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Pivoter @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Fusionner @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Inclure : @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Fichiers archivés @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Fichiers originaux @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Utiliser le nom de fichier formaté @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Erreur lors de l'exécution de l'opération de masse @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" et "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' et "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirmer l'affectation des étiquettes @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Cette action affectera l'étiquette "" au(x) document(s) sélectionné(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Cette action affectera les étiquettes au(x) document(s) sélectionné(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Cette action supprimera l'étiquette "" de(s) document(s) sélectionné(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Cette action supprimera les étiquettes de(s) document(s) sélectionné(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Cette action ajoutera les étiquettes et supprimera les étiquettes de(s) document(s) sélectionné(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirmer l'affectation du correspondant @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Cette action affectera le correspondant "" au(x) document(s) sélectionné(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Cette action supprimera le correspondant de(s) document(s) sélectionné(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirmer l'affectation du type de document @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Cette action affectera le type de document "" au(x) document(s) sélectionné(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Cette action supprimera le type de document de(s) document(s) sélectionné(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirmez le chemin de stockage @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Cette opération assignera le chemin de stockage "" aux document(s) sélectionné(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Cette opération assignera le chemin de stockage des "" document(s) sélectionné(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirmer l'affectation de champ personnalisé @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Cette opération va affecter le champ personnalisé « » sur les document(s) sélectionné(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Cette opération va affecter les champs personnalisés sur les document(s) sélectionné(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Cette opération va supprimer le champ personnalisé « » sur les document(s) sélectionné(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Cette opération va supprimer les champs personnalisés sur les document(s) sélectionné(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Cette opération va affecter les champs personnalisés et supprimera les champs personnalisés sur les document(s) sélectionné(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Déplacer le document/les documents sélectionnés vers la corbeille ? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Cette action recréer définitivement les fichiers d'archive pour les document(s) sélectionné(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Les fichiers d'archive vont être régénérés avec les paramètres actuels. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Confirmation de la rotation @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Cette opération pivotera définitivement la version originale de document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Confirmation de la fusion @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Cette opération fusionnera définitivement document(s) sélectionné(s) dans un nouveau document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Le document fusionné sera dans la file d'attente pour consommation. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Champ personnalisé mis à jour. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Erreur de mise à jour du champ personnalisé. @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrer par étiquette @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Sélectionner aucun @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Sélectionner la page @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Sélectionner tout - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Sélectionner : + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Afficher + + src/app/data/matching-model.ts + 45 + + Aucun Sort src/app/components/document-list/document-list.component.html - 48 + 68 Trier @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Vues @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Enregistrer «  » @@ -8561,7 +8781,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Enregistrer sous… @@ -8569,7 +8789,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Toutes les vues enregistrées @@ -8577,7 +8797,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 { document sélectionné sur 1} other { documents sélectionnés sur }} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Un document} other { documents}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtré) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,7 +8833,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Erreur lors du téléchargement du document @@ -8621,7 +8841,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Trier par NSA @@ -8629,11 +8849,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8649,7 +8869,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Trier par correspondant @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Trier par titre @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Trier par propriétaire @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Trier par notes @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Trier par type de documents @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Trier par chemin de stockage @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Trier par date de création @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Trier par date d'ajout @@ -8729,7 +8949,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Trier par nombre de pages @@ -8737,7 +8957,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Partagé @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Trier par @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Modifier le document @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Prévisualiser le document @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Réinitialiser les filtres / la sélection @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Ouvrir le premier document [sélectionné] @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Page précédente @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Page suivante @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Vue "" enregistrée avec succès. @@ -8829,7 +9049,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Impossible d'enregistrer la vue "". @@ -8837,7 +9057,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Vue « » créée avec succès. @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titre & contenu @@ -8861,7 +9081,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Type de fichier @@ -8869,7 +9089,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Plus comme @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 est égal à @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 est vide @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 n'est pas vide @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 est supérieur à @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 est inférieur à @@ -8917,7 +9137,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondant : @@ -8925,7 +9145,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Sans correspondant @@ -8933,7 +9153,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Type de document : @@ -8941,7 +9161,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Sans type de document @@ -8949,7 +9169,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Chemin de stockage : @@ -8957,7 +9177,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Sans chemin de stockage @@ -8965,7 +9185,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Étiquette : @@ -8973,7 +9193,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Sans étiquette @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Champs personnalisés de requête @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Titre : @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 NSA : @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Propriétaire : @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Propriétaire non présent dans : @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Sans propriétaire @@ -9157,7 +9377,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 correspondant @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 correspondants @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Dernière utilisation @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Voulez-vous vraiment supprimer le correspondant « » ? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filtrer les documents () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 Type de document @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 types de document @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Voulez-vous vraiment supprimer le type de document « » ? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ Désactivé + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Voir le courriel traité + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Aucune règle de courriel définie. @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Erreur lors de la récupération des comptes courriel @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Erreur lors de la récupération des règles de messagerie @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Authentification OAuth2 réussie @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 Échec de l'authentification OAuth2, voir les logs pour plus de détails @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Compte enregistré. @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Erreur lors de l'enregistrement du compte. @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirmer la suppression du compte de messagerie @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Cette opération supprimera définitivement ce compte de messagerie. @@ -9477,7 +9705,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Compte mail " " supprimé @@ -9485,7 +9713,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Erreur lors de la suppression du compte de messagerie "". @@ -9493,7 +9721,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Traitement du compte mail "" @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Erreur de traitement du compte de messagerie "" @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Règle enregistrée. @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Erreur lors de l'enregistrement de la règle. @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Règle «  » activée. @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Règle « » désactivée. @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Erreur lors de l'activation de la règle "". @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirmer la suppression de la règle de courriel @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Cette opération supprimera définitivement cette règle de courriel. @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Règle de messagerie supprimée "" @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Erreur lors de la suppression de la règle de messagerie "". @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Droits d'accès mis à jour @@ -9589,14 +9817,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Erreur lors de la mise à jour des droits d'accès + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Courriel traité pour + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Reçu + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Traité + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Courriel(s) traité(s) supprimé(s) + Filter by: @@ -9661,19 +9929,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {}=1 {Un } other { total }} @@ -9681,7 +9949,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9957,11 @@ Automatique - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Aucun - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Création de réussie. @@ -9713,7 +9969,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Une erreur s'est produite lors de la création de . @@ -9721,7 +9977,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Mise à jour réussie pour "". @@ -9729,7 +9985,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Une erreur s'est produite lors de la sauvegarde de . @@ -9737,7 +9993,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Les documents associés ne seront pas supprimés. @@ -9745,7 +10001,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Erreur lors de la suppression de l'élément @@ -9753,7 +10009,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Les droits d'accès ont bien été mis à jour @@ -9761,7 +10017,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Cette opération supprimera définitivement tous les objets. @@ -9769,7 +10025,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects supprimés avec succès @@ -9777,7 +10033,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Erreur lors de la suppression des objets @@ -9865,7 +10121,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 chemin de stockage @@ -9873,7 +10129,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 chemins de stockage @@ -9881,7 +10137,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Voulez-vous vraiment supprimer le chemin de stockage " " ? @@ -9889,7 +10145,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 étiquette @@ -9897,7 +10153,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 étiquettes @@ -10179,7 +10435,7 @@ src/app/data/custom-field.ts 55 - Long Text + Texte long Search score diff --git a/src-ui/src/locale/messages.he_IL.xlf b/src-ui/src/locale/messages.he_IL.xlf index e45df3685..d80f45b11 100644 --- a/src-ui/src/locale/messages.he_IL.xlf +++ b/src-ui/src/locale/messages.he_IL.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 סגור @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 הקודם @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 הבא @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 חודש קודם @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 חודש הבא @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 שש @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 סגירה @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 בחירת חודש @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 שעות @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 חח @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 בחר שנה @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 דקות @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ראשון @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 הגדלת שעות @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 קודם @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 הקטנת שעות @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 הבא @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 הגדלת דקות @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 אחרון @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 הקטנת דקות @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 שש @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 שניות @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 הגדלת שניות @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 הקטנת שניות @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 מסמכים @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 הגדרות @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 פעיל @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 יומני רישום @@ -742,11 +742,35 @@ עיין בקובצי הלוג של היישום ולבדיקת דואר אלקטרוני. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + הצג + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ טוען... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + מה זה? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 חיפוש מתקדם @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 שגיאה באחזור משתמשים @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 שגיאה באחזור קבוצות @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 התרחשה שגיאה בעת שמירת ההגדרות: @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 משימות קבצים @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 התעלמות @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 תוצאה @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 בטל מסומנים @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 בטל הכל @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 אשר לבטל מסומנים @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 התעלם מכל המשימות? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 בתור @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 התחיל @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 הושלם @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 נכשל @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 אשפה @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + מחק בחירה @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 אישור מחיקה @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 משתמשים & קבוצות @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 הסיסמה השתנתה. אתה תנותק מהמערכת בתוך זמן קצר @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 משתמש שמור "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 שגיאה בשמירת משתמש @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 אשר מחיקת חשבון משתמש @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 הפעולה הזאת תמחק את המשתמש הזה לצמיתות. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 משתמש "" נמחק @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 שגיאה במחיקת משתמש "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 קבוצה שמורה "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 שגיאה בשמירת קבוצה. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 אשר מחיקת קבוצת משתמשים @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 הפעולה הזאת תמחק את קבוצת המשתמשים הזו לצמיתות. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 קבוצה "" נמחקה @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 שגיאה במחיקת הקבוצה "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 תיעוד @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 תצוגות שמורות @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 מסמכים פתוחים @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 סגור הכל @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 נהל @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 דואר @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 ניהול @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 הגדרות @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 זמין. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 לחץ להצגה. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx יכול לבדוק אוטומטית אם יש עדכונים @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 איך זה עובד? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 קיים עדכון @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 תצוגת סרגל צד עודכנה @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 שגיאה בעדכון תצוגת סרגל צד @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 ארעה שגיאה בתהליך השמירה. בודק הגדרות @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + ניקוי @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 אישור @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 אשר @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 אמת @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 שקר @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 חפש מסמכים... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 הכול @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 לא @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 הוסף שאילתה @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 הוסף ביטוי @@ -3758,18 +3830,6 @@ תאריכים יחסיים - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - עכשיו - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ נוסף + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + עכשיו + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 בתוך שבוע אחד @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 בתוך חודש אחד @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 בתוך שלושה חודשים @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 בתוך שנה אחת @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 השנה הזאת @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 החודש הזה @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ אתמול + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 אלגוריתם התאמה @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 דפוס התאמה @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 חסר רגישות תווים גדולים/קטנים (אנגלית) @@ -3982,19 +4082,11 @@ הוסף אפשרות - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - אזהרה: מופעים קיימים של שדה זה ישמרו על אינדקס הערך הנוכחי שלהם (לדוגמה: אפשרות מס' 1, מס' 2, מס' 3) לאחר עריכת האפשרויות כאן - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 מטבע ברירת מחדל @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 קוד מטבע בן 3 תווים @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 שימוש בלוקאל @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 שייך סוג מסמך @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 שייך מכותב זה @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + שגיאה @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 נתיב @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 צבע + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + הורה + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 תיוג תיבה נכנסת @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 תיוגי תיבה נכנסת מוספים באופן אוטומטי לכל המסמכים שמתקבלים. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 צור תגית חדשה @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 עריכת תגית @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + דוא"ל @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 אימות דו-שלבי @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 השבת אימות דו-שלבי @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 צור חשבון חדש @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 ערוך את החשבון @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp בוטל @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 השבתת Totp נכשלה @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 סוג טריגר @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 הגדרת היסט טריגר מתוזמן ואיזה שדה תאריך להשתמש בו. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 ימי היסט @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 ערכים חיוביים יפעילו את תהליך העבודה לפני התאריך, וערכים שליליים אחריו. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 ביחס ל @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 שדה מותאם אישית @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 שדה מותאם אישית לשימוש כתאריך. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 מחזורי @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 הטריגר חוזר על עצמו. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 מחזור ימי מרווח @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 חזור על הטריגר כל n ימים. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 טריגר למסמכים התואמים את כל המסננים המפורטים מטה. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 סנן לפי שם קובץ @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 חל על מסמכים התואמים את שם קובץ זה. תווים כלליים כגון *.pdf או *invoice* מותרים. לא רגיש רישיות. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 מקורות מסננים @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 מסנן לפי נתיב שמירה - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - חל על מסמכים התואמים את נתיב זה. תווים כלליים המצוינים כ-* מותרים. רישיות מנורמלת.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 סנן לפי כלל דואל @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 חל על מסמכים שנצרכו דרך כלל דואר זה. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 אלגוריתם התאמת תוכן @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 תבנית התאמת תוכן - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - כולל תגיות + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - כולל מכותב + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - כולל סוג מסמך + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 סוג פעולה @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 הקצה כותרת @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 יכול לכלול כמה placeholders, ראה <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>תיעוד</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 הקצה תגיות @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 הקצה נתיב אחסון @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 הקצה שדות מותאמים אישית @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 הקצה בעלים @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 הקצה הרשאות צפיה למשתמש @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 הקצה הרשאות עריכה למשתמש @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 הסירו תגיות @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 הסר הכל @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 הסר מכותבים @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 הסר סוגי מסמכים @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 הסר מיקום אכסון @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 הסרת שדות מותאמים אישית @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 הסר בעלים @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 הסר הרשאות @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 צפה בהרשאות @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 ערוך הרשאות @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 נושא הדוא"ל @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 גוף אימייל @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 נמעני אימייל @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 צרף קובץ @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 כתובת ווב-הוק @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 שימוש בפרמטרים עבור גוף הווב-הוק @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 שליחת מטען ייעודי של ווב-הוק כ-JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 פרמטרים של הווב-הוק @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 גוף הווב-הוק @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 כותרות הווב-הוק @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 כלול מסמך @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 תיקיית ייבוא @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 העלאת API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 הורד מייל @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 ממשק אינטרנט @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 שדה מותאם אישית @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 צריכה התחילה @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 מסמך התווסף @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 מסמך עודכן @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 מתוזמן @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 השמה @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 הסרה @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 ווב-הוק + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + כולל מכותב + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + כולל סוג מסמך + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 צרו תהליך עבודה חדש @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 ערכו תהליך עבודה + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 כתובת/ות דוא"ל @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 נושא @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 הודעה @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 שימוש בגרסת ארכיון @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 שלחו דוא"ל - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - מסמך דוא"ל + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 דוא"ל נשלח + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned לא הוקצה @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 פתחו מסנן @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 הצעות: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths הוסף פריט @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 הוסף תגית @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 הסר תגית @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 סנן מסמכים לפי תגיות אלה @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + קרא עוד @@ -6010,7 +6222,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 9 - Select all pages + בחר את כל העמודים Deselect all pages @@ -6018,7 +6230,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 12 - Deselect all pages + בטל את בחירת כל העמודים Rotate selected pages counter-clockwise @@ -6026,7 +6238,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 17 - Rotate selected pages counter-clockwise + סובב את העמודים שנבחרו נגד כיוון השעון Rotate selected pages clockwise @@ -6034,7 +6246,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 20 - Rotate selected pages clockwise + Delete selected pages @@ -6058,7 +6270,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 36 - Rotate page clockwise + סובב עמוד בכיוון השעון Delete page @@ -6066,7 +6278,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 41 - Delete page + מחק עמוד Add / remove document split here @@ -6082,7 +6294,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 70 - Split here + פצל כאן Create new document(s) @@ -6098,7 +6310,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 87 - Update existing document + עדכן מסמך נוכחי Copy metadata @@ -6114,7 +6326,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 98 - Delete original + מחק מקורי Merge with existing permissions @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 סירקו את קוד ה-QR עם אפליקציית המאמת שלכם ולאחר מכן הזינו את הקוד למטה @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 סוד המאמת @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 אתם יכולים לאחסן את הסוד הזה ולהשתמש בו כדי להתקין מחדש את אפליקציית המאמת שלכם במועד מאוחר יותר. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 קוד @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 קודי שחזור לא יוצגו שוב, ודאו לשמור אותם. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 העתיקו קודים @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 שדות הדוא״ל אינם תואמים. תקן והקלד מחדש @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 הסיסמאות חייבות להיות תואמות @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 פרופיל עודכן בהצלחה @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 שגיאה בשמירת פרופיל @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 שגיאה ביצירת אסימון אימות @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 שגיאה בניתוק חשבון חברתי @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 שגיאה באחזור הגדרות TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP הופעל בהצלחה @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 שגיאה בהפעלת TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP הושבת בהצלחה @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 שגיאה בהשבתת TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + OK Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 סינון לפי מכותב @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 סנן לפי סוגי מסמכים @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 סינון לפי נתיב אחסון @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 כן @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 לא @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 דף @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 עיבוד מחדש @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + הדפס More like this @@ -7286,9 +7502,9 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 - PDF Editor + עורך PDF Send @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 שגיאה באחזור נתונים @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 שגיאה באחזור הצעות. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 המסמך "" נשמר בהצלחה. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 שגיאה בעת שמירת המסמך "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 שגיאה בשמירת מסמך @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 האם להעביר את המסמך "" לסל המיחזור? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 ניתן לשחזר מסמכים לפני מחיקה סופית. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 העבר לסל המיחזור @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 שגיאה במחיקת מסמך @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 אישור עיבוד מחדש @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 פעולה זו תבצע יצירה מחדש של קובץ הארכיון למסמך זה @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 קובץ הארכיון יווצר מחדש עם ההגדרות הנוכחיות. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 פעולה עיבוד מחדש ל- "" תתחיל ברקע. סגור ופתח מחדש את המסמך לאחר שהפעולה תושלם על מנת לראות את התוכן המעודכן. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 שגיאת הרצה @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 שגיאה בעת הורדת מסמך @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 התאם תצוגה לרוחב הדף @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,15 +8066,15 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + הדפסה נכשלה. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 שגיאה בעת טעינת קובץ tiff: @@ -7882,19 +8098,11 @@ לא נמצאו רשומות - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - בחר: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 ערוך: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 שדות מותאמים אישית @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 סינון שדות מותאמים אישית @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 הגדר ערכים @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 סובב @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 מזג @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 כולל: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 קובצי ארכיון @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 קבצים מקוריים @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 השתמש בשם קובץ מפורמט @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 שגיאת הרצת קבוצת פקודות @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" ו- "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' ו- "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 אשר שיוך תגיות @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 הפעולה תוסיף את התג ל מסמכים שנבחרו. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 הפעולה תוסיף את התגיות ל מסמכים שנבחרו. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 הפעולה תמחק את התג מ מסמכים שנבחרו. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 פעולה זו תמחק את התגיות מ מסמכים שנבחרו. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 פעולה זו תוסיף את התגיות ותמחק את התגיות ב מסמכים שנבחרו. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 אשר שיוך כותב @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 פעולה זו תשייך את הכותב ל מסמכים שנבחרו. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 פעולה זו תמחק את הכותב מ מסמכים שנבחרו. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 אשר שיוך סוג מסמך @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 פעולה זו תשייך את סוג המסמך ל מסמכים שנבחרו. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 פעולה זו תמחק את סוג המסמך מהמסמכים שנבחרו. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 אשר שיוך נתיב אחסון @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 פעולה זו תקצה את נתיב אחסון "" ל- מסמכים נבחרים. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 פעולה זו תסיר את נתיב האחסון מ- מסמכים נבחרים. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 אישור הקצאת שדה מותאם אישית @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 פעולה זו תקצה את שדה מותאם אישית "" ל- מסמכים נבחרים. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 פעולה זו תקצה את השדות המותאמים אישית ל- מסמכים נבחרים. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 פעולה זו תסיר את שדה מותאם אישית מ- מסמכים נבחרים. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 פעולה זו תסיר את השדות המותאמים אישית מ- מסמכים נבחרים. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 פעולה זו תקצה את השדות מותאמים אישית ותסיר את השדות מותאמים אישית מ- מסמכים נבחרים. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 להעביר מסמכים לסל המיחזור? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 פעולה זו תיצור מחדש את קבצי הארכיון של מסמכים נבחרים. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 קבצי הארכיון יווצרו מחדש עם ההגדרות הנוכחיות. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 אישור סיבוב @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 פעולה זו תבצע סיבוב בלתי הפיך של גרסת המקור של מסמכים. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 אישור מיזוג @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 פעולה זו תמזג מסמכים למסמך חדש. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 מיזוג מסמכים יכנס לתור לצורך שימוש. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 שדות מותאמים אישית עודכנו. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 שגיאה בעת עדכון שדות מותאמים אישית. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 סינון לפי תג @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 ביטול בחירה @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 בחירת עמוד @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 בחר הכל - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - הצג + + src/app/data/matching-model.ts + 45 + + ללא Sort src/app/components/document-list/document-list.component.html - 48 + 68 מיין @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 צפיות @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 שמירת "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 שמור כ... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 תצוגות שמורות @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {בחירה ממסמך אחד} other {בחירת מתוך מסמכים}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {מסמך אחד} other { מסמכים}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (מסונן) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 שגיאה בעת טעינת מסמך @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 מיון לפי ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 מיון לפי שולח @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 מיון לפי כותרת @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 מיון לפי בעלים @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 מיון לפי הערות @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 מיון לפי סוג מסמך @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 מיון לפי נתיב אחסון @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 מיון לפי תאריך יצירה @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 מיון לפי תאריך הוספה @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 מיון לפי מספר עמודים @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 משותף @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 מיון לפי @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 עריכת מסמך @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 תצוגה מקדימה של המסמך @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 איפוס סינון / בחירה @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 פתח את המסמך הראשון [הנבחר] @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 עמוד קודם @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 עמוד הבא @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 תצוגה "" נשמרה בהצלחה. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 כישלון בעת שמירת תצוגה "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 תצוגה "" נוצרה בהצלחה. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 כותרת & תוכן @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 סוג קובץ @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 עוד כמו @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 שווה @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 הינו ריק @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 אינו ריק @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 גדול מ @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 קטן מ @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 שולח: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 ללא מכותבים @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 סוג מסמך: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 ללא סוג מסמך @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 ללא נתיב אחסון @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 ללא תיוג @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 שאילתת שדות מותאמים אישית @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 כותרת: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 מס"ד: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 בעלים: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 הבעלים לא נכלל בתוך: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 ללא בעלים @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 מכותב @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 מכותבים @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 שימוש אחרון @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 בטוח שברצנך למחוק את המכותב ? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 סינון מסמכים () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 סוג מסמך @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 סוגי מסמך @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 בטוח שברצנך למחוק את סוג המסמך ? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ מושבת + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 לא הוגדרו כללים למיון דואר. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 שגיאה באחזור פרטי חשבונות דוא״ל @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 שגיאה באחזור כללים בחשבונות דוא״ל @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 חשבון נשמר "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 שגיאה בשמירת חשבון. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 אשר מחיקת חשבון דוא״ל @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 הפעולה הזאת תמחק את פרטי חשבון הדוא״ל הזה לצמיתות. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 שגיאה בשמירת כלל. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 אישור מחיקת כלל דוא״ל @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 הפעולה הזאת תמחק את כלל הדוא״ל הזה לצמיתות. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 ההרשאות עודכנו @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 שגיאת שינוי הרשאות + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {אחד } other { סך הכל }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ אוטומטי - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - ללא - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 נוצר בהצלחה: . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 אירעה שגיאה ביצירת: . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 חלה שגיאה בשמירת . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 מסמכים קשורים לא יימחקו. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 שגיאה בניסיון למחוק את הפריט @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 ההרשאות עודכנו בהצלחה @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 פעולה זו תמחק לצמיתות את כל האובייקטים. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 הפריטים נמחקו בהצלחה @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 שגיאה במחיקת פריטים @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 נתיב אחסון @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 נתיבי אחסון @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 למחוק את נתיב האחסון „”? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 תגית @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 תגיות @@ -10028,7 +10284,7 @@ src/app/data/custom-field-query.ts 24 - Equal to + שווה ל- In @@ -10052,7 +10308,7 @@ src/app/data/custom-field-query.ts 27 - Exists + קיים Contains @@ -10373,7 +10629,7 @@ src/app/data/paperless-config.ts 136 - Rotate Pages + סובב עמודים Rotate Pages Threshold @@ -10413,7 +10669,7 @@ src/app/data/paperless-config.ts 172 - Application Logo + לוגו היישום Application Title @@ -10493,7 +10749,7 @@ src/app/data/paperless-config.ts 242 - Max Pages + מקסימום עמודים Enable Tag Detection @@ -11021,7 +11277,7 @@ src/app/services/settings.service.ts 261 - Chinese Traditional + סינית מסורתית ISO 8601 diff --git a/src-ui/src/locale/messages.hi_IN.xlf b/src-ui/src/locale/messages.hi_IN.xlf new file mode 100644 index 000000000..83f6e77f3 --- /dev/null +++ b/src-ui/src/locale/messages.hi_IN.xlf @@ -0,0 +1,11480 @@ + + + + + + Close + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts + 50 + + बंद + + + Slide of + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts + 131,135 + + Currently selected slide number read by screen reader + Slide of + + + Previous + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts + 157,159 + + पिछला + + + Next + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts + 198 + + अगला + + + Previous month + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts + 83,85 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts + 112 + + पिछला महीना + + + Next month + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts + 112 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts + 112 + + अगला महीना + + + HH + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + HH + + + Close + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Close + + + Select month + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + महीना चुनिए + + + «« + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + «« + + + Hours + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Hours + + + « + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + « + + + MM + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + MM + + + » + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + » + + + Select year + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Select year + + + Minutes + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Minutes + + + »» + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + »» + + + First + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + First + + + Increment hours + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Increment hours + + + Previous + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Previous + + + Decrement hours + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Decrement hours + + + Next + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Next + + + Increment minutes + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Increment minutes + + + Last + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Last + + + Decrement minutes + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Decrement minutes + + + SS + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + SS + + + Seconds + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Seconds + + + Increment seconds + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Increment seconds + + + Decrement seconds + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Decrement seconds + + + + + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + + + + + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts + 41,42 + + + + + Document was added to Paperless-ngx. + + src/app/app.component.ts + 95 + + + src/app/app.component.ts + 104 + + Document was added to Paperless-ngx. + + + Open document + + src/app/app.component.ts + 97 + + + src/app/components/admin/trash/trash.component.ts + 146 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 44 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 47 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 50 + + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 58 + + Open document + + + Could not add : + + src/app/app.component.ts + 119 + + Could not add : + + + Document is being processed by Paperless-ngx. + + src/app/app.component.ts + 134 + + Document is being processed by Paperless-ngx. + + + Dashboard + + src/app/app.component.ts + 141 + + + src/app/components/app-frame/app-frame.component.html + 84 + + + src/app/components/app-frame/app-frame.component.html + 86 + + + src/app/components/dashboard/dashboard.component.html + 1 + + Dashboard + + + Documents + + src/app/app.component.ts + 152 + + + src/app/components/app-frame/app-frame.component.html + 91 + + + src/app/components/app-frame/app-frame.component.html + 93 + + + src/app/components/document-list/document-list.component.ts + 192 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 61 + + + src/app/components/manage/management-list/management-list.component.html + 139 + + + src/app/components/manage/management-list/management-list.component.html + 139 + + + src/app/components/manage/management-list/management-list.component.html + 139 + + + src/app/components/manage/management-list/management-list.component.html + 139 + + Documents + + + Settings + + src/app/app.component.ts + 164 + + + src/app/components/admin/settings/settings.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 51 + + + src/app/components/app-frame/app-frame.component.html + 255 + + + src/app/components/app-frame/app-frame.component.html + 257 + + Settings + + + Prev + + src/app/app.component.ts + 170 + + Prev + + + Next + + src/app/app.component.ts + 171 + + + src/app/components/document-detail/document-detail.component.html + 113 + + Next + + + End + + src/app/app.component.ts + 172 + + End + + + The dashboard can be used to show saved views, such as an 'Inbox'. Views are found under Manage > Saved Views once you have created some. + + src/app/app.component.ts + 178 + + The dashboard can be used to show saved views, such as an 'Inbox'. Views are found under Manage > Saved Views once you have created some. + + + Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms. + + src/app/app.component.ts + 185 + + Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms. + + + The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar. + + src/app/app.component.ts + 190 + + The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar. + + + The filtering tools allow you to quickly find documents using various searches, dates, tags, etc. + + src/app/app.component.ts + 197 + + The filtering tools allow you to quickly find documents using various searches, dates, tags, etc. + + + Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar. + + src/app/app.component.ts + 203 + + Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar. + + + Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view. + + src/app/app.component.ts + 208 + + Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view. + + + Manage e-mail accounts and rules for automatically importing documents. + + src/app/app.component.ts + 216 + + + src/app/components/manage/mail/mail.component.html + 4 + + Manage e-mail accounts and rules for automatically importing documents. + + + Workflows give you more control over the document pipeline. + + src/app/app.component.ts + 224 + + Workflows give you more control over the document pipeline. + + + File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process. + + src/app/app.component.ts + 232 + + + src/app/components/admin/tasks/tasks.component.html + 4 + + File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process. + + + Check out the settings for various tweaks to the web app. + + src/app/app.component.ts + 240 + + Check out the settings for various tweaks to the web app. + + + Thank you! 🙏 + + src/app/app.component.ts + 248 + + Thank you! 🙏 + + + There are <em>tons</em> more features and info we didn't cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues. + + src/app/app.component.ts + 250 + + There are <em>tons</em> more features and info we didn't cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues. + + + Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx! + + src/app/app.component.ts + 252 + + Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx! + + + Application Configuration + + src/app/components/admin/config/config.component.html + 2 + + Application Configuration + + + Global app configuration options which apply to <strong>every</strong> user of this install of Paperless-ngx. Options can also be set using environment variables or the configuration file but the value here will always take precedence. + + src/app/components/admin/config/config.component.html + 4 + + Global app configuration options which apply to <strong>every</strong> user of this install of Paperless-ngx. Options can also be set using environment variables or the configuration file but the value here will always take precedence. + + + Read the documentation about this setting + + src/app/components/admin/config/config.component.html + 25 + + Read the documentation about this setting + + + Enable + + src/app/components/admin/config/config.component.html + 34 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 125 + + Enable + + + Discard + + src/app/components/admin/config/config.component.html + 53 + + + src/app/components/document-detail/document-detail.component.html + 374 + + Discard + + + Save + + src/app/components/admin/config/config.component.html + 56 + + + src/app/components/admin/settings/settings.component.html + 362 + + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 26 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 52 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 28 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 20 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 40 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 76 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 77 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 31 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 57 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 116 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 185 + + + src/app/components/document-detail/document-detail.component.html + 367 + + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 83 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 21 + + + src/app/components/manage/saved-views/saved-views.component.html + 74 + + Save + + + Error retrieving config + + src/app/components/admin/config/config.component.ts + 103 + + Error retrieving config + + + Invalid JSON + + src/app/components/admin/config/config.component.ts + 129 + + Invalid JSON + + + Configuration updated + + src/app/components/admin/config/config.component.ts + 173 + + Configuration updated + + + An error occurred updating configuration + + src/app/components/admin/config/config.component.ts + 178 + + An error occurred updating configuration + + + File successfully updated + + src/app/components/admin/config/config.component.ts + 200 + + File successfully updated + + + An error occurred uploading file + + src/app/components/admin/config/config.component.ts + 205 + + An error occurred uploading file + + + Logs + + src/app/components/admin/logs/logs.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 290 + + + src/app/components/app-frame/app-frame.component.html + 293 + + Logs + + + Review the log files for the application and for email checking. + + src/app/components/admin/logs/logs.component.html + 4 + + Review the log files for the application and for email checking. + + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + + + Auto refresh + + src/app/components/admin/logs/logs.component.html + 21 + + + src/app/components/admin/tasks/tasks.component.html + 41 + + Auto refresh + + + Loading... + + src/app/components/admin/logs/logs.component.html + 38 + + + src/app/components/admin/logs/logs.component.html + 48 + + + src/app/components/admin/tasks/tasks.component.html + 48 + + + src/app/components/admin/trash/trash.component.html + 45 + + + src/app/components/admin/users-groups/users-groups.component.html + 92 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 35 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 50 + + + src/app/components/common/input/document-link/document-link.component.html + 58 + + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 23 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 110 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 128 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 10 + + + src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html + 18 + + + src/app/components/document-detail/document-detail.component.html + 387 + + + src/app/components/document-list/document-list.component.html + 134 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 26 + + + src/app/components/manage/mail/mail.component.html + 40 + + + src/app/components/manage/mail/mail.component.html + 123 + + + src/app/components/manage/mail/mail.component.html + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/saved-views/saved-views.component.html + 68 + + + src/app/components/manage/workflows/workflows.component.html + 28 + + Loading... + + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + + + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. + + src/app/components/admin/settings/settings.component.html + 4 + + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. + + + Start tour + + src/app/components/admin/settings/settings.component.html + 8 + + Start tour + + + System Status + + src/app/components/admin/settings/settings.component.html + 27 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 2 + + System Status + + + Open Django Admin + + src/app/components/admin/settings/settings.component.html + 30 + + Open Django Admin + + + General + + src/app/components/admin/settings/settings.component.html + 40 + + General + + + Appearance + + src/app/components/admin/settings/settings.component.html + 44 + + Appearance + + + Display language + + src/app/components/admin/settings/settings.component.html + 47 + + Display language + + + You need to reload the page after applying a new language. + + src/app/components/admin/settings/settings.component.html + 60 + + You need to reload the page after applying a new language. + + + Date display + + src/app/components/admin/settings/settings.component.html + 68 + + Date display + + + Date format + + src/app/components/admin/settings/settings.component.html + 85 + + Date format + + + Short: + + src/app/components/admin/settings/settings.component.html + 91,92 + + Short: + + + Medium: + + src/app/components/admin/settings/settings.component.html + 95,96 + + Medium: + + + Long: + + src/app/components/admin/settings/settings.component.html + 99,100 + + Long: + + + Items per page + + src/app/components/admin/settings/settings.component.html + 107 + + Items per page + + + Sidebar + + src/app/components/admin/settings/settings.component.html + 123 + + Sidebar + + + Use 'slim' sidebar (icons only) + + src/app/components/admin/settings/settings.component.html + 127 + + Use 'slim' sidebar (icons only) + + + Dark mode + + src/app/components/admin/settings/settings.component.html + 134 + + Dark mode + + + Use system settings + + src/app/components/admin/settings/settings.component.html + 137 + + Use system settings + + + Enable dark mode + + src/app/components/admin/settings/settings.component.html + 138 + + Enable dark mode + + + Invert thumbnails in dark mode + + src/app/components/admin/settings/settings.component.html + 139 + + Invert thumbnails in dark mode + + + Theme Color + + src/app/components/admin/settings/settings.component.html + 145 + + Theme Color + + + Reset + + src/app/components/admin/settings/settings.component.html + 152 + + Reset + + + Update checking + + src/app/components/admin/settings/settings.component.html + 157 + + Update checking + + + Enable update checking + + src/app/components/admin/settings/settings.component.html + 160 + + Enable update checking + + + What's this? + + src/app/components/admin/settings/settings.component.html + 161 + + + src/app/components/common/page-header/page-header.component.html + 9 + + + src/app/components/common/permissions-select/permissions-select.component.html + 4 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + + What's this? + + + Update checking works by pinging the public GitHub API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. + + src/app/components/admin/settings/settings.component.html + 165,167 + + Update checking works by pinging the public GitHub API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. + + + No tracking data is collected by the app in any way. + + src/app/components/admin/settings/settings.component.html + 169 + + No tracking data is collected by the app in any way. + + + Saved Views + + src/app/components/admin/settings/settings.component.html + 175 + + + src/app/components/app-frame/app-frame.component.html + 215 + + + src/app/components/app-frame/app-frame.component.html + 217 + + + src/app/components/manage/saved-views/saved-views.component.html + 2 + + Saved Views + + + Show warning when closing saved views with unsaved changes + + src/app/components/admin/settings/settings.component.html + 178 + + Show warning when closing saved views with unsaved changes + + + Show document counts in sidebar saved views + + src/app/components/admin/settings/settings.component.html + 179 + + Show document counts in sidebar saved views + + + Document editing + + src/app/components/admin/settings/settings.component.html + 185 + + Document editing + + + Use PDF viewer provided by the browser + + src/app/components/admin/settings/settings.component.html + 189 + + Use PDF viewer provided by the browser + + + This is usually faster for displaying large PDF documents, but it might not work on some browsers. + + src/app/components/admin/settings/settings.component.html + 189 + + This is usually faster for displaying large PDF documents, but it might not work on some browsers. + + + Default zoom + + src/app/components/admin/settings/settings.component.html + 195 + + Default zoom + + + Fit width + + src/app/components/admin/settings/settings.component.html + 199 + + Fit width + + + Fit page + + src/app/components/admin/settings/settings.component.html + 200 + + Fit page + + + Only applies to the Paperless-ngx PDF viewer. + + src/app/components/admin/settings/settings.component.html + 202 + + Only applies to the Paperless-ngx PDF viewer. + + + Automatically remove inbox tag(s) on save + + src/app/components/admin/settings/settings.component.html + 208 + + Automatically remove inbox tag(s) on save + + + Show document thumbnail during loading + + src/app/components/admin/settings/settings.component.html + 214 + + Show document thumbnail during loading + + + Global search + + src/app/components/admin/settings/settings.component.html + 218 + + + src/app/components/app-frame/global-search/global-search.component.ts + 122 + + Global search + + + Do not include advanced search results + + src/app/components/admin/settings/settings.component.html + 221 + + Do not include advanced search results + + + Full search links to + + src/app/components/admin/settings/settings.component.html + 227 + + Full search links to + + + Title and content search + + src/app/components/admin/settings/settings.component.html + 231 + + Title and content search + + + Advanced search + + src/app/components/admin/settings/settings.component.html + 232 + + + src/app/components/app-frame/global-search/global-search.component.html + 24 + + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 208 + + Advanced search + + + Bulk editing + + src/app/components/admin/settings/settings.component.html + 237 + + Bulk editing + + + Show confirmation dialogs + + src/app/components/admin/settings/settings.component.html + 240 + + Show confirmation dialogs + + + Apply on close + + src/app/components/admin/settings/settings.component.html + 241 + + Apply on close + + + Notes + + src/app/components/admin/settings/settings.component.html + 245 + + + src/app/components/document-list/document-list.component.html + 242 + + + src/app/data/document.ts + 58 + + + src/app/data/document.ts + 95 + + Notes + + + Enable notes + + src/app/components/admin/settings/settings.component.html + 248 + + Enable notes + + + Permissions + + src/app/components/admin/settings/settings.component.html + 259 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 14 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 51 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 2 + + + src/app/components/document-detail/document-detail.component.html + 343 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 78 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 101 + + + src/app/components/manage/mail/mail.component.html + 66 + + + src/app/components/manage/mail/mail.component.html + 78 + + + src/app/components/manage/mail/mail.component.html + 154 + + + src/app/components/manage/mail/mail.component.html + 166 + + + src/app/components/manage/management-list/management-list.component.html + 7 + + + src/app/components/manage/management-list/management-list.component.html + 7 + + + src/app/components/manage/management-list/management-list.component.html + 7 + + + src/app/components/manage/management-list/management-list.component.html + 7 + + Permissions + + + Default Permissions + + src/app/components/admin/settings/settings.component.html + 262 + + Default Permissions + + + Settings apply to this user account for objects (Tags, Mail Rules, etc. but not documents) created via the web UI. + + src/app/components/admin/settings/settings.component.html + 266,268 + + Settings apply to this user account for objects (Tags, Mail Rules, etc. but not documents) created via the web UI. + + + Default Owner + + src/app/components/admin/settings/settings.component.html + 273 + + Default Owner + + + Objects without an owner can be viewed and edited by all users + + src/app/components/admin/settings/settings.component.html + 277 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 32 + + Objects without an owner can be viewed and edited by all users + + + Default View Permissions + + src/app/components/admin/settings/settings.component.html + 282 + + Default View Permissions + + + Users: + + src/app/components/admin/settings/settings.component.html + 287 + + + src/app/components/admin/settings/settings.component.html + 314 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 278 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 297 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 364 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 383 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 38 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 57 + + Users: + + + Groups: + + src/app/components/admin/settings/settings.component.html + 297 + + + src/app/components/admin/settings/settings.component.html + 324 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 286 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 305 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 372 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 391 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 46 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 65 + + Groups: + + + Default Edit Permissions + + src/app/components/admin/settings/settings.component.html + 309 + + Default Edit Permissions + + + Edit permissions also grant viewing permissions + + src/app/components/admin/settings/settings.component.html + 333 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 311 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 397 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 71 + + Edit permissions also grant viewing permissions + + + Notifications + + src/app/components/admin/settings/settings.component.html + 341 + + + src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.html + 11 + + Notifications + + + Document processing + + src/app/components/admin/settings/settings.component.html + 344 + + Document processing + + + Show notifications when new documents are detected + + src/app/components/admin/settings/settings.component.html + 348 + + Show notifications when new documents are detected + + + Show notifications when document processing completes successfully + + src/app/components/admin/settings/settings.component.html + 349 + + Show notifications when document processing completes successfully + + + Show notifications when document processing fails + + src/app/components/admin/settings/settings.component.html + 350 + + Show notifications when document processing fails + + + Suppress notifications on dashboard + + src/app/components/admin/settings/settings.component.html + 351 + + Suppress notifications on dashboard + + + This will suppress all messages about document processing status on the dashboard. + + src/app/components/admin/settings/settings.component.html + 351 + + This will suppress all messages about document processing status on the dashboard. + + + Cancel + + src/app/components/admin/settings/settings.component.html + 361 + + + src/app/components/common/confirm-dialog/confirm-dialog.component.ts + 47 + + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 25 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 51 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 27 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 19 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 39 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 75 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 76 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 30 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 56 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 115 + + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 25 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 184 + + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 81 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 20 + + + src/app/components/manage/saved-views/saved-views.component.html + 73 + + Cancel + + + Use system language + + src/app/components/admin/settings/settings.component.ts + 78 + + Use system language + + + Use date format of display language + + src/app/components/admin/settings/settings.component.ts + 81 + + Use date format of display language + + + Error retrieving users + + src/app/components/admin/settings/settings.component.ts + 226 + + + src/app/components/admin/users-groups/users-groups.component.ts + 75 + + Error retrieving users + + + Error retrieving groups + + src/app/components/admin/settings/settings.component.ts + 245 + + + src/app/components/admin/users-groups/users-groups.component.ts + 89 + + Error retrieving groups + + + Settings were saved successfully. + + src/app/components/admin/settings/settings.component.ts + 548 + + Settings were saved successfully. + + + Settings were saved successfully. Reload is required to apply some changes. + + src/app/components/admin/settings/settings.component.ts + 552 + + Settings were saved successfully. Reload is required to apply some changes. + + + Reload now + + src/app/components/admin/settings/settings.component.ts + 553 + + Reload now + + + An error occurred while saving settings. + + src/app/components/admin/settings/settings.component.ts + 563 + + + src/app/components/app-frame/app-frame.component.ts + 180 + + An error occurred while saving settings. + + + File Tasks + + src/app/components/admin/tasks/tasks.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 278 + + + src/app/components/app-frame/app-frame.component.html + 280 + + File Tasks + + + Clear selection + + src/app/components/admin/tasks/tasks.component.html + 9 + + + src/app/components/admin/trash/trash.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 153 + + + src/app/components/manage/management-list/management-list.component.html + 4 + + + src/app/components/manage/management-list/management-list.component.html + 4 + + + src/app/components/manage/management-list/management-list.component.html + 4 + + + src/app/components/manage/management-list/management-list.component.html + 4 + + Clear selection + + + Filter by + + src/app/components/admin/tasks/tasks.component.html + 16 + + Filter by + + + Name + + src/app/components/admin/tasks/tasks.component.html + 61 + + + src/app/components/admin/tasks/tasks.component.ts + 45 + + + src/app/components/admin/trash/trash.component.html + 35 + + + src/app/components/admin/users-groups/users-groups.component.html + 21 + + + src/app/components/admin/users-groups/users-groups.component.html + 58 + + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 12 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 11 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 12 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 11 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 13 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 8 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 17 + + + src/app/components/manage/mail/mail.component.html + 30 + + + src/app/components/manage/mail/mail.component.html + 111 + + + src/app/components/manage/management-list/management-list.component.html + 21 + + + src/app/components/manage/management-list/management-list.component.html + 21 + + + src/app/components/manage/management-list/management-list.component.html + 21 + + + src/app/components/manage/management-list/management-list.component.html + 21 + + + src/app/components/manage/management-list/management-list.component.html + 38 + + + src/app/components/manage/management-list/management-list.component.html + 38 + + + src/app/components/manage/management-list/management-list.component.html + 38 + + + src/app/components/manage/management-list/management-list.component.html + 38 + + + src/app/components/manage/workflows/workflows.component.html + 17 + + Name + + + Created + + src/app/components/admin/tasks/tasks.component.html + 62 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 8 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 94 + + + src/app/components/document-list/document-list.component.html + 269 + + + src/app/data/document.ts + 34 + + + src/app/data/document.ts + 92 + + Created + + + Results + + src/app/components/admin/tasks/tasks.component.html + 64 + + Results + + + Info + + src/app/components/admin/tasks/tasks.component.html + 66 + + Info + + + Actions + + src/app/components/admin/tasks/tasks.component.html + 67 + + + src/app/components/admin/trash/trash.component.html + 37 + + + src/app/components/admin/users-groups/users-groups.component.html + 23 + + + src/app/components/admin/users-groups/users-groups.component.html + 61 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 67 + + + src/app/components/document-detail/document-detail.component.html + 50 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 87 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 19 + + + src/app/components/manage/mail/mail.component.html + 33 + + + src/app/components/manage/mail/mail.component.html + 116 + + + src/app/components/manage/management-list/management-list.component.html + 44 + + + src/app/components/manage/management-list/management-list.component.html + 44 + + + src/app/components/manage/management-list/management-list.component.html + 44 + + + src/app/components/manage/management-list/management-list.component.html + 44 + + + src/app/components/manage/saved-views/saved-views.component.html + 28 + + + src/app/components/manage/workflows/workflows.component.html + 21 + + Actions + + + click for full output + + src/app/components/admin/tasks/tasks.component.html + 97 + + click for full output + + + Dismiss + + src/app/components/admin/tasks/tasks.component.html + 110 + + + src/app/components/admin/tasks/tasks.component.ts + 155 + + Dismiss + + + Open Document + + src/app/components/admin/tasks/tasks.component.html + 115 + + Open Document + + + {VAR_PLURAL, plural, =1 {One task} other { total tasks}} + + src/app/components/admin/tasks/tasks.component.html + 134 + + {VAR_PLURAL, plural, =1 {One task} other { total tasks}} + + +  ( selected) + + src/app/components/admin/tasks/tasks.component.html + 136 + +  ( selected) + + + Failed + + src/app/components/admin/tasks/tasks.component.html + 148,150 + + Failed + + + Complete + + src/app/components/admin/tasks/tasks.component.html + 156,158 + + Complete + + + Started + + src/app/components/admin/tasks/tasks.component.html + 164,166 + + Started + + + Queued + + src/app/components/admin/tasks/tasks.component.html + 172,174 + + Queued + + + Result + + src/app/components/admin/tasks/tasks.component.ts + 46 + + Result + + + Dismiss selected + + src/app/components/admin/tasks/tasks.component.ts + 110 + + Dismiss selected + + + Dismiss all + + src/app/components/admin/tasks/tasks.component.ts + 111 + + Dismiss all + + + Confirm Dismiss All + + src/app/components/admin/tasks/tasks.component.ts + 152 + + Confirm Dismiss All + + + Dismiss all tasks? + + src/app/components/admin/tasks/tasks.component.ts + 153 + + Dismiss all tasks? + + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + + + queued + + src/app/components/admin/tasks/tasks.component.ts + 246 + + queued + + + started + + src/app/components/admin/tasks/tasks.component.ts + 248 + + started + + + completed + + src/app/components/admin/tasks/tasks.component.ts + 250 + + completed + + + failed + + src/app/components/admin/tasks/tasks.component.ts + 252 + + failed + + + Trash + + src/app/components/admin/trash/trash.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 238 + + + src/app/components/app-frame/app-frame.component.html + 241 + + Trash + + + Manage trashed documents that are pending deletion. + + src/app/components/admin/trash/trash.component.html + 4 + + Manage trashed documents that are pending deletion. + + + Restore selected + + src/app/components/admin/trash/trash.component.html + 11 + + Restore selected + + + Delete selected + + src/app/components/admin/trash/trash.component.html + 14 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + + Delete selected + + + Empty trash + + src/app/components/admin/trash/trash.component.html + 17 + + Empty trash + + + Remaining + + src/app/components/admin/trash/trash.component.html + 36 + + Remaining + + + days + + src/app/components/admin/trash/trash.component.html + 63 + + days + + + Restore + + src/app/components/admin/trash/trash.component.html + 71 + + + src/app/components/admin/trash/trash.component.html + 78 + + Restore + + + Delete + + src/app/components/admin/trash/trash.component.html + 72 + + + src/app/components/admin/trash/trash.component.html + 81 + + + src/app/components/admin/trash/trash.component.ts + 82 + + + src/app/components/admin/trash/trash.component.ts + 116 + + + src/app/components/admin/users-groups/users-groups.component.html + 38 + + + src/app/components/admin/users-groups/users-groups.component.html + 76 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 27 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 87 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 45 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 + + + src/app/components/common/permissions-select/permissions-select.component.html + 19 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 36 + + + src/app/components/document-detail/document-detail.component.html + 24 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 145 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 43 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 55 + + + src/app/components/manage/mail/mail.component.html + 67 + + + src/app/components/manage/mail/mail.component.html + 81 + + + src/app/components/manage/mail/mail.component.html + 155 + + + src/app/components/manage/mail/mail.component.html + 169 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 121 + + + src/app/components/manage/management-list/management-list.component.html + 121 + + + src/app/components/manage/management-list/management-list.component.html + 121 + + + src/app/components/manage/management-list/management-list.component.html + 121 + + + src/app/components/manage/management-list/management-list.component.html + 133 + + + src/app/components/manage/management-list/management-list.component.html + 133 + + + src/app/components/manage/management-list/management-list.component.html + 133 + + + src/app/components/manage/management-list/management-list.component.html + 133 + + + src/app/components/manage/management-list/management-list.component.ts + 247 + + + src/app/components/manage/saved-views/saved-views.component.html + 30 + + + src/app/components/manage/workflows/workflows.component.html + 55 + + + src/app/components/manage/workflows/workflows.component.html + 66 + + Delete + + + {VAR_PLURAL, plural, =1 {One document in trash} other { total documents in trash}} + + src/app/components/admin/trash/trash.component.html + 94 + + {VAR_PLURAL, plural, =1 {One document in trash} other { total documents in trash}} + + + Confirm delete + + src/app/components/admin/trash/trash.component.ts + 78 + + + src/app/components/admin/trash/trash.component.ts + 110 + + + src/app/components/manage/management-list/management-list.component.ts + 243 + + + src/app/components/manage/management-list/management-list.component.ts + 366 + + Confirm delete + + + This operation will permanently delete this document. + + src/app/components/admin/trash/trash.component.ts + 79 + + This operation will permanently delete this document. + + + This operation cannot be undone. + + src/app/components/admin/trash/trash.component.ts + 80 + + + src/app/components/admin/trash/trash.component.ts + 114 + + + src/app/components/admin/users-groups/users-groups.component.ts + 145 + + + src/app/components/admin/users-groups/users-groups.component.ts + 198 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 104 + + + src/app/components/manage/mail/mail.component.ts + 192 + + + src/app/components/manage/mail/mail.component.ts + 293 + + + src/app/components/manage/management-list/management-list.component.ts + 368 + + + src/app/components/manage/workflows/workflows.component.ts + 133 + + This operation cannot be undone. + + + Document "" deleted + + src/app/components/admin/trash/trash.component.ts + 90 + + Document "" deleted + + + Error deleting document "" + + src/app/components/admin/trash/trash.component.ts + 97 + + Error deleting document "" + + + This operation will permanently delete the selected documents. + + src/app/components/admin/trash/trash.component.ts + 112 + + This operation will permanently delete the selected documents. + + + This operation will permanently delete all documents in the trash. + + src/app/components/admin/trash/trash.component.ts + 113 + + This operation will permanently delete all documents in the trash. + + + Document(s) deleted + + src/app/components/admin/trash/trash.component.ts + 124 + + Document(s) deleted + + + Error deleting document(s) + + src/app/components/admin/trash/trash.component.ts + 131 + + Error deleting document(s) + + + Document "" restored + + src/app/components/admin/trash/trash.component.ts + 144 + + Document "" restored + + + Error restoring document "" + + src/app/components/admin/trash/trash.component.ts + 155 + + Error restoring document "" + + + Document(s) restored + + src/app/components/admin/trash/trash.component.ts + 167 + + Document(s) restored + + + Error restoring document(s) + + src/app/components/admin/trash/trash.component.ts + 173 + + Error restoring document(s) + + + Users & Groups + + src/app/components/admin/users-groups/users-groups.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 269 + + + src/app/components/app-frame/app-frame.component.html + 271 + + Users & Groups + + + Create, delete and edit users and groups. + + src/app/components/admin/users-groups/users-groups.component.html + 4 + + Create, delete and edit users and groups. + + + Users + + src/app/components/admin/users-groups/users-groups.component.html + 12 + + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 76 + + Users + + + Add User + + src/app/components/admin/users-groups/users-groups.component.html + 14 + + Add User + + + Username + + src/app/components/admin/users-groups/users-groups.component.html + 20 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 19 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 13 + + + src/app/components/manage/mail/mail.component.html + 32 + + Username + + + Groups + + src/app/components/admin/users-groups/users-groups.component.html + 22 + + + src/app/components/admin/users-groups/users-groups.component.html + 50 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 34 + + Groups + + + Edit + + src/app/components/admin/users-groups/users-groups.component.html + 35 + + + src/app/components/admin/users-groups/users-groups.component.html + 73 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 53 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 42 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 52 + + + src/app/components/manage/mail/mail.component.html + 65 + + + src/app/components/manage/mail/mail.component.html + 75 + + + src/app/components/manage/mail/mail.component.html + 153 + + + src/app/components/manage/mail/mail.component.html + 163 + + + src/app/components/manage/management-list/management-list.component.html + 120 + + + src/app/components/manage/management-list/management-list.component.html + 120 + + + src/app/components/manage/management-list/management-list.component.html + 120 + + + src/app/components/manage/management-list/management-list.component.html + 120 + + + src/app/components/manage/management-list/management-list.component.html + 130 + + + src/app/components/manage/management-list/management-list.component.html + 130 + + + src/app/components/manage/management-list/management-list.component.html + 130 + + + src/app/components/manage/management-list/management-list.component.html + 130 + + + src/app/components/manage/workflows/workflows.component.html + 54 + + + src/app/components/manage/workflows/workflows.component.html + 63 + + Edit + + + Add Group + + src/app/components/admin/users-groups/users-groups.component.html + 52 + + Add Group + + + No groups defined + + src/app/components/admin/users-groups/users-groups.component.html + 84 + + No groups defined + + + Password has been changed, you will be logged out momentarily. + + src/app/components/admin/users-groups/users-groups.component.ts + 116 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 201 + + Password has been changed, you will be logged out momentarily. + + + Saved user "". + + src/app/components/admin/users-groups/users-groups.component.ts + 125 + + Saved user "". + + + Error saving user. + + src/app/components/admin/users-groups/users-groups.component.ts + 135 + + Error saving user. + + + Confirm delete user account + + src/app/components/admin/users-groups/users-groups.component.ts + 143 + + Confirm delete user account + + + This operation will permanently delete this user account. + + src/app/components/admin/users-groups/users-groups.component.ts + 144 + + This operation will permanently delete this user account. + + + Proceed + + src/app/components/admin/users-groups/users-groups.component.ts + 147 + + + src/app/components/admin/users-groups/users-groups.component.ts + 200 + + + src/app/components/document-detail/document-detail.component.ts + 1028 + + + src/app/components/document-detail/document-detail.component.ts + 1393 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 798 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 831 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 850 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 106 + + + src/app/components/manage/mail/mail.component.ts + 194 + + + src/app/components/manage/mail/mail.component.ts + 295 + + + src/app/components/manage/management-list/management-list.component.ts + 370 + + + src/app/components/manage/workflows/workflows.component.ts + 135 + + Proceed + + + Deleted user "" + + src/app/components/admin/users-groups/users-groups.component.ts + 153 + + Deleted user "" + + + Error deleting user "". + + src/app/components/admin/users-groups/users-groups.component.ts + 160 + + Error deleting user "". + + + Saved group "". + + src/app/components/admin/users-groups/users-groups.component.ts + 180 + + Saved group "". + + + Error saving group. + + src/app/components/admin/users-groups/users-groups.component.ts + 188 + + Error saving group. + + + Confirm delete user group + + src/app/components/admin/users-groups/users-groups.component.ts + 196 + + Confirm delete user group + + + This operation will permanently delete this user group. + + src/app/components/admin/users-groups/users-groups.component.ts + 197 + + This operation will permanently delete this user group. + + + Deleted group "" + + src/app/components/admin/users-groups/users-groups.component.ts + 206 + + Deleted group "" + + + Error deleting group "". + + src/app/components/admin/users-groups/users-groups.component.ts + 213 + + Error deleting group "". + + + by Paperless-ngx + + src/app/components/app-frame/app-frame.component.html + 20 + + by Paperless-ngx + + + Logged in as + + src/app/components/app-frame/app-frame.component.html + 43 + + Logged in as + + + My Profile + + src/app/components/app-frame/app-frame.component.html + 47 + + My Profile + + + Logout + + src/app/components/app-frame/app-frame.component.html + 54 + + Logout + + + Documentation + + src/app/components/app-frame/app-frame.component.html + 59 + + + src/app/components/app-frame/app-frame.component.html + 299 + + + src/app/components/app-frame/app-frame.component.html + 302 + + Documentation + + + Saved views + + src/app/components/app-frame/app-frame.component.html + 101 + + + src/app/components/app-frame/app-frame.component.html + 106 + + Saved views + + + Open documents + + src/app/components/app-frame/app-frame.component.html + 141 + + Open documents + + + Close all + + src/app/components/app-frame/app-frame.component.html + 161 + + + src/app/components/app-frame/app-frame.component.html + 163 + + Close all + + + Manage + + src/app/components/app-frame/app-frame.component.html + 172 + + Manage + + + Correspondents + + src/app/components/app-frame/app-frame.component.html + 178 + + + src/app/components/app-frame/app-frame.component.html + 180 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 107 + + Correspondents + + + Tags + + src/app/components/app-frame/app-frame.component.html + 185 + + + src/app/components/app-frame/app-frame.component.html + 188 + + + src/app/components/common/input/tags/tags.component.ts + 80 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 94 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 5 + + + src/app/components/document-list/document-list.component.html + 224 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 39 + + + src/app/data/document.ts + 42 + + Tags + + + Document Types + + src/app/components/app-frame/app-frame.component.html + 194 + + + src/app/components/app-frame/app-frame.component.html + 196 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 120 + + Document Types + + + Storage Paths + + src/app/components/app-frame/app-frame.component.html + 201 + + + src/app/components/app-frame/app-frame.component.html + 203 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 133 + + Storage Paths + + + Custom Fields + + src/app/components/app-frame/app-frame.component.html + 208 + + + src/app/components/app-frame/app-frame.component.html + 210 + + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html + 4 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 2 + + Custom Fields + + + Workflows + + src/app/components/app-frame/app-frame.component.html + 224 + + + src/app/components/app-frame/app-frame.component.html + 226 + + + src/app/components/manage/workflows/workflows.component.html + 2 + + Workflows + + + Mail + + src/app/components/app-frame/app-frame.component.html + 231 + + + src/app/components/app-frame/app-frame.component.html + 234 + + Mail + + + Administration + + src/app/components/app-frame/app-frame.component.html + 249 + + Administration + + + Configuration + + src/app/components/app-frame/app-frame.component.html + 262 + + + src/app/components/app-frame/app-frame.component.html + 264 + + Configuration + + + GitHub + + src/app/components/app-frame/app-frame.component.html + 309 + + GitHub + + + is available. + + src/app/components/app-frame/app-frame.component.html + 318,319 + + is available. + + + Click to view. + + src/app/components/app-frame/app-frame.component.html + 319 + + Click to view. + + + Paperless-ngx can automatically check for updates + + src/app/components/app-frame/app-frame.component.html + 323 + + Paperless-ngx can automatically check for updates + + + How does this work? + + src/app/components/app-frame/app-frame.component.html + 330,332 + + How does this work? + + + Update available + + src/app/components/app-frame/app-frame.component.html + 343 + + Update available + + + Sidebar views updated + + src/app/components/app-frame/app-frame.component.ts + 264 + + Sidebar views updated + + + Error updating sidebar views + + src/app/components/app-frame/app-frame.component.ts + 267 + + Error updating sidebar views + + + An error occurred while saving update checking settings. + + src/app/components/app-frame/app-frame.component.ts + 288 + + An error occurred while saving update checking settings. + + + Search + + src/app/components/app-frame/global-search/global-search.component.html + 8 + + + src/app/components/app-frame/global-search/global-search.component.html + 26 + + Search + + + Open + + src/app/components/app-frame/global-search/global-search.component.html + 53 + + + src/app/components/app-frame/global-search/global-search.component.html + 56 + + + src/app/components/app-frame/global-search/global-search.component.html + 59 + + + src/app/components/app-frame/global-search/global-search.component.html + 76 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 72 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 143 + + Open + + + Filter documents + + src/app/components/app-frame/global-search/global-search.component.html + 62 + + Filter documents + + + Download + + src/app/components/app-frame/global-search/global-search.component.html + 73 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 104 + + + src/app/components/document-detail/document-detail.component.html + 34 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 117 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 78 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 149 + + Download + + + No results + + src/app/components/app-frame/global-search/global-search.component.html + 87 + + No results + + + Documents + + src/app/components/app-frame/global-search/global-search.component.html + 90 + + Documents + + + Saved Views + + src/app/components/app-frame/global-search/global-search.component.html + 96 + + Saved Views + + + Tags + + src/app/components/app-frame/global-search/global-search.component.html + 103 + + Tags + + + Correspondents + + src/app/components/app-frame/global-search/global-search.component.html + 110 + + Correspondents + + + Document types + + src/app/components/app-frame/global-search/global-search.component.html + 117 + + Document types + + + Storage paths + + src/app/components/app-frame/global-search/global-search.component.html + 124 + + Storage paths + + + Users + + src/app/components/app-frame/global-search/global-search.component.html + 131 + + Users + + + Groups + + src/app/components/app-frame/global-search/global-search.component.html + 138 + + Groups + + + Custom fields + + src/app/components/app-frame/global-search/global-search.component.html + 145 + + Custom fields + + + Mail accounts + + src/app/components/app-frame/global-search/global-search.component.html + 152 + + Mail accounts + + + Mail rules + + src/app/components/app-frame/global-search/global-search.component.html + 159 + + Mail rules + + + Workflows + + src/app/components/app-frame/global-search/global-search.component.html + 166 + + Workflows + + + Successfully updated object. + + src/app/components/app-frame/global-search/global-search.component.ts + 211 + + + src/app/components/app-frame/global-search/global-search.component.ts + 249 + + Successfully updated object. + + + Error occurred saving object. + + src/app/components/app-frame/global-search/global-search.component.ts + 214 + + + src/app/components/app-frame/global-search/global-search.component.ts + 252 + + Error occurred saving object. + + + Clear All + + src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.html + 16 + + Clear All + + + No notifications + + src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.html + 20 + + No notifications + + + Clear + + src/app/components/common/clearable-badge/clearable-badge.component.html + 2 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + + Clear + + + Are you sure? + + src/app/components/common/confirm-button/confirm-button.component.ts + 22 + + Are you sure? + + + Confirmation + + src/app/components/common/confirm-dialog/confirm-dialog.component.ts + 23 + + Confirmation + + + Confirm + + src/app/components/common/confirm-dialog/confirm-dialog.component.ts + 35 + + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 26 + + + src/app/components/document-detail/document-detail.component.ts + 981 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 441 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 481 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 519 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 557 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 619 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 752 + + Confirm + + + Documents: + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 9 + + Documents: + + + Use metadata from: + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 22 + + Use metadata from: + + + Regenerate all metadata + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 24 + + Regenerate all metadata + + + Try to include archive version in merge for non-PDF files + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 32 + + Try to include archive version in merge for non-PDF files + + + Delete original documents after successful merge + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 36 + + Delete original documents after successful merge + + + Note that only PDFs will be included. + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 39 + + Note that only PDFs will be included. + + + Note that only PDFs will be rotated. + + src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.html + 25 + + Note that only PDFs will be rotated. + + + View + + src/app/components/common/custom-field-display/custom-field-display.component.html + 22 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 34 + + + src/app/components/common/permissions-select/permissions-select.component.html + 20 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 75 + + View + + + Search fields + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html + 10 + + Search fields + + + Create new field + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html + 21 + + Create new field + + + Saved field "". + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts + 130 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 85 + + Saved field "". + + + Error saving field. + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts + 139 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 94 + + Error saving field. + + + Today + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 47 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 52 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 76 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 128 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 152 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 111 + + + src/app/components/common/input/date/date.component.html + 21 + + Today + + + Close + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 48 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 53 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 77 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 129 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 153 + + + src/app/components/common/input/date/date.component.html + 22 + + + src/app/components/document-detail/document-detail.component.html + 107 + + + src/app/guards/dirty-saved-view.guard.ts + 35 + + Close + + + True + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 55 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 95 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 101 + + True + + + False + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 56 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 96 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 102 + + False + + + Search docs... + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 70 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 118 + + Search docs... + + + Any + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 150 + + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 17 + + Any + + + All + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 152 + + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 15 + + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 16 + + + src/app/components/common/permissions-select/permissions-select.component.html + 16 + + + src/app/components/common/permissions-select/permissions-select.component.html + 27 + + + src/app/components/document-list/document-list.component.html + 30 + + All + + + Not + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 155 + + Not + + + Add query + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 174 + + Add query + + + Add expression + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 177 + + Add expression + + + Relative dates + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 25 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 101 + + Relative dates + + + From + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 44 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 120 + + From + + + To + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 68 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 144 + + To + + + Added + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 84 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 90 + + + src/app/components/document-list/document-list.component.html + 278 + + + src/app/data/document.ts + 38 + + + src/app/data/document.ts + 93 + + Added + + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + now + + + Within 1 week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 81 + + Within 1 week + + + Within 1 month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 86 + + Within 1 month + + + Within 3 months + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 91 + + Within 3 months + + + Within 1 year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 96 + + Within 1 year + + + This year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 101 + + This year + + + This month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 106 + + This month + + + Yesterday + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 116 + + + src/app/pipes/custom-date.pipe.ts + 29 + + Yesterday + + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + + + Matching algorithm + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 14 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 64 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 18 + + Matching algorithm + + + Matching pattern + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 15 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 16 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 66 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 20 + + Matching pattern + + + Case insensitive + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 16 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 17 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 67 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 21 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 173 + + Case insensitive + + + Create new correspondent + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts + 43 + + Create new correspondent + + + Edit correspondent + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts + 47 + + Edit correspondent + + + Data type + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 12 + + Data type + + + Data type cannot be changed after a field is created + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 14 + + Data type cannot be changed after a field is created + + + Add option + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 20 + + Add option + + + Default Currency + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 44 + + Default Currency + + + 3-character currency code + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 44 + + 3-character currency code + + + Use locale + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 44 + + Use locale + + + Create new custom field + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts + 118 + + Create new custom field + + + Edit custom field + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts + 122 + + Edit custom field + + + Create new document type + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts + 43 + + Create new document type + + + Edit document type + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts + 47 + + Edit document type + + + Create new item + + src/app/components/common/edit-dialog/edit-dialog.component.ts + 121 + + Create new item + + + Edit item + + src/app/components/common/edit-dialog/edit-dialog.component.ts + 125 + + Edit item + + + Create new user group + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts + 36 + + Create new user group + + + Edit user group + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts + 40 + + Edit user group + + + IMAP Server + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 14 + + IMAP Server + + + IMAP Port + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 15 + + IMAP Port + + + IMAP Security + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 16 + + IMAP Security + + + Password + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 20 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 15 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 20 + + Password + + + Password is token + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 21 + + Password is token + + + Check if the password above is a token used for authentication + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 21 + + Check if the password above is a token used for authentication + + + Character Set + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 22 + + Character Set + + + Test + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 37 + + Test + + + No encryption + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 20 + + No encryption + + + SSL + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 21 + + SSL + + + STARTTLS + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 22 + + STARTTLS + + + Create new mail account + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 54 + + Create new mail account + + + Edit mail account + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 58 + + Edit mail account + + + Successfully connected to the mail server + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 103 + + Successfully connected to the mail server + + + Unable to connect to the mail server + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 104 + + Unable to connect to the mail server + + + Account + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 16 + + + src/app/components/manage/mail/mail.component.html + 113 + + Account + + + Order + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 19 + + Order + + + Enabled + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 22 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 19 + + + src/app/components/manage/mail/mail.component.html + 137 + + + src/app/components/manage/workflows/workflows.component.html + 41 + + Enabled + + + Paperless will only process mails that match all of the criteria specified below. + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 27 + + Paperless will only process mails that match all of the criteria specified below. + + + Folder + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 29 + + Folder + + + Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server. + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 29 + + Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server. + + + Maximum age (days) + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 30 + + Maximum age (days) + + + Filter from + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 33 + + Filter from + + + Filter to + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 34 + + Filter to + + + Filter subject + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 35 + + Filter subject + + + Filter body + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 36 + + Filter body + + + Consumption scope + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 42 + + Consumption scope + + + See docs for .eml processing requirements + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 42 + + See docs for .eml processing requirements + + + Attachment type + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 43 + + Attachment type + + + PDF layout + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 44 + + PDF layout + + + Include only files matching + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 47 + + Include only files matching + + + Optional. Wildcards e.g. *.pdf or *invoice* allowed. Can be comma-separated list. Case insensitive. + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 47 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 48 + + Optional. Wildcards e.g. *.pdf or *invoice* allowed. Can be comma-separated list. Case insensitive. + + + Exclude files matching + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 48 + + Exclude files matching + + + Action + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 54 + + Action + + + Only performed if the mail is processed. + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 54 + + Only performed if the mail is processed. + + + Action parameter + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 56 + + Action parameter + + + Assign title from + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 58 + + Assign title from + + + Assign owner from rule + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 59 + + Assign owner from rule + + + Assign document type + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 63 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 265 + + Assign document type + + + Assign correspondent from + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 64 + + Assign correspondent from + + + Assign correspondent + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 66 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 266 + + Assign correspondent + + + Error + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 73 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 113 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 186 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 220 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 254 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 264 + + + src/app/components/common/toast/toast.component.html + 30 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + + Error + + + Only process attachments + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 38 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 49 + + Only process attachments + + + Process all files, including 'inline' attachments + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 42 + + Process all files, including 'inline' attachments + + + Process message as .eml + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 53 + + Process message as .eml + + + Process message as .eml and attachments separately + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 57 + + Process message as .eml and attachments separately + + + System default + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 64 + + System default + + + Text, then HTML + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 68 + + Text, then HTML + + + HTML, then text + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 72 + + HTML, then text + + + HTML only + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 76 + + HTML only + + + Text only + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 80 + + Text only + + + Move to specified folder + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 91 + + Move to specified folder + + + Mark as read, don't process read mails + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 95 + + Mark as read, don't process read mails + + + Flag the mail, don't process flagged mails + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 99 + + Flag the mail, don't process flagged mails + + + Tag the mail with specified tag, don't process tagged mails + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 103 + + Tag the mail with specified tag, don't process tagged mails + + + Use subject as title + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 110 + + Use subject as title + + + Use attachment filename as title + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 114 + + Use attachment filename as title + + + Do not assign title from this rule + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 118 + + Do not assign title from this rule + + + Do not assign a correspondent + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 125 + + Do not assign a correspondent + + + Use mail address + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 129 + + Use mail address + + + Use name (or mail address if not available) + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 133 + + Use name (or mail address if not available) + + + Use correspondent selected below + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 137 + + Use correspondent selected below + + + Create new mail rule + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 191 + + Create new mail rule + + + Edit mail rule + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 195 + + Edit mail rule + + + Path + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 13 + + + src/app/components/manage/storage-path-list/storage-path-list.component.ts + 49 + + Path + + + See <a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'>the documentation</a>. + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 13 + + See <a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'>the documentation</a>. + + + Preview + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 18 + + + src/app/components/document-detail/document-detail.component.html + 309 + + Preview + + + Path test failed + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 30 + + Path test failed + + + No document selected + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 32 + + No document selected + + + Search for a document + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 38 + + Search for a document + + + No documents found + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 39 + + + src/app/components/common/input/document-link/document-link.component.ts + 72 + + No documents found + + + Create new storage path + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts + 82 + + Create new storage path + + + Edit storage path + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts + 86 + + Edit storage path + + + Color + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 13 + + + src/app/components/manage/tag-list/tag-list.component.ts + 49 + + Color + + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + + + Inbox tag + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 17 + + Inbox tag + + + Inbox tags are automatically assigned to all consumed documents. + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 17 + + Inbox tags are automatically assigned to all consumed documents. + + + Create new tag + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts + 51 + + Create new tag + + + Edit tag + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts + 55 + + Edit tag + + + Email + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 14 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 136 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 10 + + + src/app/components/document-detail/document-detail.component.html + 92 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + + Email + + + First name + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 16 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 30 + + First name + + + Last name + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 17 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 31 + + Last name + + + Active + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 22 + + Active + + + Admin + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 26 + + Admin + + + Access logs, Django backend + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 26 + + Access logs, Django backend + + + Superuser + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 30 + + Superuser + + + (Grants all permissions and can view objects) + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 30 + + (Grants all permissions and can view objects) + + + Two-factor Authentication + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 37 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 103 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 139 + + Two-factor Authentication + + + Disable Two-factor Authentication + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 39 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 41 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 170 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 172 + + Disable Two-factor Authentication + + + Create new user account + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 72 + + Create new user account + + + Edit user account + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 76 + + Edit user account + + + Totp deactivated + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 132 + + Totp deactivated + + + Totp deactivation failed + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 135 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 140 + + Totp deactivation failed + + + Sort order + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 16 + + + src/app/components/manage/workflows/workflows.component.html + 18 + + Sort order + + + Triggers + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 25 + + + src/app/components/manage/workflows/workflows.component.html + 20 + + Triggers + + + Trigger Workflow On: + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 31 + + Trigger Workflow On: + + + Add Trigger + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 33 + + Add Trigger + + + Apply Actions: + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 73 + + Apply Actions: + + + Add Action + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 75 + + Add Action + + + Trigger type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 123 + + Trigger type + + + Set scheduled trigger offset and which date field to use. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 125 + + Set scheduled trigger offset and which date field to use. + + + Offset days + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 130 + + Offset days + + + Positive values will trigger after the date, negative values before. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 134 + + Positive values will trigger after the date, negative values before. + + + Relative to + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 139 + + Relative to + + + Custom field + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 143 + + Custom field + + + Custom field to use for date. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 143 + + Custom field to use for date. + + + Recurring + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 149 + + Recurring + + + Trigger is recurring. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 149 + + Trigger is recurring. + + + Recurring interval days + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 153 + + Recurring interval days + + + Repeat the trigger every n days. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 153 + + Repeat the trigger every n days. + + + Trigger for documents that match all filters specified below. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 158 + + Trigger for documents that match all filters specified below. + + + Filter filename + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 161 + + Filter filename + + + Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 161 + + Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. + + + Filter sources + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 163 + + Filter sources + + + Filter path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 164 + + Filter path + + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 164 + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. + + + Filter mail rule + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 165 + + Filter mail rule + + + Apply to documents consumed via this mail rule. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 165 + + Apply to documents consumed via this mail rule. + + + Content matching algorithm + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 168 + + Content matching algorithm + + + Content matching pattern + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 170 + + Content matching pattern + + + Advanced Filters + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 183 + + Advanced Filters + + + Add filter + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 190 + + Add filter + + + No advanced workflow filters defined. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 195 + + No advanced workflow filters defined. + + + Complete the custom field query configuration. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 224,226 + + Complete the custom field query configuration. + + + Action type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 258 + + Action type + + + Assign title + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 263 + + Assign title + + + Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 263 + + Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. + + + Assign tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 264 + + Assign tags + + + Assign storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 267 + + Assign storage path + + + Assign custom fields + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 268 + + Assign custom fields + + + Assign owner + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 272 + + Assign owner + + + Assign view permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 274 + + Assign view permissions + + + Assign edit permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 293 + + Assign edit permissions + + + Remove tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 320 + + Remove tags + + + Remove all + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 321 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 327 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 333 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 339 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 345 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 352 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 358 + + Remove all + + + Remove correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 326 + + Remove correspondents + + + Remove document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 332 + + Remove document types + + + Remove storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 338 + + Remove storage paths + + + Remove custom fields + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 344 + + Remove custom fields + + + Remove owners + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 351 + + Remove owners + + + Remove permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 357 + + Remove permissions + + + View permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 360 + + View permissions + + + Edit permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 379 + + Edit permissions + + + Email subject + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 407 + + Email subject + + + Email body + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 408 + + Email body + + + Email recipients + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 409 + + Email recipients + + + Attach document + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 410 + + Attach document + + + Webhook url + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 418 + + Webhook url + + + Use parameters for webhook body + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 420 + + Use parameters for webhook body + + + Send webhook payload as JSON + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 421 + + Send webhook payload as JSON + + + Webhook params + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 424 + + Webhook params + + + Webhook body + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 426 + + Webhook body + + + Webhook headers + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 428 + + Webhook headers + + + Include document + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 429 + + Include document + + + Consume Folder + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 71 + + Consume Folder + + + API Upload + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 75 + + API Upload + + + Mail Fetch + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 79 + + Mail Fetch + + + Web UI + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 83 + + Web UI + + + Modified + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 98 + + + src/app/data/document.ts + 94 + + Modified + + + Custom Field + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 102 + + Custom Field + + + Consumption Started + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 109 + + Consumption Started + + + Document Added + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 113 + + Document Added + + + Document Updated + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 117 + + Document Updated + + + Scheduled + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 121 + + Scheduled + + + Assignment + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 128 + + Assignment + + + Removal + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 132 + + Removal + + + Webhook + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 140 + + Webhook + + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + + + Create new workflow + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 474 + + Create new workflow + + + Edit workflow + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 478 + + Edit workflow + + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + + Email address(es) + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 11 + + Email address(es) + + + Subject + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 + + Subject + + + Message + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 19 + + Message + + + Use archive version + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 27 + + Use archive version + + + Send email + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 33 + + Send email + + + Some email servers may reject messages with large attachments. + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 + + Some email servers may reject messages with large attachments. + + + Email sent + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 63 + + Email sent + + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + + + Error emailing document + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 70 + + Error emailing document + + + Include + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 25 + + Include + + + Exclude + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 27 + + Exclude + + + Create + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 58 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 65 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + Create + + + Apply + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 64 + + Apply + + + Click again to exclude items. + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 77 + + Click again to exclude items. + + + Not assigned + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts + 95 + + Filter drop down element to filter for documents with no correspondent/type/tag assigned + Not assigned + + + Open filter + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts + 767 + + Open filter + + + Keyboard shortcuts + + src/app/components/common/hotkey-dialog/hotkey-dialog.component.ts + 24 + + Keyboard shortcuts + + + Remove + + src/app/components/common/input/check/check.component.html + 8 + + + src/app/components/common/input/date/date.component.html + 7 + + + src/app/components/common/input/document-link/document-link.component.html + 12 + + + src/app/components/common/input/file/file.component.html + 9 + + + src/app/components/common/input/file/file.component.html + 21 + + + src/app/components/common/input/monetary/monetary.component.html + 9 + + + src/app/components/common/input/number/number.component.html + 9 + + + src/app/components/common/input/select/select.component.html + 10 + + + src/app/components/common/input/switch/switch.component.html + 13 + + + src/app/components/common/input/text/text.component.html + 9 + + + src/app/components/common/input/textarea/textarea.component.html + 9 + + + src/app/components/common/input/url/url.component.html + 7 + + Remove + + + Invalid date. + + src/app/components/common/input/date/date.component.html + 31 + + Invalid date. + + + Suggestions: + + src/app/components/common/input/date/date.component.html + 37 + + + src/app/components/common/input/select/select.component.html + 61 + + + src/app/components/common/input/tags/tags.component.html + 65 + + Suggestions: + + + Filter documents with this + + src/app/components/common/input/date/date.component.ts + 120 + + + src/app/components/common/input/select/select.component.ts + 172 + + Filter documents with this + + + Remove link + + src/app/components/common/input/document-link/document-link.component.html + 43 + + + src/app/components/common/input/document-link/document-link.component.html + 50 + + Remove link + + + Open link + + src/app/components/common/input/document-link/document-link.component.html + 46 + + + src/app/components/common/input/url/url.component.html + 14 + + Open link + + + Not found + + src/app/components/common/input/document-link/document-link.component.html + 51 + + Not found + + + Search for documents + + src/app/components/common/input/document-link/document-link.component.ts + 81 + + Search for documents + + + Selected items + + src/app/components/common/input/drag-drop-select/drag-drop-select.component.ts + 25 + + Selected items + + + No items selected + + src/app/components/common/input/drag-drop-select/drag-drop-select.component.ts + 31 + + No items selected + + + Add + + src/app/components/common/input/entries/entries.component.html + 8 + + + src/app/components/common/permissions-select/permissions-select.component.html + 17 + + Add + + + Upload + + src/app/components/common/input/file/file.component.html + 15 + + Upload + + + Show password + + src/app/components/common/input/password/password.component.html + 6 + + Show password + + + Edit Permissions + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 9 + + Edit Permissions + + + Owner: + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 26 + + Owner: + + + Add item + + src/app/components/common/input/select/select.component.html + 25 + + Used for both types, correspondents, storage paths + Add item + + + Private + + src/app/components/common/input/select/select.component.ts + 71 + + + src/app/components/common/tag/tag.component.html + 20 + + + src/app/components/common/tag/tag.component.html + 23 + + + src/app/pipes/object-name.pipe.ts + 40 + + + src/app/pipes/object-name.pipe.ts + 46 + + Private + + + No items found + + src/app/components/common/input/select/select.component.ts + 106 + + No items found + + + Note: value has not yet been set and will not apply until explicitly changed + + src/app/components/common/input/switch/switch.component.html + 39 + + Note: value has not yet been set and will not apply until explicitly changed + + + Add tag + + src/app/components/common/input/tags/tags.component.html + 17 + + Add tag + + + Remove tag + + src/app/components/common/input/tags/tags.component.html + 23 + + Remove tag + + + Filter documents with these Tags + + src/app/components/common/input/tags/tags.component.html + 55 + + Filter documents with these Tags + + + Read more + + src/app/components/common/page-header/page-header.component.html + 15 + + + src/app/components/common/permissions-select/permissions-select.component.html + 9 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + + Read more + + + Select all pages + + src/app/components/common/pdf-editor/pdf-editor.component.html + 9 + + Select all pages + + + Deselect all pages + + src/app/components/common/pdf-editor/pdf-editor.component.html + 12 + + Deselect all pages + + + Rotate selected pages counter-clockwise + + src/app/components/common/pdf-editor/pdf-editor.component.html + 17 + + Rotate selected pages counter-clockwise + + + Rotate selected pages clockwise + + src/app/components/common/pdf-editor/pdf-editor.component.html + 20 + + Rotate selected pages clockwise + + + Delete selected pages + + src/app/components/common/pdf-editor/pdf-editor.component.html + 23 + + Delete selected pages + + + Rotate page counter-clockwise + + src/app/components/common/pdf-editor/pdf-editor.component.html + 33 + + Rotate page counter-clockwise + + + Rotate page clockwise + + src/app/components/common/pdf-editor/pdf-editor.component.html + 36 + + Rotate page clockwise + + + Delete page + + src/app/components/common/pdf-editor/pdf-editor.component.html + 41 + + Delete page + + + Add / remove document split here + + src/app/components/common/pdf-editor/pdf-editor.component.html + 44 + + Add / remove document split here + + + Split here + + src/app/components/common/pdf-editor/pdf-editor.component.html + 70 + + Split here + + + Create new document(s) + + src/app/components/common/pdf-editor/pdf-editor.component.html + 82 + + Create new document(s) + + + Update existing document + + src/app/components/common/pdf-editor/pdf-editor.component.html + 87 + + Update existing document + + + Copy metadata + + src/app/components/common/pdf-editor/pdf-editor.component.html + 94 + + Copy metadata + + + Delete original + + src/app/components/common/pdf-editor/pdf-editor.component.html + 98 + + Delete original + + + Merge with existing permissions + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 14 + + Merge with existing permissions + + + Set permissions + + src/app/components/common/permissions-dialog/permissions-dialog.component.ts + 41 + + Set permissions + + + Edit permissions for + + src/app/components/common/permissions-dialog/permissions-dialog.component.ts + 46 + + Edit permissions for + + + Existing owner, user and group permissions will be merged with these settings. + + src/app/components/common/permissions-dialog/permissions-dialog.component.ts + 87 + + Existing owner, user and group permissions will be merged with these settings. + + + Any and all existing owner, user and group permissions will be replaced. + + src/app/components/common/permissions-dialog/permissions-dialog.component.ts + 88 + + Any and all existing owner, user and group permissions will be replaced. + + + My documents + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 26 + + My documents + + + Shared with me + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 36 + + Shared with me + + + Shared by me + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 46 + + Shared by me + + + Unowned + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 56 + + Unowned + + + Hide unowned + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 86 + + Hide unowned + + + Global permissions define what areas of the app and API endpoints users can access. + + src/app/components/common/permissions-select/permissions-select.component.html + 8 + + Global permissions define what areas of the app and API endpoints users can access. + + + Type + + src/app/components/common/permissions-select/permissions-select.component.html + 15 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 56 + + Type + + + Change + + src/app/components/common/permissions-select/permissions-select.component.html + 18 + + Change + + + Inherited from group + + src/app/components/common/permissions-select/permissions-select.component.ts + 78 + + Inherited from group + + + Error loading preview + + src/app/components/common/preview-popup/preview-popup.component.html + 10 + + Error loading preview + + + Open preview + + src/app/components/common/preview-popup/preview-popup.component.ts + 52 + + Open preview + + + Edit Profile + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 3 + + Edit Profile + + + Confirm Email + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 15 + + Confirm Email + + + Confirm Password + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 25 + + Confirm Password + + + API Auth Token + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 33 + + API Auth Token + + + Copy + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 37 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 44 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 157 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 28 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 284 + + + src/app/components/manage/mail/mail.component.html + 156 + + + src/app/components/manage/mail/mail.component.html + 174 + + + src/app/components/manage/workflows/workflows.component.html + 56 + + + src/app/components/manage/workflows/workflows.component.html + 71 + + Copy + + + Regenerate auth token + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 47 + + Regenerate auth token + + + Copied! + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 54 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 164 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 39 + + Copied! + + + Warning: changing the token cannot be undone + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 56 + + Warning: changing the token cannot be undone + + + Connected social accounts + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 62 + + Connected social accounts + + + Set a password before disconnecting social account. + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 66 + + Set a password before disconnecting social account. + + + Disconnect + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 72 + + Disconnect + + + Disconnect social account + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 74 + + Disconnect social account + + + Warning: disconnecting social accounts cannot be undone + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 84 + + Warning: disconnecting social accounts cannot be undone + + + Connect new social account + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 89 + + Connect new social account + + + Scan the QR code with your authenticator app and then enter the code below + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 116 + + Scan the QR code with your authenticator app and then enter the code below + + + Authenticator secret + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 119 + + Authenticator secret + + + You can store this secret and use it to reinstall your authenticator app at a later time. + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 120 + + You can store this secret and use it to reinstall your authenticator app at a later time. + + + Code + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 123 + + Code + + + Recovery codes will not be shown again, make sure to save them. + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 142 + + Recovery codes will not be shown again, make sure to save them. + + + Copy codes + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 160 + + Copy codes + + + Emails must match + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 148 + + Emails must match + + + Passwords must match + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 176 + + Passwords must match + + + Profile updated successfully + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 198 + + Profile updated successfully + + + Error saving profile + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 212 + + Error saving profile + + + Error generating auth token + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 230 + + Error generating auth token + + + Error disconnecting social account + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 255 + + Error disconnecting social account + + + Error fetching TOTP settings + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 274 + + Error fetching TOTP settings + + + TOTP activated successfully + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 295 + + TOTP activated successfully + + + Error activating TOTP + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 297 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 303 + + Error activating TOTP + + + TOTP deactivated successfully + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 319 + + TOTP deactivated successfully + + + Error deactivating TOTP + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 321 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 326 + + Error deactivating TOTP + + + No existing links + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 8,10 + + No existing links + + + Share + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 32 + + Share + + + Share archive version + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 48 + + Share archive version + + + Expires + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 52 + + Expires + + + 1 day + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 25 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 102 + + 1 day + + + 7 days + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 26 + + 7 days + + + 30 days + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 27 + + 30 days + + + Never + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 28 + + Never + + + Share Links + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 32 + + + src/app/components/document-detail/document-detail.component.html + 88 + + Share Links + + + Error retrieving links + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 83 + + Error retrieving links + + + days + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 102 + + days + + + Error deleting link + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 131 + + Error deleting link + + + Error creating link + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 159 + + Error creating link + + + Environment + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 18 + + Environment + + + Paperless-ngx Version + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 22 + + Paperless-ngx Version + + + Install Type + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 35 + + Install Type + + + Server OS + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 37 + + Server OS + + + Media Storage + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 39 + + Media Storage + + + available + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 42 + + available + + + total + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 42 + + total + + + Database + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 52 + + Database + + + Status + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 58 + + + src/app/components/common/toast/toast.component.html + 28 + + + src/app/components/manage/mail/mail.component.html + 114 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + + + src/app/components/manage/workflows/workflows.component.html + 19 + + Status + + + Migration Status + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 76 + + Migration Status + + + Up to date + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 80 + + Up to date + + + Latest Migration + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 85 + + Latest Migration + + + Pending Migrations + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 87 + + Pending Migrations + + + Tasks Queue + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 105 + + Tasks Queue + + + Redis Status + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 109 + + Redis Status + + + Celery Status + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 127 + + Celery Status + + + Health + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 153 + + Health + + + Search Index + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 157 + + Search Index + + + Run Task + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 177 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 211 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 245 + + Run Task + + + Last Updated + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 184 + + Last Updated + + + Classifier + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 189 + + Classifier + + + Last Trained + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 218 + + Last Trained + + + Sanity Checker + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 223 + + Sanity Checker + + + Last Run + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 252 + + Last Run + + + WebSocket Connection + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 257 + + WebSocket Connection + + + OK + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 261 + + OK + + + Copy Raw Error + + src/app/components/common/toast/toast.component.html + 43 + + Copy Raw Error + + + Hint: saved views can be created from the documents list + + src/app/components/dashboard/dashboard.component.html + 42 + + Hint: saved views can be created from the documents list + + + Hello , welcome to + + src/app/components/dashboard/dashboard.component.ts + 61 + + Hello , welcome to + + + Welcome to + + src/app/components/dashboard/dashboard.component.ts + 63 + + Welcome to + + + Dashboard updated + + src/app/components/dashboard/dashboard.component.ts + 94 + + Dashboard updated + + + Error updating dashboard + + src/app/components/dashboard/dashboard.component.ts + 97 + + Error updating dashboard + + + Show all + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 10 + + Show all + + + Filter by correspondent + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 54 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 25 + + + src/app/components/document-list/document-list.component.html + 323 + + Filter by correspondent + + + Filter by document type + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 64 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 96 + + + src/app/components/document-list/document-list.component.html + 363 + + Filter by document type + + + Filter by storage path + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 69 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 102 + + + src/app/components/document-list/document-list.component.html + 370 + + Filter by storage path + + + Filter by owner + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 74 + + Filter by owner + + + Yes + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 84 + + + src/app/components/document-list/document-list.component.html + 391 + + Yes + + + No + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 84 + + + src/app/components/document-list/document-list.component.html + 391 + + No + + + No documents + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 149 + + No documents + + + Statistics + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 1 + + Statistics + + + Go to inbox + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 28 + + Go to inbox + + + Documents in inbox + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 29 + + Documents in inbox + + + Go to documents + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 33 + + Go to documents + + + Total documents + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 34 + + Total documents + + + Total characters + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 38 + + Total characters + + + Current ASN + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 43 + + Current ASN + + + Other + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.ts + 79 + + Other + + + Upload documents + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 6 + + Upload documents + + + or drop files anywhere + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 7 + + or drop files anywhere + + + Dismiss completed + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 23 + + This button dismisses all status messages about processed documents on the dashboard (failed and successful) + Dismiss completed + + + Processing: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 57 + + Processing: + + + Failed: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 60 + + Failed: + + + Added: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 63 + + Added: + + + , + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 66 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 386 + + this string is used to separate processing, failed and added on the file upload widget + , + + + Paperless-ngx is running! + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 2 + + Paperless-ngx is running! + + + You're ready to start uploading documents! Explore the various features of this web app on your own, or start a quick tour using the button below. + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 3 + + You're ready to start uploading documents! Explore the various features of this web app on your own, or start a quick tour using the button below. + + + More detail on how to use and configure Paperless-ngx is always available in the documentation. + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 4 + + More detail on how to use and configure Paperless-ngx is always available in the documentation. + + + Thanks for being a part of the Paperless-ngx community! + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 7 + + Thanks for being a part of the Paperless-ngx community! + + + Start the tour + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 8 + + Start the tour + + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + + + Page + + src/app/components/document-detail/document-detail.component.html + 5 + + + src/app/components/document-list/document-list.component.html + 27 + + Page + + + of + + src/app/components/document-detail/document-detail.component.html + 7,8 + + of + + + - + + src/app/components/document-detail/document-detail.component.html + 11 + + - + + + + + + src/app/components/document-detail/document-detail.component.html + 19 + + + + + + Download original + + src/app/components/document-detail/document-detail.component.html + 41 + + Download original + + + Reprocess + + src/app/components/document-detail/document-detail.component.html + 54 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 91 + + Reprocess + + + Print + + src/app/components/document-detail/document-detail.component.html + 58 + + Print + + + More like this + + src/app/components/document-detail/document-detail.component.html + 62 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 69 + + More like this + + + PDF Editor + + src/app/components/document-detail/document-detail.component.html + 66 + + + src/app/components/document-detail/document-detail.component.ts + 1392 + + PDF Editor + + + Send + + src/app/components/document-detail/document-detail.component.html + 84 + + Send + + + Previous + + src/app/components/document-detail/document-detail.component.html + 110 + + Previous + + + Details + + src/app/components/document-detail/document-detail.component.html + 123 + + Details + + + Title + + src/app/components/document-detail/document-detail.component.html + 126 + + + src/app/components/document-list/document-list.component.html + 221 + + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 195 + + + src/app/data/document.ts + 30 + + + src/app/data/document.ts + 90 + + Title + + + Archive serial number + + src/app/components/document-detail/document-detail.component.html + 127 + + Archive serial number + + + Date created + + src/app/components/document-detail/document-detail.component.html + 128 + + Date created + + + Correspondent + + src/app/components/document-detail/document-detail.component.html + 130 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 19 + + + src/app/components/document-list/document-list.component.html + 211 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 50 + + + src/app/data/document.ts + 46 + + + src/app/data/document.ts + 89 + + Correspondent + + + Document type + + src/app/components/document-detail/document-detail.component.html + 132 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 33 + + + src/app/components/document-list/document-list.component.html + 251 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 61 + + + src/app/data/document.ts + 50 + + + src/app/data/document.ts + 91 + + Document type + + + Storage path + + src/app/components/document-detail/document-detail.component.html + 134 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 47 + + + src/app/components/document-list/document-list.component.html + 260 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 72 + + + src/app/data/document.ts + 54 + + Storage path + + + Default + + src/app/components/document-detail/document-detail.component.html + 135 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Default + + + Content + + src/app/components/document-detail/document-detail.component.html + 239 + + Content + + + Metadata + + src/app/components/document-detail/document-detail.component.html + 248 + + + src/app/components/document-detail/metadata-collapse/metadata-collapse.component.ts + 20 + + Metadata + + + Date modified + + src/app/components/document-detail/document-detail.component.html + 255 + + Date modified + + + Date added + + src/app/components/document-detail/document-detail.component.html + 259 + + Date added + + + Media filename + + src/app/components/document-detail/document-detail.component.html + 263 + + Media filename + + + Original filename + + src/app/components/document-detail/document-detail.component.html + 267 + + Original filename + + + Original MD5 checksum + + src/app/components/document-detail/document-detail.component.html + 271 + + Original MD5 checksum + + + Original file size + + src/app/components/document-detail/document-detail.component.html + 275 + + Original file size + + + Original mime type + + src/app/components/document-detail/document-detail.component.html + 279 + + Original mime type + + + Archive MD5 checksum + + src/app/components/document-detail/document-detail.component.html + 284 + + Archive MD5 checksum + + + Archive file size + + src/app/components/document-detail/document-detail.component.html + 290 + + Archive file size + + + Original document metadata + + src/app/components/document-detail/document-detail.component.html + 299 + + Original document metadata + + + Archived document metadata + + src/app/components/document-detail/document-detail.component.html + 302 + + Archived document metadata + + + Notes + + src/app/components/document-detail/document-detail.component.html + 321,324 + + Notes + + + History + + src/app/components/document-detail/document-detail.component.html + 332 + + History + + + Save & next + + src/app/components/document-detail/document-detail.component.html + 369 + + Save & next + + + Save & close + + src/app/components/document-detail/document-detail.component.html + 372 + + Save & close + + + Document loading... + + src/app/components/document-detail/document-detail.component.html + 382 + + Document loading... + + + Enter Password + + src/app/components/document-detail/document-detail.component.html + 436 + + Enter Password + + + An error occurred loading content: + + src/app/components/document-detail/document-detail.component.ts + 416,418 + + An error occurred loading content: + + + Document changes detected + + src/app/components/document-detail/document-detail.component.ts + 450 + + Document changes detected + + + The version of this document in your browser session appears older than the existing version. + + src/app/components/document-detail/document-detail.component.ts + 451 + + The version of this document in your browser session appears older than the existing version. + + + Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document. + + src/app/components/document-detail/document-detail.component.ts + 452 + + Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document. + + + Ok + + src/app/components/document-detail/document-detail.component.ts + 454 + + Ok + + + Next document + + src/app/components/document-detail/document-detail.component.ts + 580 + + Next document + + + Previous document + + src/app/components/document-detail/document-detail.component.ts + 590 + + Previous document + + + Close document + + src/app/components/document-detail/document-detail.component.ts + 598 + + + src/app/services/open-documents.service.ts + 130 + + Close document + + + Save document + + src/app/components/document-detail/document-detail.component.ts + 605 + + Save document + + + Save and close / next + + src/app/components/document-detail/document-detail.component.ts + 614 + + Save and close / next + + + Error retrieving metadata + + src/app/components/document-detail/document-detail.component.ts + 669 + + Error retrieving metadata + + + Error retrieving suggestions. + + src/app/components/document-detail/document-detail.component.ts + 698 + + Error retrieving suggestions. + + + Document "" saved successfully. + + src/app/components/document-detail/document-detail.component.ts + 870 + + + src/app/components/document-detail/document-detail.component.ts + 894 + + Document "" saved successfully. + + + Error saving document "" + + src/app/components/document-detail/document-detail.component.ts + 900 + + Error saving document "" + + + Error saving document + + src/app/components/document-detail/document-detail.component.ts + 950 + + Error saving document + + + Do you really want to move the document "" to the trash? + + src/app/components/document-detail/document-detail.component.ts + 982 + + Do you really want to move the document "" to the trash? + + + Documents can be restored prior to permanent deletion. + + src/app/components/document-detail/document-detail.component.ts + 983 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 754 + + Documents can be restored prior to permanent deletion. + + + Move to trash + + src/app/components/document-detail/document-detail.component.ts + 985 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 756 + + Move to trash + + + Error deleting document + + src/app/components/document-detail/document-detail.component.ts + 1004 + + Error deleting document + + + Reprocess confirm + + src/app/components/document-detail/document-detail.component.ts + 1024 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 794 + + Reprocess confirm + + + This operation will permanently recreate the archive file for this document. + + src/app/components/document-detail/document-detail.component.ts + 1025 + + This operation will permanently recreate the archive file for this document. + + + The archive file will be re-generated with the current settings. + + src/app/components/document-detail/document-detail.component.ts + 1026 + + The archive file will be re-generated with the current settings. + + + Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. + + src/app/components/document-detail/document-detail.component.ts + 1036 + + Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. + + + Error executing operation + + src/app/components/document-detail/document-detail.component.ts + 1047 + + Error executing operation + + + Error downloading document + + src/app/components/document-detail/document-detail.component.ts + 1096 + + Error downloading document + + + Page Fit + + src/app/components/document-detail/document-detail.component.ts + 1173 + + Page Fit + + + PDF edit operation for "" will begin in the background. + + src/app/components/document-detail/document-detail.component.ts + 1411 + + PDF edit operation for "" will begin in the background. + + + Error executing PDF edit operation + + src/app/components/document-detail/document-detail.component.ts + 1423 + + Error executing PDF edit operation + + + Print failed. + + src/app/components/document-detail/document-detail.component.ts + 1460 + + Print failed. + + + Error loading document for printing. + + src/app/components/document-detail/document-detail.component.ts + 1472 + + Error loading document for printing. + + + An error occurred loading tiff: + + src/app/components/document-detail/document-detail.component.ts + 1537 + + + src/app/components/document-detail/document-detail.component.ts + 1541 + + An error occurred loading tiff: + + + No entries found. + + src/app/components/document-history/document-history.component.html + 10 + + No entries found. + + + Edit: + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 3 + + Edit: + + + Filter tags + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 6 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 40 + + Filter tags + + + Filter correspondents + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 20 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 51 + + Filter correspondents + + + Filter document types + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 34 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 62 + + Filter document types + + + Filter storage paths + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 48 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 73 + + Filter storage paths + + + Custom fields + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 61 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 84 + + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 203 + + Custom fields + + + Filter custom fields + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 62 + + Filter custom fields + + + Set values + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 70 + + Set values + + + Rotate + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 94 + + Rotate + + + Merge + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 97 + + Merge + + + Include: + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 123 + + Include: + + + Archived files + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 127 + + Archived files + + + Original files + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 131 + + Original files + + + Use formatted filename + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 136 + + Use formatted filename + + + Error executing bulk operation + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 290 + + Error executing bulk operation + + + "" + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 378 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 384 + + "" + + + "" and "" + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 380 + + This is for messages like 'modify "tag1" and "tag2"' + "" and "" + + + and "" + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 388,390 + + this is for messages like 'modify "tag1", "tag2" and "tag3"' + and "" + + + Confirm tags assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 405 + + Confirm tags assignment + + + This operation will add the tag "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 411 + + This operation will add the tag "" to selected document(s). + + + This operation will add the tags to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 416,418 + + This operation will add the tags to selected document(s). + + + This operation will remove the tag "" from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 424 + + This operation will remove the tag "" from selected document(s). + + + This operation will remove the tags from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 429,431 + + This operation will remove the tags from selected document(s). + + + This operation will add the tags and remove the tags on selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 433,437 + + This operation will add the tags and remove the tags on selected document(s). + + + Confirm correspondent assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 474 + + Confirm correspondent assignment + + + This operation will assign the correspondent "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 476 + + This operation will assign the correspondent "" to selected document(s). + + + This operation will remove the correspondent from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 478 + + This operation will remove the correspondent from selected document(s). + + + Confirm document type assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 512 + + Confirm document type assignment + + + This operation will assign the document type "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 514 + + This operation will assign the document type "" to selected document(s). + + + This operation will remove the document type from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 516 + + This operation will remove the document type from selected document(s). + + + Confirm storage path assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 550 + + Confirm storage path assignment + + + This operation will assign the storage path "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 552 + + This operation will assign the storage path "" to selected document(s). + + + This operation will remove the storage path from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 554 + + This operation will remove the storage path from selected document(s). + + + Confirm custom field assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 583 + + Confirm custom field assignment + + + This operation will assign the custom field "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 589 + + This operation will assign the custom field "" to selected document(s). + + + This operation will assign the custom fields to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 594,596 + + This operation will assign the custom fields to selected document(s). + + + This operation will remove the custom field "" from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 602 + + This operation will remove the custom field "" from selected document(s). + + + This operation will remove the custom fields from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 607,609 + + This operation will remove the custom fields from selected document(s). + + + This operation will assign the custom fields and remove the custom fields on selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 611,615 + + This operation will assign the custom fields and remove the custom fields on selected document(s). + + + Move selected document(s) to the trash? + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 753 + + Move selected document(s) to the trash? + + + This operation will permanently recreate the archive files for selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 795 + + This operation will permanently recreate the archive files for selected document(s). + + + The archive files will be re-generated with the current settings. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 796 + + The archive files will be re-generated with the current settings. + + + Rotate confirm + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 828 + + Rotate confirm + + + This operation will permanently rotate the original version of document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 829 + + This operation will permanently rotate the original version of document(s). + + + Merge confirm + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 848 + + Merge confirm + + + This operation will merge selected documents into a new document. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 849 + + This operation will merge selected documents into a new document. + + + Merged document will be queued for consumption. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 868 + + Merged document will be queued for consumption. + + + Custom fields updated. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 892 + + Custom fields updated. + + + Error updating custom fields. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 901 + + Error updating custom fields. + + + {VAR_PLURAL, plural, =1 {Set custom fields for 1 document} other {Set custom fields for documents}} + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 3,7 + + {VAR_PLURAL, plural, =1 {Set custom fields for 1 document} other {Set custom fields for documents}} + + + Select custom fields + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 13 + + Select custom fields + + + {VAR_PLURAL, plural, =1 {This operation will also remove 1 custom field from the selected documents.} other {This operation will also + remove custom fields from the selected documents.}} + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 73,78 + + {VAR_PLURAL, plural, =1 {This operation will also remove 1 custom field from the selected documents.} other {This operation will also + remove custom fields from the selected documents.}} + + + Filter by tag + + src/app/components/document-list/document-card-large/document-card-large.component.html + 36 + + + src/app/components/document-list/document-list.component.html + 339 + + Filter by tag + + + View notes + + src/app/components/document-list/document-card-large/document-card-large.component.html + 91 + + View notes + + + Created: + + src/app/components/document-list/document-card-large/document-card-large.component.html + 115,116 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 76,77 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 91,92 + + Created: + + + Added: + + src/app/components/document-list/document-card-large/document-card-large.component.html + 116,117 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 77,78 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 92,93 + + Added: + + + Modified: + + src/app/components/document-list/document-card-large/document-card-large.component.html + 117,118 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 78,79 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 93,94 + + Modified: + + + {VAR_PLURAL, plural, =1 {1 page} other { pages}} + + src/app/components/document-list/document-card-large/document-card-large.component.html + 134 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 106 + + {VAR_PLURAL, plural, =1 {1 page} other { pages}} + + + Shared + + src/app/components/document-list/document-card-large/document-card-large.component.html + 144 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 125 + + + src/app/data/document.ts + 66 + + + src/app/pipes/username.pipe.ts + 35 + + Shared + + + Score: + + src/app/components/document-list/document-card-large/document-card-large.component.html + 149 + + Score: + + + Toggle tag filter + + src/app/components/document-list/document-card-small/document-card-small.component.html + 20 + + Toggle tag filter + + + Toggle correspondent filter + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Toggle correspondent filter + + + Toggle document type filter + + src/app/components/document-list/document-card-small/document-card-small.component.html + 59 + + Toggle document type filter + + + Toggle storage path filter + + src/app/components/document-list/document-card-small/document-card-small.component.html + 66 + + Toggle storage path filter + + + Select + + src/app/components/document-list/document-list.component.html + 5 + + + src/app/data/custom-field.ts + 51 + + Select + + + Select none + + src/app/components/document-list/document-list.component.html + 11 + + Select none + + + Select page + + src/app/components/document-list/document-list.component.html + 12 + + + src/app/components/document-list/document-list.component.ts + 315 + + Select page + + + Select all + + src/app/components/document-list/document-list.component.html + 13 + + + src/app/components/document-list/document-list.component.ts + 308 + + Select all + + + Select: + + src/app/components/document-list/document-list.component.html + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 + + + src/app/components/manage/management-list/management-list.component.ts + 124 + + + src/app/data/matching-model.ts + 45 + + None + + + Sort + + src/app/components/document-list/document-list.component.html + 68 + + Sort + + + Views + + src/app/components/document-list/document-list.component.html + 94 + + Views + + + Save "" + + src/app/components/document-list/document-list.component.html + 113 + + Save "" + + + Save as... + + src/app/components/document-list/document-list.component.html + 116 + + Save as... + + + All saved views + + src/app/components/document-list/document-list.component.html + 117 + + All saved views + + + {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} + + src/app/components/document-list/document-list.component.html + 137 + + {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} + + + {VAR_PLURAL, plural, =1 {One document} other { documents}} + + src/app/components/document-list/document-list.component.html + 141 + + {VAR_PLURAL, plural, =1 {One document} other { documents}} + + + (filtered) + + src/app/components/document-list/document-list.component.html + 143 + + (filtered) + + + Reset filters + + src/app/components/document-list/document-list.component.html + 148 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 107 + + Reset filters + + + Error while loading documents + + src/app/components/document-list/document-list.component.html + 169 + + Error while loading documents + + + Sort by ASN + + src/app/components/document-list/document-list.component.html + 198 + + Sort by ASN + + + ASN + + src/app/components/document-list/document-list.component.html + 202 + + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 200 + + + src/app/data/document.ts + 70 + + + src/app/data/document.ts + 88 + + ASN + + + Sort by correspondent + + src/app/components/document-list/document-list.component.html + 207 + + Sort by correspondent + + + Sort by title + + src/app/components/document-list/document-list.component.html + 216 + + Sort by title + + + Sort by owner + + src/app/components/document-list/document-list.component.html + 229 + + Sort by owner + + + Owner + + src/app/components/document-list/document-list.component.html + 233 + + + src/app/data/document.ts + 62 + + + src/app/data/document.ts + 96 + + Owner + + + Sort by notes + + src/app/components/document-list/document-list.component.html + 238 + + Sort by notes + + + Sort by document type + + src/app/components/document-list/document-list.component.html + 247 + + Sort by document type + + + Sort by storage path + + src/app/components/document-list/document-list.component.html + 256 + + Sort by storage path + + + Sort by created date + + src/app/components/document-list/document-list.component.html + 265 + + Sort by created date + + + Sort by added date + + src/app/components/document-list/document-list.component.html + 274 + + Sort by added date + + + Sort by number of pages + + src/app/components/document-list/document-list.component.html + 283 + + Sort by number of pages + + + Pages + + src/app/components/document-list/document-list.component.html + 287 + + + src/app/data/document.ts + 74 + + + src/app/data/document.ts + 97 + + + src/app/data/paperless-config.ts + 91 + + Pages + + + Shared + + src/app/components/document-list/document-list.component.html + 290,292 + + Shared + + + Sort by + + src/app/components/document-list/document-list.component.html + 297,298 + + Sort by + + + Edit document + + src/app/components/document-list/document-list.component.html + 331 + + Edit document + + + Preview document + + src/app/components/document-list/document-list.component.html + 332 + + Preview document + + + Reset filters / selection + + src/app/components/document-list/document-list.component.ts + 296 + + Reset filters / selection + + + Open first [selected] document + + src/app/components/document-list/document-list.component.ts + 324 + + Open first [selected] document + + + Previous page + + src/app/components/document-list/document-list.component.ts + 340 + + Previous page + + + Next page + + src/app/components/document-list/document-list.component.ts + 352 + + Next page + + + View "" saved successfully. + + src/app/components/document-list/document-list.component.ts + 385 + + View "" saved successfully. + + + Failed to save view "". + + src/app/components/document-list/document-list.component.ts + 391 + + Failed to save view "". + + + View "" created successfully. + + src/app/components/document-list/document-list.component.ts + 437 + + View "" created successfully. + + + Dates + + src/app/components/document-list/filter-editor/filter-editor.component.html + 90 + + Dates + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 198 + + Title & content + + + File type + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 205 + + File type + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 214 + + More like + + + equals + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 220 + + equals + + + is empty + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 224 + + is empty + + + is not empty + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 228 + + is not empty + + + greater than + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 232 + + greater than + + + less than + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 236 + + less than + + + Correspondent: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 277,281 + + Correspondent: + + + Without correspondent + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 283 + + Without correspondent + + + Document type: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 289,293 + + Document type: + + + Without document type + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 295 + + Without document type + + + Storage path: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 301,305 + + Storage path: + + + Without storage path + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 307 + + Without storage path + + + Tag: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 311,313 + + Tag: + + + Without any tag + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 317 + + Without any tag + + + Custom fields query + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 321 + + Custom fields query + + + Title: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 324 + + Title: + + + ASN: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 327 + + ASN: + + + Owner: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 330 + + Owner: + + + Owner not in: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 333 + + Owner not in: + + + Without an owner + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 336 + + Without an owner + + + Save current view + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 3 + + Save current view + + + Show in sidebar + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 9 + + + src/app/components/manage/saved-views/saved-views.component.html + 24 + + Show in sidebar + + + Show on dashboard + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 10 + + + src/app/components/manage/saved-views/saved-views.component.html + 20 + + Show on dashboard + + + Filter rules error occurred while saving this view + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 13 + + Filter rules error occurred while saving this view + + + The error returned was + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 14 + + The error returned was + + + Enter note + + src/app/components/document-notes/document-notes.component.html + 5 + + Enter note + + + Please enter a note. + + src/app/components/document-notes/document-notes.component.html + 6,8 + + Please enter a note. + + + Add note + + src/app/components/document-notes/document-notes.component.html + 14 + + Add note + + + Delete note + + src/app/components/document-notes/document-notes.component.html + 25 + + + src/app/components/document-notes/document-notes.component.html + 27 + + Delete note + + + Error saving note + + src/app/components/document-notes/document-notes.component.ts + 81 + + Error saving note + + + Error deleting note + + src/app/components/document-notes/document-notes.component.ts + 95 + + Error deleting note + + + Drop files to begin upload + + src/app/components/file-drop/file-drop.component.html + 6 + + Drop files to begin upload + + + Initiating upload... + + src/app/components/file-drop/file-drop.component.ts + 137 + + + src/app/components/file-drop/file-drop.component.ts + 146 + + Initiating upload... + + + Failed to read dropped items: + + src/app/components/file-drop/file-drop.component.ts + 142 + + Failed to read dropped items: + + + correspondent + + src/app/components/manage/correspondent-list/correspondent-list.component.ts + 47 + + correspondent + + + correspondents + + src/app/components/manage/correspondent-list/correspondent-list.component.ts + 48 + + correspondents + + + Last used + + src/app/components/manage/correspondent-list/correspondent-list.component.ts + 53 + + Last used + + + Do you really want to delete the correspondent ""? + + src/app/components/manage/correspondent-list/correspondent-list.component.ts + 78 + + Do you really want to delete the correspondent ""? + + + Customize the data fields that can be attached to documents. + + src/app/components/manage/custom-fields/custom-fields.component.html + 4 + + Customize the data fields that can be attached to documents. + + + Add Field + + src/app/components/manage/custom-fields/custom-fields.component.html + 9 + + Add Field + + + Data Type + + src/app/components/manage/custom-fields/custom-fields.component.html + 18 + + Data Type + + + Filter Documents () + + src/app/components/manage/custom-fields/custom-fields.component.html + 45 + + + src/app/components/manage/management-list/management-list.component.html + 123 + + + src/app/components/manage/management-list/management-list.component.html + 123 + + + src/app/components/manage/management-list/management-list.component.html + 123 + + + src/app/components/manage/management-list/management-list.component.html + 123 + + Filter Documents () + + + No fields defined. + + src/app/components/manage/custom-fields/custom-fields.component.html + 70 + + No fields defined. + + + Confirm delete field + + src/app/components/manage/custom-fields/custom-fields.component.ts + 102 + + Confirm delete field + + + This operation will permanently delete this field. + + src/app/components/manage/custom-fields/custom-fields.component.ts + 103 + + This operation will permanently delete this field. + + + Deleted field "" + + src/app/components/manage/custom-fields/custom-fields.component.ts + 112 + + Deleted field "" + + + Error deleting field "". + + src/app/components/manage/custom-fields/custom-fields.component.ts + 121 + + Error deleting field "". + + + document type + + src/app/components/manage/document-type-list/document-type-list.component.ts + 43 + + document type + + + document types + + src/app/components/manage/document-type-list/document-type-list.component.ts + 44 + + document types + + + Do you really want to delete the document type ""? + + src/app/components/manage/document-type-list/document-type-list.component.ts + 49 + + Do you really want to delete the document type ""? + + + Mail Settings + + src/app/components/manage/mail/mail.component.html + 2 + + Mail Settings + + + Mail accounts + + src/app/components/manage/mail/mail.component.html + 12 + + Mail accounts + + + Add Account + + src/app/components/manage/mail/mail.component.html + 14 + + Add Account + + + Connect Gmail Account + + src/app/components/manage/mail/mail.component.html + 18 + + Connect Gmail Account + + + Connect Outlook Account + + src/app/components/manage/mail/mail.component.html + 23 + + Connect Outlook Account + + + Server + + src/app/components/manage/mail/mail.component.html + 31 + + Server + + + Process Mail + + src/app/components/manage/mail/mail.component.html + 68 + + + src/app/components/manage/mail/mail.component.html + 86 + + Process Mail + + + No mail accounts defined. + + src/app/components/manage/mail/mail.component.html + 95 + + No mail accounts defined. + + + Mail rules + + src/app/components/manage/mail/mail.component.html + 103 + + Mail rules + + + Add Rule + + src/app/components/manage/mail/mail.component.html + 105 + + Add Rule + + + Sort Order + + src/app/components/manage/mail/mail.component.html + 112 + + Sort Order + + + Disabled + + src/app/components/manage/mail/mail.component.html + 137 + + + src/app/components/manage/workflows/workflows.component.html + 41 + + Disabled + + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + + + No mail rules defined. + + src/app/components/manage/mail/mail.component.html + 183 + + No mail rules defined. + + + Error retrieving mail accounts + + src/app/components/manage/mail/mail.component.ts + 105 + + Error retrieving mail accounts + + + Error retrieving mail rules + + src/app/components/manage/mail/mail.component.ts + 127 + + Error retrieving mail rules + + + OAuth2 authentication success + + src/app/components/manage/mail/mail.component.ts + 135 + + OAuth2 authentication success + + + OAuth2 authentication failed, see logs for details + + src/app/components/manage/mail/mail.component.ts + 146 + + OAuth2 authentication failed, see logs for details + + + Saved account "". + + src/app/components/manage/mail/mail.component.ts + 170 + + Saved account "". + + + Error saving account. + + src/app/components/manage/mail/mail.component.ts + 182 + + Error saving account. + + + Confirm delete mail account + + src/app/components/manage/mail/mail.component.ts + 190 + + Confirm delete mail account + + + This operation will permanently delete this mail account. + + src/app/components/manage/mail/mail.component.ts + 191 + + This operation will permanently delete this mail account. + + + Deleted mail account "" + + src/app/components/manage/mail/mail.component.ts + 201 + + Deleted mail account "" + + + Error deleting mail account "". + + src/app/components/manage/mail/mail.component.ts + 212 + + Error deleting mail account "". + + + Processing mail account "" + + src/app/components/manage/mail/mail.component.ts + 224 + + Processing mail account "" + + + Error processing mail account "" + + src/app/components/manage/mail/mail.component.ts + 229 + + Error processing mail account "" + + + Saved rule "". + + src/app/components/manage/mail/mail.component.ts + 247 + + Saved rule "". + + + Error saving rule. + + src/app/components/manage/mail/mail.component.ts + 258 + + Error saving rule. + + + Rule "" enabled. + + src/app/components/manage/mail/mail.component.ts + 274 + + Rule "" enabled. + + + Rule "" disabled. + + src/app/components/manage/mail/mail.component.ts + 275 + + Rule "" disabled. + + + Error toggling rule "". + + src/app/components/manage/mail/mail.component.ts + 280 + + Error toggling rule "". + + + Confirm delete mail rule + + src/app/components/manage/mail/mail.component.ts + 291 + + Confirm delete mail rule + + + This operation will permanently delete this mail rule. + + src/app/components/manage/mail/mail.component.ts + 292 + + This operation will permanently delete this mail rule. + + + Deleted mail rule "" + + src/app/components/manage/mail/mail.component.ts + 302 + + Deleted mail rule "" + + + Error deleting mail rule "". + + src/app/components/manage/mail/mail.component.ts + 313 + + Error deleting mail rule "". + + + Permissions updated + + src/app/components/manage/mail/mail.component.ts + 337 + + Permissions updated + + + Error updating permissions + + src/app/components/manage/mail/mail.component.ts + 342 + + + src/app/components/manage/management-list/management-list.component.ts + 353 + + Error updating permissions + + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + + + Filter by: + + src/app/components/manage/management-list/management-list.component.html + 20 + + + src/app/components/manage/management-list/management-list.component.html + 20 + + + src/app/components/manage/management-list/management-list.component.html + 20 + + + src/app/components/manage/management-list/management-list.component.html + 20 + + Filter by: + + + Matching + + src/app/components/manage/management-list/management-list.component.html + 39 + + + src/app/components/manage/management-list/management-list.component.html + 39 + + + src/app/components/manage/management-list/management-list.component.html + 39 + + + src/app/components/manage/management-list/management-list.component.html + 39 + + Matching + + + Document count + + src/app/components/manage/management-list/management-list.component.html + 40 + + + src/app/components/manage/management-list/management-list.component.html + 40 + + + src/app/components/manage/management-list/management-list.component.html + 40 + + + src/app/components/manage/management-list/management-list.component.html + 40 + + Document count + + + {VAR_PLURAL, plural, =1 {One } other { total }} + + src/app/components/manage/management-list/management-list.component.html + 67 + + + src/app/components/manage/management-list/management-list.component.html + 67 + + + src/app/components/manage/management-list/management-list.component.html + 67 + + + src/app/components/manage/management-list/management-list.component.html + 67 + + {VAR_PLURAL, plural, =1 {One } other { total }} + + + Automatic + + src/app/components/manage/management-list/management-list.component.ts + 122 + + + src/app/data/matching-model.ts + 15 + + Automatic + + + Successfully created . + + src/app/components/manage/management-list/management-list.component.ts + 200 + + Successfully created . + + + Error occurred while creating . + + src/app/components/manage/management-list/management-list.component.ts + 205 + + Error occurred while creating . + + + Successfully updated "". + + src/app/components/manage/management-list/management-list.component.ts + 220 + + Successfully updated "". + + + Error occurred while saving . + + src/app/components/manage/management-list/management-list.component.ts + 225 + + Error occurred while saving . + + + Associated documents will not be deleted. + + src/app/components/manage/management-list/management-list.component.ts + 245 + + Associated documents will not be deleted. + + + Error while deleting element + + src/app/components/manage/management-list/management-list.component.ts + 261 + + Error while deleting element + + + Permissions updated successfully + + src/app/components/manage/management-list/management-list.component.ts + 346 + + Permissions updated successfully + + + This operation will permanently delete all objects. + + src/app/components/manage/management-list/management-list.component.ts + 367 + + This operation will permanently delete all objects. + + + Objects deleted successfully + + src/app/components/manage/management-list/management-list.component.ts + 381 + + Objects deleted successfully + + + Error deleting objects + + src/app/components/manage/management-list/management-list.component.ts + 387 + + Error deleting objects + + + Customize the views of your documents. + + src/app/components/manage/saved-views/saved-views.component.html + 4 + + Customize the views of your documents. + + + Documents page size + + src/app/components/manage/saved-views/saved-views.component.html + 41 + + Documents page size + + + Display as + + src/app/components/manage/saved-views/saved-views.component.html + 44 + + Display as + + + Table + + src/app/components/manage/saved-views/saved-views.component.html + 46 + + Table + + + Small Cards + + src/app/components/manage/saved-views/saved-views.component.html + 47 + + Small Cards + + + Large Cards + + src/app/components/manage/saved-views/saved-views.component.html + 48 + + Large Cards + + + No saved views defined. + + src/app/components/manage/saved-views/saved-views.component.html + 61 + + No saved views defined. + + + Saved view "" deleted. + + src/app/components/manage/saved-views/saved-views.component.ts + 133 + + Saved view "" deleted. + + + Views saved successfully. + + src/app/components/manage/saved-views/saved-views.component.ts + 158 + + Views saved successfully. + + + Error while saving views. + + src/app/components/manage/saved-views/saved-views.component.ts + 163 + + Error while saving views. + + + storage path + + src/app/components/manage/storage-path-list/storage-path-list.component.ts + 43 + + storage path + + + storage paths + + src/app/components/manage/storage-path-list/storage-path-list.component.ts + 44 + + storage paths + + + Do you really want to delete the storage path ""? + + src/app/components/manage/storage-path-list/storage-path-list.component.ts + 60 + + Do you really want to delete the storage path ""? + + + tag + + src/app/components/manage/tag-list/tag-list.component.ts + 43 + + tag + + + tags + + src/app/components/manage/tag-list/tag-list.component.ts + 44 + + tags + + + Do you really want to delete the tag ""? + + src/app/components/manage/tag-list/tag-list.component.ts + 60 + + Do you really want to delete the tag ""? + + + Use workflows to customize the behavior of Paperless-ngx when events 'trigger' a workflow. + + src/app/components/manage/workflows/workflows.component.html + 4 + + Use workflows to customize the behavior of Paperless-ngx when events 'trigger' a workflow. + + + Add Workflow + + src/app/components/manage/workflows/workflows.component.html + 9 + + Add Workflow + + + No workflows defined. + + src/app/components/manage/workflows/workflows.component.html + 80 + + No workflows defined. + + + Saved workflow "". + + src/app/components/manage/workflows/workflows.component.ts + 90 + + Saved workflow "". + + + Error saving workflow. + + src/app/components/manage/workflows/workflows.component.ts + 98 + + Error saving workflow. + + + Confirm delete workflow + + src/app/components/manage/workflows/workflows.component.ts + 131 + + Confirm delete workflow + + + This operation will permanently delete this workflow. + + src/app/components/manage/workflows/workflows.component.ts + 132 + + This operation will permanently delete this workflow. + + + Deleted workflow "". + + src/app/components/manage/workflows/workflows.component.ts + 142 + + Deleted workflow "". + + + Error deleting workflow "". + + src/app/components/manage/workflows/workflows.component.ts + 149 + + Error deleting workflow "". + + + Enabled workflow "" + + src/app/components/manage/workflows/workflows.component.ts + 162 + + Enabled workflow "" + + + Disabled workflow "" + + src/app/components/manage/workflows/workflows.component.ts + 163 + + Disabled workflow "" + + + Error toggling workflow "". + + src/app/components/manage/workflows/workflows.component.ts + 170 + + Error toggling workflow "". + + + Not Found + + src/app/components/not-found/not-found.component.html + 6 + + Not Found + + + Go to Dashboard + + src/app/components/not-found/not-found.component.html + 9 + + Go to Dashboard + + + Equal to + + src/app/data/custom-field-query.ts + 24 + + Equal to + + + In + + src/app/data/custom-field-query.ts + 25 + + In + + + Is null + + src/app/data/custom-field-query.ts + 26 + + Is null + + + Exists + + src/app/data/custom-field-query.ts + 27 + + Exists + + + Contains + + src/app/data/custom-field-query.ts + 28 + + Contains + + + Contains (case-insensitive) + + src/app/data/custom-field-query.ts + 29 + + Contains (case-insensitive) + + + Greater than + + src/app/data/custom-field-query.ts + 30 + + Greater than + + + Greater than or equal to + + src/app/data/custom-field-query.ts + 31 + + Greater than or equal to + + + Less than + + src/app/data/custom-field-query.ts + 32 + + Less than + + + Less than or equal to + + src/app/data/custom-field-query.ts + 33 + + Less than or equal to + + + Range + + src/app/data/custom-field-query.ts + 34 + + Range + + + Boolean + + src/app/data/custom-field.ts + 19 + + Boolean + + + Date + + src/app/data/custom-field.ts + 23 + + Date + + + Integer + + src/app/data/custom-field.ts + 27 + + Integer + + + Number + + src/app/data/custom-field.ts + 31 + + Number + + + Monetary + + src/app/data/custom-field.ts + 35 + + Monetary + + + Text + + src/app/data/custom-field.ts + 39 + + Text + + + Url + + src/app/data/custom-field.ts + 43 + + Url + + + Document Link + + src/app/data/custom-field.ts + 47 + + Document Link + + + Long Text + + src/app/data/custom-field.ts + 55 + + Long Text + + + Search score + + src/app/data/document.ts + 103 + + Score is a value returned by the full text search engine and specifies how well a result matches the given query + Search score + + + Auto: Learn matching automatically + + src/app/data/matching-model.ts + 16 + + Auto: Learn matching automatically + + + Any word + + src/app/data/matching-model.ts + 20 + + Any word + + + Any: Document contains any of these words (space separated) + + src/app/data/matching-model.ts + 21 + + Any: Document contains any of these words (space separated) + + + All words + + src/app/data/matching-model.ts + 25 + + All words + + + All: Document contains all of these words (space separated) + + src/app/data/matching-model.ts + 26 + + All: Document contains all of these words (space separated) + + + Exact match + + src/app/data/matching-model.ts + 30 + + Exact match + + + Exact: Document contains this string + + src/app/data/matching-model.ts + 31 + + Exact: Document contains this string + + + Regular expression + + src/app/data/matching-model.ts + 35 + + Regular expression + + + Regular expression: Document matches this regular expression + + src/app/data/matching-model.ts + 36 + + Regular expression: Document matches this regular expression + + + Fuzzy word + + src/app/data/matching-model.ts + 40 + + Fuzzy word + + + Fuzzy: Document contains a word similar to this word + + src/app/data/matching-model.ts + 41 + + Fuzzy: Document contains a word similar to this word + + + None: Disable matching + + src/app/data/matching-model.ts + 46 + + None: Disable matching + + + General Settings + + src/app/data/paperless-config.ts + 50 + + General Settings + + + OCR Settings + + src/app/data/paperless-config.ts + 51 + + OCR Settings + + + Barcode Settings + + src/app/data/paperless-config.ts + 52 + + Barcode Settings + + + Output Type + + src/app/data/paperless-config.ts + 76 + + Output Type + + + Language + + src/app/data/paperless-config.ts + 84 + + Language + + + Mode + + src/app/data/paperless-config.ts + 98 + + Mode + + + Skip Archive File + + src/app/data/paperless-config.ts + 106 + + Skip Archive File + + + Image DPI + + src/app/data/paperless-config.ts + 114 + + Image DPI + + + Clean + + src/app/data/paperless-config.ts + 121 + + Clean + + + Deskew + + src/app/data/paperless-config.ts + 129 + + Deskew + + + Rotate Pages + + src/app/data/paperless-config.ts + 136 + + Rotate Pages + + + Rotate Pages Threshold + + src/app/data/paperless-config.ts + 143 + + Rotate Pages Threshold + + + Max Image Pixels + + src/app/data/paperless-config.ts + 150 + + Max Image Pixels + + + Color Conversion Strategy + + src/app/data/paperless-config.ts + 157 + + Color Conversion Strategy + + + OCR Arguments + + src/app/data/paperless-config.ts + 165 + + OCR Arguments + + + Application Logo + + src/app/data/paperless-config.ts + 172 + + Application Logo + + + Application Title + + src/app/data/paperless-config.ts + 179 + + Application Title + + + Enable Barcodes + + src/app/data/paperless-config.ts + 186 + + Enable Barcodes + + + Enable TIFF Support + + src/app/data/paperless-config.ts + 193 + + Enable TIFF Support + + + Barcode String + + src/app/data/paperless-config.ts + 200 + + Barcode String + + + Retain Split Pages + + src/app/data/paperless-config.ts + 207 + + Retain Split Pages + + + Enable ASN + + src/app/data/paperless-config.ts + 214 + + Enable ASN + + + ASN Prefix + + src/app/data/paperless-config.ts + 221 + + ASN Prefix + + + Upscale + + src/app/data/paperless-config.ts + 228 + + Upscale + + + DPI + + src/app/data/paperless-config.ts + 235 + + DPI + + + Max Pages + + src/app/data/paperless-config.ts + 242 + + Max Pages + + + Enable Tag Detection + + src/app/data/paperless-config.ts + 249 + + Enable Tag Detection + + + Tag Mapping + + src/app/data/paperless-config.ts + 256 + + Tag Mapping + + + Warning: You have unsaved changes to your document(s). + + src/app/guards/dirty-doc.guard.ts + 16 + + Warning: You have unsaved changes to your document(s). + + + Unsaved Changes + + src/app/guards/dirty-form.guard.ts + 15 + + + src/app/guards/dirty-saved-view.guard.ts + 27 + + + src/app/services/open-documents.service.ts + 122 + + + src/app/services/open-documents.service.ts + 149 + + Unsaved Changes + + + You have unsaved changes. + + src/app/guards/dirty-form.guard.ts + 16 + + + src/app/services/open-documents.service.ts + 150 + + You have unsaved changes. + + + Are you sure you want to leave? + + src/app/guards/dirty-form.guard.ts + 17 + + Are you sure you want to leave? + + + Leave page + + src/app/guards/dirty-form.guard.ts + 19 + + Leave page + + + You have unsaved changes to the saved view + + src/app/guards/dirty-saved-view.guard.ts + 29 + + You have unsaved changes to the saved view + + + Are you sure you want to close this saved view? + + src/app/guards/dirty-saved-view.guard.ts + 33 + + Are you sure you want to close this saved view? + + + Save and close + + src/app/guards/dirty-saved-view.guard.ts + 37 + + Save and close + + + You don't have permissions to do that + + src/app/guards/permissions.guard.ts + 34 + + You don't have permissions to do that + + + Last year + + src/app/pipes/custom-date.pipe.ts + 14 + + Last year + + + %s years ago + + src/app/pipes/custom-date.pipe.ts + 15 + + %s years ago + + + Last month + + src/app/pipes/custom-date.pipe.ts + 19 + + Last month + + + %s months ago + + src/app/pipes/custom-date.pipe.ts + 20 + + %s months ago + + + Last week + + src/app/pipes/custom-date.pipe.ts + 24 + + Last week + + + %s weeks ago + + src/app/pipes/custom-date.pipe.ts + 25 + + %s weeks ago + + + %s days ago + + src/app/pipes/custom-date.pipe.ts + 30 + + %s days ago + + + %s hour ago + + src/app/pipes/custom-date.pipe.ts + 34 + + %s hour ago + + + %s hours ago + + src/app/pipes/custom-date.pipe.ts + 35 + + %s hours ago + + + %s minute ago + + src/app/pipes/custom-date.pipe.ts + 39 + + %s minute ago + + + %s minutes ago + + src/app/pipes/custom-date.pipe.ts + 40 + + %s minutes ago + + + Just now + + src/app/pipes/custom-date.pipe.ts + 73 + + Just now + + + (no title) + + src/app/pipes/document-title.pipe.ts + 11 + + (no title) + + + You have unsaved changes to the document + + src/app/services/open-documents.service.ts + 124 + + You have unsaved changes to the document + + + Are you sure you want to close this document? + + src/app/services/open-documents.service.ts + 128 + + Are you sure you want to close this document? + + + Are you sure you want to close all documents? + + src/app/services/open-documents.service.ts + 151 + + Are you sure you want to close all documents? + + + Close documents + + src/app/services/open-documents.service.ts + 153 + + Close documents + + + English (US) + + src/app/services/settings.service.ts + 51 + + English (US) + + + Afrikaans + + src/app/services/settings.service.ts + 57 + + Afrikaans + + + Arabic + + src/app/services/settings.service.ts + 63 + + Arabic + + + Belarusian + + src/app/services/settings.service.ts + 69 + + Belarusian + + + Bulgarian + + src/app/services/settings.service.ts + 75 + + Bulgarian + + + Catalan + + src/app/services/settings.service.ts + 81 + + Catalan + + + Czech + + src/app/services/settings.service.ts + 87 + + Czech + + + Danish + + src/app/services/settings.service.ts + 93 + + Danish + + + German + + src/app/services/settings.service.ts + 99 + + German + + + Greek + + src/app/services/settings.service.ts + 105 + + Greek + + + English (GB) + + src/app/services/settings.service.ts + 111 + + English (GB) + + + Spanish + + src/app/services/settings.service.ts + 117 + + Spanish + + + Finnish + + src/app/services/settings.service.ts + 123 + + Finnish + + + French + + src/app/services/settings.service.ts + 129 + + French + + + Hungarian + + src/app/services/settings.service.ts + 135 + + Hungarian + + + Italian + + src/app/services/settings.service.ts + 141 + + Italian + + + Japanese + + src/app/services/settings.service.ts + 147 + + Japanese + + + Korean + + src/app/services/settings.service.ts + 153 + + Korean + + + Luxembourgish + + src/app/services/settings.service.ts + 159 + + Luxembourgish + + + Dutch + + src/app/services/settings.service.ts + 165 + + Dutch + + + Norwegian + + src/app/services/settings.service.ts + 171 + + Norwegian + + + Persian + + src/app/services/settings.service.ts + 177 + + Persian + + + Polish + + src/app/services/settings.service.ts + 183 + + Polish + + + Portuguese (Brazil) + + src/app/services/settings.service.ts + 189 + + Portuguese (Brazil) + + + Portuguese + + src/app/services/settings.service.ts + 195 + + Portuguese + + + Romanian + + src/app/services/settings.service.ts + 201 + + Romanian + + + Russian + + src/app/services/settings.service.ts + 207 + + Russian + + + Slovak + + src/app/services/settings.service.ts + 213 + + Slovak + + + Slovenian + + src/app/services/settings.service.ts + 219 + + Slovenian + + + Serbian + + src/app/services/settings.service.ts + 225 + + Serbian + + + Swedish + + src/app/services/settings.service.ts + 231 + + Swedish + + + Turkish + + src/app/services/settings.service.ts + 237 + + Turkish + + + Ukrainian + + src/app/services/settings.service.ts + 243 + + Ukrainian + + + Vietnamese + + src/app/services/settings.service.ts + 249 + + Vietnamese + + + Chinese Simplified + + src/app/services/settings.service.ts + 255 + + Chinese Simplified + + + Chinese Traditional + + src/app/services/settings.service.ts + 261 + + Chinese Traditional + + + ISO 8601 + + src/app/services/settings.service.ts + 269 + + ISO 8601 + + + Successfully completed one-time migratration of settings to the database! + + src/app/services/settings.service.ts + 603 + + Successfully completed one-time migratration of settings to the database! + + + Unable to migrate settings to the database, please try saving manually. + + src/app/services/settings.service.ts + 604 + + Unable to migrate settings to the database, please try saving manually. + + + You can restart the tour from the settings page. + + src/app/services/settings.service.ts + 677 + + You can restart the tour from the settings page. + + + Connecting... + + src/app/services/upload-documents.service.ts + 25 + + Connecting... + + + Uploading... + + src/app/services/upload-documents.service.ts + 37 + + Uploading... + + + Upload complete, waiting... + + src/app/services/upload-documents.service.ts + 40 + + Upload complete, waiting... + + + HTTP error: + + src/app/services/upload-documents.service.ts + 53 + + HTTP error: + + + Document already exists. + + src/app/services/websocket-status.service.ts + 24 + + Document already exists. + + + Document already exists. Note: existing document is in the trash. + + src/app/services/websocket-status.service.ts + 25 + + Document already exists. Note: existing document is in the trash. + + + Document with ASN already exists. + + src/app/services/websocket-status.service.ts + 26 + + Document with ASN already exists. + + + Document with ASN already exists. Note: existing document is in the trash. + + src/app/services/websocket-status.service.ts + 27 + + Document with ASN already exists. Note: existing document is in the trash. + + + File not found. + + src/app/services/websocket-status.service.ts + 28 + + File not found. + + + Pre-consume script does not exist. + + src/app/services/websocket-status.service.ts + 29 + + Pre-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Pre-consume script does not exist. + + + Error while executing pre-consume script. + + src/app/services/websocket-status.service.ts + 30 + + Pre-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Error while executing pre-consume script. + + + Post-consume script does not exist. + + src/app/services/websocket-status.service.ts + 31 + + Post-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Post-consume script does not exist. + + + Error while executing post-consume script. + + src/app/services/websocket-status.service.ts + 32 + + Post-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Error while executing post-consume script. + + + Received new file. + + src/app/services/websocket-status.service.ts + 33 + + Received new file. + + + File type not supported. + + src/app/services/websocket-status.service.ts + 34 + + File type not supported. + + + Processing document... + + src/app/services/websocket-status.service.ts + 35 + + Processing document... + + + Generating thumbnail... + + src/app/services/websocket-status.service.ts + 36 + + Generating thumbnail... + + + Retrieving date from document... + + src/app/services/websocket-status.service.ts + 37 + + Retrieving date from document... + + + Saving document... + + src/app/services/websocket-status.service.ts + 38 + + Saving document... + + + Finished. + + src/app/services/websocket-status.service.ts + 39 + + Finished. + + + + diff --git a/src-ui/src/locale/messages.hr_HR.xlf b/src-ui/src/locale/messages.hr_HR.xlf index d4fd3c3bf..e6dad3509 100644 --- a/src-ui/src/locale/messages.hr_HR.xlf +++ b/src-ui/src/locale/messages.hr_HR.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Zatvori @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Prethodno @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Sljedeće @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Prethodni mjesec @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Sljedeći mjesec @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zatvori @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Odaberi mjesec @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sati @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Odaberi godinu @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minute @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Prvi @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Povećanje sati @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Prethodni @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Smanjenje sati @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sljedeći @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Povečanje minuta @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zadnji @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Smanjenje minuta @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekunde @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Povečanje sekundi @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Smanjenje sekundi @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumenti @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Postavke @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Enable @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Zapisnici @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Učitavanje... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + What's this? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Advanced search @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Došlo je do pogreške prilikom spremanja postavki. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Zadaci datoteke @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dismiss @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dismiss selected @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Dismiss all @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirm Dismiss All @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 queued @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 započeto @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completed @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 failed @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Delete selected @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirm delete @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Users & Groups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Password has been changed, you will be logged out momentarily. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Saved user "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Error saving user. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirm delete user account @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 This operation will permanently delete this user account. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error saving group. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirm delete user group @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 This operation will permanently delete this user group. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentacija @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Spremljeni prikazi @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Otvoreni dokumenti @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Zatvori sve @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Upravljaj @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 je dostupno. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klikni za prikaz. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx može automatski provjeriti aktualizaciju @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Kako ovo radi? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Dostupno ažuriranje @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Došlo je do pogreške prilikom spremanja postavki ažuriranja. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Očisti @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Potvrda @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Potvrdi @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Sve @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - sada - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Added + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + sada + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritam podudaranja @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Odgovarajući uzorak @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Neosjetljivo na velika i mala slova @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assign document type @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assign correspondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Greška @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Putanja @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Boja + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Oznaka pristigle pošte @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Oznake ulazne pošte automatski se dodjeljuju svim konzumiranim dokumentima. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Izradi novu oznaku @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Preuredi oznaku @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Create new user account @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Edit user account @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nije dodijeljen @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Prijedlozi: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Dodaj predmet @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Dodaj oznaku @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtriraj dokumente sa ovim tag-ovima @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filter by correspondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filter by document type @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter by storage path @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Yes @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 No @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Page @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Odaberi: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Uredi: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Uključi: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" and "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' and "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirm tags assignment @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 This operation will add the tag "" to selected document(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 This operation will add the tags to selected document(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 This operation will remove the tag "" from selected document(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 This operation will remove the tags from selected document(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 This operation will add the tags and remove the tags on selected document(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirm correspondent assignment @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 This operation will assign the correspondent "" to selected document(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 This operation will remove the correspondent from selected document(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirm document type assignment @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 This operation will assign the document type "" to selected document(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 This operation will remove the document type from selected document(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filter by tag @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Select none @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Select page @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Select all - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + Ništa Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sort @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Views @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Save "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Save as... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {One document} other { documents}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtered) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Error while loading documents @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sort by ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sort by title @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sort by owner @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by document type @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by storage path @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sort by created date @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sort by added date @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Edit document @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 View "" saved successfully. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 View "" created successfully. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Title & content @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 More like @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 equals @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 is empty @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 is not empty @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 greater than @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 less than @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Without correspondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Without document type @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Without any tag @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Title: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 dopisnik @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 dopisnici @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Last used @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Do you really want to delete the correspondent ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 vrsta dokumenta @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 vrste dokumenta @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Do you really want to delete the document type ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatski - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Ništa - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 putanja pohrane @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 putanje pohrane @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 oznaka @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 oznake diff --git a/src-ui/src/locale/messages.hu_HU.xlf b/src-ui/src/locale/messages.hu_HU.xlf index c141b936f..0d3348634 100644 --- a/src-ui/src/locale/messages.hu_HU.xlf +++ b/src-ui/src/locale/messages.hu_HU.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Bezár @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Előző @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Következő @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Előző hónap @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 A következő hónapban @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Bezár @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Válassza ki a hónapot @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 "" @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Órák @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 " @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 " @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Év kiválasztása @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Percek @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 "" @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Első @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Növekvő órák @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Előző @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Órák csökkentése @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Következő @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Növekvő percek @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Last @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Percek csökkentése @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Másodpercek @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Növekvő másodpercek @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Másodpercek csökkentése @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumentumok @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Beállítások @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Engedélyezés @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Naplók @@ -742,11 +742,35 @@ Ellenőrizd az alkalmazás és az e-mail lekérdezés naplófájljait. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Mutat + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Betöltés... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Ugrás az oldal aljára + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Mi ez? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Speciális keresés @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Hiba a felhasználók lekérdezésében @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Hiba a csoportok lekérdezésében @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Hiba történt a beállítások mentése közben. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Fájl feladatok @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Elutasít @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Eredmény @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Elveti a kijelöltet @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Elveti az összeset @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Összes elvetés megerősítése @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Az összes feladat elvetése? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 várakozik @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 elindult @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 elkészült @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 sikertelen @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Lomtár @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Kiválasztottak törlése @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Törlés megerősítése @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Felhasználók & Csoportok @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 A jelszó megváltozott, Önt kiléptetjük a rendszerből. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Mentett felhasználó "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Hiba a felhasználó mentésekor. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Felhasználói fiók törlésének megerősítése @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Ez a művelet véglegesen törli ezt a felhasználói fiókot. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 "" felhasználó törölve @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Hiba "" felhasználó törlésekor @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Mentett csoport "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Hiba a csoport mentésekor. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Felhasználói csoport törlésének megerősítése @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Ez a művelet véglegesen törli ezt a felhasználói csoportot. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 "" csoport törölve @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Hiba "" csoport törlésekor @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentáció @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Mentett nézetek @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Dokumentumok megnyitása @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Bezár mindent @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Kezelés @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Adminisztráció @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Beállítások @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 rendelkezésre áll. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Kattintson a megtekintéshez. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 A Paperless-ngx automatikusan ellenőrizni tudja a frissítéseket @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Hogyan működik ez? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Frissítés elérhető @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Oldalsáv nézetek frissítve @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Hiba az oldalsáv nézetek frissítésében @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Hiba történt a frissítési ellenőrzési beállítások mentése közben. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Törlés @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Megerősítés @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Megerősítés @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Igaz @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Hamis @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Keresés a doksiban... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Minden @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Nem @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Lekérdezés hozzáadása @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Kifejezés hozzáadása @@ -3758,18 +3830,6 @@ Relatív dátumok - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - most - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Hozzáadva + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + most + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Egy héten belül @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Egy hónapon belül @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Három hónapon belül @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Egy éven belül @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Idén @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Ebben a hónapban @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Tegnap + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Előző hét + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Előző hónap + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Előző negyedév + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Előző év + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Egyeztető algoritmus @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Megfelelő minta @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Nagy- és kisbetű érzéketlen @@ -3982,19 +4082,11 @@ Opció hozzáadása - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Figyelem: a mező már létező példányai megtartják a jelenlegi index értékeit (például #1, #2, #3 opció) az opciók szerkesztése után - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Alapértelmezett pénznem @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3 betűs valuta kód @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Nyelvi beállítások használata @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Dokumentumtípus hozzárendelése @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Levelező kijelölése @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Hiba @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Útvonal @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Színes + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Beérkező címke @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 A beérkező címkék automatikusan hozzárendelődnek minden feldolgozott dokumentumhoz. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Új címke létrehozása @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Címke szerkesztése @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-mail @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Kétlépcsős hitelesítés @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Kétlépcsős hitelesítés letiltása @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Új felhasználói fiók létrehozása @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Felhasználói fiók szerkesztése @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp letiltva @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp letiltási hiba @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Aktiválás típusa @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Aktiválási eltolás és a használt dátum mező beállítása. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Eltolás ennyi nappal @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Pozitív értékek a dátum után, negatív értékek a dátum előtt fognak aktiválódni. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Ehhez képest @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Egyéni mező @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 A dátumhoz használt egyéni mező. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Ismétlődő @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Az aktiválás ismétlődik. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Ismétlődés intervalluma napokban @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Ismételje meg az aktiválást n naponta. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Azon dokumentumoknál aktiválódjon, amelyekre az alábbi szűrők mindegyike igaz. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Szűrő fájlnév @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 A fájlnévnek megfelelő dokumentumokra alkalmazza. Az olyan helyettesítő karakterek, mint *.pdf vagy *számla* engedélyezettek. Nagy- és kisbetűkre nem érzékeny. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Szűrőforrások @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Szűrési útvonal - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Alkalmazza az erre az elérési útvonalra vonatkozó dokumentumokra. A *-gal megadott helyettesítő karakterek engedélyezettek. Nagy- és kisbetűkre nem érzékeny.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Mail szabály szűrő @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Alkalmazza az ezen a levelezési szabályon keresztül feldolgozott dokumentumokra. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Tartalom mintázati algoritmus @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Tartalom mintázata - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Ezen címkék bármelyikével rendelkezik + Haladó szűrők - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Ez a levelezőpartner + Szűrő hozzáadása - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Ez a dokumentumtípusa + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Tevékenység típusa @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Cím hozzárendelése @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Tartalmazhat dinamikus mezőket, lásd <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>a dokumentációban</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Címkék hozzárendelése @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Tárolási útvonal hozzárendelése @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Egyedi mezők hozzárendelése @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Tulajdonos kijelölése @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Nézetjogosultságok hozzárendelése @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Szerkesztési engedélyek hozzárendelése @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Címkék eltávolítása @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Összes eltávolítása @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Levelezőpartner eltávolítása @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Dokumentumtípus eltávolítása @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Tárolási útvonal eltávolítása @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Egyéni mezők eltávolítása @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Tulajdonosok eltávolítása @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Jogosultságok eltávolítása @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Jogosultságok megjelenítése @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Jogosultságok szerkesztése @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 E-mail tárgya @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 E-mail szövege @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email címzettek @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Dokumentum csatolása @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Paraméterek használata a webhook törzsében @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Webhook tartalom küldése JSON-ként @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook paraméterek @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook törzse @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook fejlécei @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Dokumentum melléklése @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Feldolgozási mappa @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API feltöltés @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail lehívás @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Webes felület @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Egyéni mező @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Feldolgozás megkezdésekor @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Dokumentum hozzáadásakor @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Dokumentum frissítésekor @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Ütemezés szerint @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Hozzárendelés @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Eltávolítás @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Ez a levelezőpartner + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Ez a dokumentumtípusa + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Új munkafolyamat létrehozása @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Munkafolyamat szerkesztése + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 E-mail cím(ek) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Tárgy @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Üzenet @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Archív változat használata @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 E-mail küldése - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Dokumentum küldése + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 E-mail elküldve + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nincs hozzárendelve @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 filter megnyitása @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Javaslatok: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Tétel hozzáadása @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Címke hozzáadása @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Címke eltávolítása @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Szűrje a dokumentumokat ezekkel a címkékkel @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Továbbiak @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Olvasd be a QR kódot a hitelesítő alkalmazással, és add meg a kapott kódot alább @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Hitelesítő titkos kód @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Elmentheted ezt a titkos kódot, hogy fel tudd használni, amennyiben újra kell telepítened a hitelesítő alkalmazásodat. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Kód @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 A helyreállítási kódot nem lehet később megjeleníteni, mindenképpen mentsd el. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Kód másolása @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Az emaileknek egyezniük kell @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 A jelszavaknak egyezniük kell @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profil frissítése sikeresen megtörtént @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Hiba a profil mentésekor @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Hiba az auth token létrehozásakor @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Hiba a közösségi fiók szétkapcsolásakor @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Hiba a TOTP beállítások lekérésekor @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP aktiválása sikeres @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Sikertelen TOTP aktiválás @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deaktiválása sikeres @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Sikertelen TOTP deaktiválás @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Szűrés kapcsolattartó szerint @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Szűrés dokumentumtípus szerint @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Szűrés tárolási útvonal szerint @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Igen @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nem @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Oldal @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Újrafeldolgozás @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF szerkesztő @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Hiba a metaadatok lekérdezésében @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Hiba a javaslatok lekérdezésében. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 "" sikeresen elmentve. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Hiba "" dokumentum mentésekor @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Dokumentum mentési hiba @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Tényleg a lomtárba szeretné helyezni a "" dokumentumot? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 A dokumentumok visszaállíthatóak a végső törlés előtt. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Áthelyezés a lomtárba @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Hiba a dokumentum törlésében @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Újrafeldolgozás megerősítése @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Ez a művelet véglegesen újragenerálja a dokumentum archív fájlját. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Az archív fájl újragenerálódik majd a jelenlegi beállításokkal. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 "" újrafeldolgozása a háttérben kezdődik. A művelet befejezése után zárja be és nyissa meg újra a dokumentumot, vagy töltse be újra, hogy az új tartalom megjelenjen. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Hiba a művelet végrehajtásában @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Hiba a dokumentum letöltésekor @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Oldal illesztése @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 "" PDF szerkesztése a háttérben megkezdődik. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Hiba a PDF szerkesztése közben @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Hiba tiff betöltésekor: @@ -7882,19 +8098,11 @@ Nem található bejegyzés. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Kiválaszt: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Szerkesztés: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Egyéni mezők @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Egyéni mezők szűrése @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Értékek beállítása @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Forgatás @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Összevonás @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Tartalmazza: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archivált fájlok @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Eredeti fájlok @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Formázott fájlnév használata @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Hiba a csoportos művelet végrehajtásában @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" és "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' és "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Címkék hozzárendelésének megerősítése @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Ez a művelet hozzáadja a "" címkét a kiválasztott dokumentum(ok)hoz. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Ez a művelet hozzáadja a címkéket a kiválasztott dokumentum(ok)hoz. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Ez a művelet eltávolítja a "" címkét a kiválasztott dokumentum(ok)ból. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Ez a művelet eltávolítja a címkéket a kiválasztott dokumentum(ok)ból. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Ez a művelet hozzáadja a címkéket és eltávolítja a címkéket a kiválasztott dokumentum(ok)on. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Kapcsolattartói hozzárendelés megerősítése @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Ez a művelet hozzárendeli a megfelelő "" címet a kiválasztott dokumentum(ok)hoz. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Ez a művelet eltávolítja a levelezőt a kiválasztott dokumentum(ok)ból. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Dokumentumtípus hozzárendelés megerősítése @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Ez a művelet a "" dokumentumtípust rendeli a kiválasztott dokumentum(ok)hoz. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Ez a művelet eltávolítja a dokumentumtípust a kiválasztott dokumentum(ok)ból. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Tárolási útvonal hozzárendelésének megerősítése @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Ez a művelet a "" tárolási útvonalat rendeli a kiválasztott dokumentum(ok)hoz. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Ez a művelet eltávolítja a kiválasztott dokumentum(ok) tárolási útvonalát. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Egyéni mező hozzárendelésének megerősítése @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Ez a művelet hozzárendeli a(z) "" egyéni mezőt kiválasztott dokumentumhoz. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Ez a művelet hozzárendeli a(z) egyéni mezőket kiválasztott dokumentumhoz. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Ez a művelet eltávolítja a(z) "" egyéni mezőt kiválasztott dokumentumhoz. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Ez a művelet eltávolítja a(z) egyéni mezőket kiválasztott dokumentumhoz. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Ez a művelet hozzárendeli a(z) egyéni mezőket és eltávolítja a(z) egyéni mezőket kiválasztott dokumentumhoz. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Áthelyezed a kiválasztott dokumentumot a lomtárba? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Ez a művelet véglegesen újragenerálja az archív fájlt a kiválasztott dokumentumhoz. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Az archív fájlok a jelenlegi beállításokkal generálódnak újra. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Forgatás megerősítése @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Ez a művelet véglegesen elforgatja kiválasztott dokumentum eredeti változatát. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Összevonás megerősítése @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Ez a művelet összevon kiválasztott dokumentumot egy új dokumentumba. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Az összevont dokumentum bekerül a feldolgozási sorba. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Egyéni mezők frissítve. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Hiba az egyéni mezők frissítésekor. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Szűrés címke szerint @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Nincs kiválasztás @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Válasszon oldalt @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Összes kiválasztása - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Mutat + + src/app/data/matching-model.ts + 45 + + Nincs Sort src/app/components/document-list/document-list.component.html - 48 + 68 Rendezés @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Nézet @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Mentés "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Mentés másként... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Összes mentett nézet @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Egy dokumentum kiválasztott } other {A dokumentumok kiválasztott -ja}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Egy dokumentum} other { dokumentumok}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (szűrt) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Hiba a dokumentumok betöltése közben @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Rendezés ASN szerint @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Rendezés kapcsolattartó szerint @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Cím szerint rendezni @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Rendezés tulajdonos szerint @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Rendezés jegyzetek szerint @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Rendezés dokumentumtípus szerint @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Rendezés tárolási útvonal szerint @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Létrehozás dátuma szerint rendezni @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Rendezés hozzáadott dátum szerint @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Rendezés az oldalak száma szerint @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Megosztva @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Rendezés szerint @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Dokumentum szerkesztése @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Dokumentum előnézete @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Szűrők / kiválasztás alaphelyzetbe @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Első [kiválasztott] dokumentum megnyitása @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Előző oldal @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Következő oldal @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Nézet "" sikeresen mentve. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 "" nézet mentése sikertelen @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Nézet "" sikeresen létrehozva. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Cím & tartalom @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Fájltípus @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Bővebben @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 egyenlő @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 üres @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 nem üres @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 nagyobb, mint @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 kevesebb, mint @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Levelezőpartner: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Kapcsolattartó nélkül @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Dokumentumtípus: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Dokumentumtípus nélkül @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Tárolási útvonal: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Tárolási útvonal nélkül @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Címke: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Címke nélkül @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Egyéni mező lekérdezés @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Cím: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Tulajdonos: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 A tulajdonos nincs: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Tulajdonos nélkül @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 kapcsolattartó @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 kapcsolattartók @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Utoljára használt @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Tényleg törölni akarja a "" levelezőt? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Dokumentumok szűrése () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 dokumentumtípus @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 dokumentumtípusok @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Tényleg törölni szeretné a "" dokumentumtípust? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Kikapcsolva + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Nincsenek meghatározott levelezési szabályok. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Hiba a levelezési fiókok lekérdezésében @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Hiba a levelezési szabályok lekérdezésében @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Sikeres OAuth2 hitelesítés @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 Sikertelen OAuth2 hitelesítés, részletekért lásd a naplókat @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Elmentett fiók "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Hiba a fiók mentésekor. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Levelezési fiók törlésének megerősítése @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Ez a művelet véglegesen törli ezt a levelezőfiókot. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 "" e-mail fiók törölve @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Hiba "" e-mail fiók törlésekor @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 "" e-mail fiók feldolgozása @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Hiba "" e-mail fiók feldolgozása közben @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Mentett szabály "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Hiba a szabály mentésekor. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 "" szabály engedélyezve. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 "" szabály kikapcsolva. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Hiba "" szabály átkapcsolásakor. @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Levelezési szabály törlésének megerősítése @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Ez a művelet véglegesen törli ezt a levelezési szabályt. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 "" e-mail szabály törölve @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Hiba "" e-mail szabály törlésekor @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Frissített engedélyek @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Hiba az engedélyek frissítésében + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { összesen }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatikus - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Nincs - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Sikeresen létrehozta a . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Hiba történt a létrehozásakor. @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 "" sikeresen frissítve. @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Hiba történt a mentése közben. @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 A kapcsolódó dokumentumok nem kerülnek törlésre. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Hiba elem törlése közben @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Az engedélyek sikeresen frissültek @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Ez a művelet véglegesen törli az összes objektumot. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objektumok sikeresen törölve @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Hiba az objektumok törlésekor @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 tárolási útvonal @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 tárolási útvonalak @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Tényleg törölni szeretné a "" tárolási útvonalat? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 címke @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 címkék diff --git a/src-ui/src/locale/messages.id_ID.xlf b/src-ui/src/locale/messages.id_ID.xlf index 42fb27931..268c253d0 100644 --- a/src-ui/src/locale/messages.id_ID.xlf +++ b/src-ui/src/locale/messages.id_ID.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Tutup @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Sebelumnya @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Selanjutnya @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Bulan sebelumnya @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Bulan depan @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Tutup @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pilih bulan @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Jam @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pilih tahun @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Menit @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pertama @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Penambahan jam @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sebelumnya @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pengurangan jam @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Selanjutnya @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Penambahan menit @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Terahkir @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pengurangan menit @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Detik @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Penambahan detik @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pengurangan detik @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumen @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Pengaturan @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Aktifkan @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Log @@ -742,11 +742,35 @@ Silahkan lihat kembali log file aplikasi dan log email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Tampilkan + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Memuat... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Apa ini? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Pencarian lanjutan @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Kesalahan saat mendapatkan pengguna @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Gagal mengambil daftar grup @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Sebuah kesalahan terjadi saat menyimpan setelan. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Tugas File @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Abaikan @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Hasil @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Abaikan pilihan @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Abaikan semua @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Konfirmasi batalkan semua @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Abaikan semua tugas? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 diantrikan @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 dimulai @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 selesai @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 gagal @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Sampah @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Hapus yang dipilih @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Konfirmasi hapus @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Users & Groups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Kata sandi telah diubah, anda akan dikeluarkan sesaat lagi. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Pengguna yang tersimpan "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Kesalahan saat menyimpan pengguna. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Konfirmasi hapus akun pengguna @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Tindakan ini akan menghapus secara permanen akun pengguna ini. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Gagal menghapus pengguna "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Gagal menghapus pengguna "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Tersimpan grup "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Kesalahan saat menyimpan grup. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Konfirmasi hapus grup pengguna @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Tindakan ini akan menghapus permanen akun pengguna ini. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Grup "" dihapus @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Gagal menghapus grup "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentasi @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Tampilan disimpan @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Buka dokumen @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Tutup semua @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Kelola @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Surel @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administrasi @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfigurasi @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 telah tersedia. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Ketuk untuk melihat. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx dapat secara otomatis memeriksa pembaruan @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Bagaimana ini dapat bekerja? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Pembaruan tersedia @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Tampilan bilah samping telah diperbarui @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Kesalahan saat memperbarui tampilan sisi @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Terjadi kesalahan saat menyimpan setelan pemeriksaan pembaruan. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Bersihkan @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Konfirmasi @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Konfirmasi @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Benar @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Salah @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Cari dokumen... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Semua @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Tidak @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Tambah permintaan @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Tambah ekspresi @@ -3758,18 +3830,6 @@ Tanggal relatif - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - sekarang - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Ditambahkan + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + sekarang + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Dalam 1 minggu @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Dalam 1 bulan @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Dalam 3 bulan @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Dalam 1 tahun @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Tahun ini @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Bulan ini @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Kemarin + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Mencocokkan algoritma @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Pola yang sesuai @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Tidak membedakan huruf besar kecil @@ -3982,19 +4082,11 @@ Tambah opsi - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Peringatan: data yang sudah ada untuk kolom ini akan tetap menggunakan indeks nilai sebelumnya (misal: opsi #1, #2, #3) setelah opsi di sini diubah - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Mata uang default @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-Karakter Kode Mata Uang @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Gunakan locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Tetapkan jenis dokumen @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Tetapkan koresponden @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Galat @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Lokasi folder/file @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Warna + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Induk + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Label kotak masuk @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Otomatisasi pelabelan kotak masuk ke semua dokumen yang di consume. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Buat label baru @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Edit label @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Surel @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Autentikasi dua faktor @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Nonaktifkan autentikasi dua faktor @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Buat akun pengguna baru @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Ubah akun pengguna @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp dinonaktifkan @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Gagal menonaktifkan Totp @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Jenis pemicu @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Atur jeda pemicu terjadwal dan kolom tanggal yang digunakan. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Hari jeda @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Nilai positif akan memicu setelah tanggalnya, nilai negatif sebelum tanggalnya. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relatif terhadap @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Bidang khusus @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Bidang khusus yang digunakan untuk tanggal. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Berulang @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Pemicu berulang. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Hari interval berulang @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Ulangi pemicu setiap n hari. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Aktifkan untuk dokumen yang cocok semua penyaring ditentukan di bawah. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter nama berkas @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Terapkan pada dokumen yang sepenuhnya cocok dengan nama berkas ini. Karakter pengganti seperti *.pdf atau *faktur* diperbolehkan. Abaikan huruf besar/kecil. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sumber @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter lokasi - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Terapkan pada dokumen yang sepenuhnya cocok dengan lokasi ini. Karakter pengganti seperti * diperbolehkan. Huruf dinormalisasi.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter aturan surel @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Terapkan pada dokumen yang di consume lewat aturan surat ini. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Konten yang sesuai algoritma @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Konten sesuai pola - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Punya label + Filter Lanjutan - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Memiliki koresponden + Tambah Filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Memiliki jenis dokumen + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Lengkapi konfigurasi kueri bidang khusus Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Jenis aksi @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Tetapkan judul @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Bisa memasukkan beberapa placeholder, lihat <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>dokumentasi</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Tetapkan label @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Tetapkan lokasi penyimpanan @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Menetapkan variasi kolom @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Tetapkan pemilik @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Tetapkan izin tampilan @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Tetapkan izin edit @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Hapus label @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Hapus semua @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Hapus koresponden @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Hapus jenis dokumen @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Hapus lokasi penyimpanan @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Hapus kolom khusus @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Hapus pemilik @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Hapus izin @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Lihat izin @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Sunting izin @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Subjek email @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Isi email @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Penerima email @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Lampirkan dokumen @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Url webhook @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Gunakan parameter untuk isi webhook @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Kirim payload webhook sebagai JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Parameter webhook @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Isi webhook @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Header webhook @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Sertakan dokumen @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Olah Berkas @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Unggah Menggunakan API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Pengambilan Surat @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Antarmuka Web @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Bidang Khusus @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Memulai Penggunaan @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Dokumen ditambahkan @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Dokumen diperbarui @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Terjadwal @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Tugas @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Penghapusan @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Memiliki apapun dari tag ini + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Memiliki semua dari tag ini + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Tidak memiliki tag ini + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Memiliki koresponden + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Tidak memiliki koresponden + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Memiliki jenis dokumen + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Tidak memiliki jenis dokumen + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Memiliki lokasi penyimpanan + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Tidak memiliki lokasi penyimpanan + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Cocok dengan kueri bidang khusus + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Buat alur kerja baru @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Sunting alur kerja + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Alamat email @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subjek @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Pesan @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Gunakan versi arsip @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Kirim email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Kirim Dokumen via Email + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email berhasil dikirim + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Gagal mengirim dokumen lewat email + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Tidak ditugaskan @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Buka saring @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Saran: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Tambah barang @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Tambah label @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Hapus tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter dokumen dengan label berikut @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Baca selanjutnya @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Pindai kode QR dengan aplikasi autentikator lalu masukkan kodenya di bawah ini @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Kode rahasia autentikator @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Kamu bisa simpan kode rahasia ini untuk menginstal ulang aplikasi autentikator nanti. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Kode @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Kode pemulihan tidak akan ditampilkan lagi, pastikan untuk menyimpannya. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Salin kode @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Surel harus cocok @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Kata sandi harus cocok @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profil berhasil diperbarui @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Kesalahan saat menyimpan profil @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Kesalahan saat membuat token autentikasi @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Kesalahan saat melepaskan akun sosial @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Gagal mengambil pengaturan TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP berhasil diaktifkan @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Gagal mengaktifkan TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP berhasil dinonaktifkan @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Gagal menonaktifkan TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filter berdasarkan koresponden @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filter berdasarkan jenis dokumen @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter berdasarkan lokasi penyimpanan @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ya @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Tidak @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Halaman @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Proses Ulang @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Cetak More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 Editor PDF @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Kesalahan saat mendapatkan metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Gagal mengambil saran. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Dokumen "" berhasil disimpan. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Gagal menyimpan dokumen "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Kesalahan saat menyimpan dokumen @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Yakin ingin memindahkan dokumen "" ke tempat sampah? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Dokumen masih bisa dipulihkan sebelum dihapus permanen. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Pindahkan ke tempat sampah @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Kesalahan saat menghapus dokumen @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Konfirmasi proses ulang @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Tindakan ini akan membuat ulang file arsip dokumen secara permanen. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 File arsip akan dibuat ulang dengan pengaturan saat ini. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Proses ulang untuk "" akan dimulai di latar belakang. Tutup dan buka kembali atau muat ulang dokumen ini setelah proses selesai untuk melihat konten baru. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Gagal menjalankan operasi @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Gagal mengunduh dokumen @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Sesuaikan halaman @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 Proses edit PDF untuk "" akan dimulai di latar belakang. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Gagal menjalankan proses edit PDF @@ -7850,27 +8066,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Pencetakan gagal. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Error memuat dokumen untuk dicetak. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Terjadi kesalahan saat memuat tiff: @@ -7882,19 +8098,11 @@ Tidak ada data ditemukan. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Pilih: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Edit: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Bidang khusus @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Saring bidang khusus @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Atur nilai @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Putar @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Gabungkan @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Sertakan: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Berkas terarsip @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Berkas asli @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Gunakan nama berkas terformat @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Gagal menjalankan operasi massal @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" dan "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' dan "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Konfirmasi penetapan tag @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Tindakan ini akan menambahkan tag "" ke dokumen terpilih. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Tindakan ini akan menambahkan tag ke dokumen terpilih. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Tindakan ini akan menghapus tag "" dari dokumen terpilih. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Tindakan ini akan menghapus tag dari dokumen terpilih. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Tindakan ini akan menambahkan tag dan menghapus tag pada dokumen terpilih. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Konfirmasi penetapan pengirim @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Tindakan ini akan menetapkan pengirim "" ke dokumen terpilih. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Tindakan ini akan menghapus pengirim dari dokumen terpilih. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Konfirmasi penetapan tipe dokumen @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Tindakan ini akan menetapkan tipe dokumen "" ke dokumen terpilih. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Tindakan ini akan menghapus tipe dokumen dari dokumen terpilih. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Konfirmasi penetapan jalur penyimpanan @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Tindakan ini akan menetapkan jalur penyimpanan "" ke dokumen terpilih. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Tindakan ini akan menghapus jalur penyimpanan dari dokumen terpilih. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Konfirmasi penetapan bidang khusus @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Tindakan ini akan menetapkan bidang khusus "" ke dokumen terpilih. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Tindakan ini akan menetapkan bidang khusus ke dokumen terpilih. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Tindakan ini akan menghapus bidang khusus "" dari dokumen terpilih. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Tindakan ini akan menghapus bidang khusus dari dokumen terpilih. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Tindakan ini akan menetapkan bidang khusus dan menghapus bidang khusus pada dokumen terpilih. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Pindahkan dokumen terpilih ke tempat sampah? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Tindakan ini akan membuat ulang berkas arsip secara permanen untuk dokumen terpilih. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Berkas arsip akan dibuat ulang menggunakan pengaturan saat ini. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Konfirmasi rotasi @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Tindakan ini akan memutar versi asli dari dokumen secara permanen. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Konfirmasi penggabungan @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Tindakan ini akan menggabungkan dokumen terpilih menjadi dokumen baru. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Dokumen hasil gabungan akan masuk antrean untuk diproses. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Bidang khusus diperbarui. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Gagal memperbarui bidang khusus. @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filter berdasarkan label @@ -8443,7 +8651,7 @@ src/app/components/document-list/document-card-large/document-card-large.component.html 149 - Score: + Skor: Toggle tag filter @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Kosongkan pilihan @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Pilih halaman @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Pilih semua - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Tampilkan + + src/app/data/matching-model.ts + 45 + + Tidak ada Sort src/app/components/document-list/document-list.component.html - 48 + 68 Urutkan @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Tampilan @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Save "" @@ -8561,23 +8781,23 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 - Save as... + Simpan sebagai... All saved views src/app/components/document-list/document-list.component.html - 97 + 117 - All saved views + Semua view tersimpan {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {One document} other { documents}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (difilter) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,27 +8833,27 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 - Error while loading documents + Error ketika memuat halaman Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 - Sort by ASN + Urutkan berdasarkan ASN ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8643,13 +8863,13 @@ src/app/data/document.ts 88 - ASN + ASN Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Urutkan berdasarkan koresponden @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Urutkan berdasarkan judul @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Urutkan berdasarkan pemilik @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Urutkan berdasarkan catatan @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Urutkan berdasarkan jenis dokumen @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Urutkan berdasarkan lokasi penyimpanan @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Urutkan berdasarkan tanggal dibuat @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Urutkan berdasarkan tanggal ditambahkan @@ -8729,15 +8949,15 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 - Sort by number of pages + Urutkan berdasarkan nomor halaman Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Edit document @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 View "" saved successfully. @@ -8829,7 +9049,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8837,7 +9057,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 View "" created successfully. @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Title & content @@ -8861,7 +9081,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8869,7 +9089,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 More like @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 equals @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 kosong @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 tidak kosong @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 lebih besar dari @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 kurang dari @@ -8917,7 +9137,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8925,7 +9145,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Tanpa koresponden @@ -8933,7 +9153,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8941,7 +9161,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Tanpa tipe dokumen @@ -8949,7 +9169,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8957,7 +9177,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Tanpa lokasi penyimpanan @@ -8965,7 +9185,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8973,7 +9193,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Tanpa label apapun @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Title: @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Tanpa pemilik @@ -9157,7 +9377,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 koresponden @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 koresponden @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Terahkir digunakan @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Apakah Anda yakin ingin menghapus koresponden ""? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 jenis dokumen @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 jenis dokumen @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Do you really want to delete the document type ""? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9477,7 +9705,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9485,7 +9713,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9493,7 +9721,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Izin diperbarui @@ -9589,14 +9817,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9661,19 +9929,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9681,7 +9949,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9957,11 @@ Otomatis - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Tidak ada - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9713,7 +9969,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9721,7 +9977,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9729,7 +9985,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9737,7 +9993,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9745,7 +10001,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9753,7 +10009,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9761,7 +10017,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9769,7 +10025,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9777,7 +10033,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9865,7 +10121,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 lokasi penyimpanan @@ -9873,7 +10129,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 lokasi penyimpanan @@ -9881,7 +10137,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9889,7 +10145,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tag @@ -9897,7 +10153,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 tandai diff --git a/src-ui/src/locale/messages.it_IT.xlf b/src-ui/src/locale/messages.it_IT.xlf index da35a6967..6ed397526 100644 --- a/src-ui/src/locale/messages.it_IT.xlf +++ b/src-ui/src/locale/messages.it_IT.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Chiudi @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Precedente @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Successivo @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mese precedente @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Il prossimo mese @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Chiudi @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seleziona il mese @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ore @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seleziona anno @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuti @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Primo @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementa ore @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Precedente @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrementa ore @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Successivo @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementa minuti @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ultimo @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrementa minuti @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Secondi @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incremento in secondi @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decremento in secondi @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documenti @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Impostazioni @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Abilita @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Log @@ -742,11 +742,35 @@ Esaminare i file di registro per l'applicazione e per il controllo della posta elettronica. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Mostra + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + righe + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Caricamento in corso... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Cos'è questo? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Ricerca avanzata @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Errore nel recupero degli utenti @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Errore nel recupero dei gruppi @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Si è verificato un errore durante il salvataggio delle impostazioni. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Attività File @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Ignora @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Risultato @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Ignora selezionati @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Ignora tutto @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Conferma Ignora Tutto @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Ignorare tutte le attività ? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Errore nel rimuovere l'attività + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Errore nel rimuovere le attività + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 in coda @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 avviato @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completato @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 fallito @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Cestino @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Elimina selezionati @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Conferma eliminazione @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Utenti & gruppi @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 La password è stata cambiata, sarai disconnesso momentaneamente. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Salvato utente "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Errore durante il salvataggio dell'utente. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Conferma eliminazione account utente @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Questa operazione eliminerà definitivamente l'account utente. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Utente "" eliminato @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Errore durante l'eliminazione dell'utente "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Salvato gruppo "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Errore durante il salvataggio del gruppo. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Conferma eliminazione gruppo utenti @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Questa operazione eliminerà definitivamente il gruppo. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Gruppo "" eliminato @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Errore durante l'eliminazione del gruppo "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentazione @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Viste salvate @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Apri documenti @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Chiudi tutti @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Gestisci @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 E-Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Amministrazione @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configurazione @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 è disponibile. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Clicca per visualizzare. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx può controllare automaticamente la presenza di aggiornamenti @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Come funziona? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Aggiornamento disponibile @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Viste barra laterale aggiornate @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Errore nell'aggiornamento delle viste della barra laterale @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Si è verificato un errore durante il salvataggio delle impostazioni sugli aggiornamenti. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Pulisci @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Conferma @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Conferma @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Vero @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Falso @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Ricerca di documenti... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Tutto @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Non @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Aggiungi query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Aggiungi espressione @@ -3758,18 +3830,6 @@ Date relative - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - adesso - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Aggiunto + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + adesso + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Entro una settimana @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Entro 1 mese @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Entro 3 mesi @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Entro 1 anno @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Quest'anno @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Questo mese @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Ieri + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritmo di assegnazione @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Criterio di assegnazione @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Senza distinzione tra maiuscole e minuscole @@ -3982,19 +4082,11 @@ Aggiungi opzione - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Attenzione: le istanze esistenti di questo campo manterranno il loro indice di valore corrente (ad es. opzione #1, #2, #3) dopo aver modificato le opzioni qui - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Valuta predefinita @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Valuta a 3 caratteri @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Usa locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assegna tipo di documento @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assegna corrispondente @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Errore @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Percorso @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Colore + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Tag di arrivo @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 I tag di arrivo vengono assegnati automaticamente a tutti i documenti elaborati. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Crea nuovo tag @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Modifica tag @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Autenticazione a due fattori @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disabilita autenticazione a due fattori @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Crea nuovo account utente @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Modifica account utente @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 TOTP disattivato @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Disattivazione del TOTP fallita @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Tipo di trigger @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Imposta un offset di attivazione programmato e quale campo data usare. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset in giorni @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Valori positivi si attiveranno dopo la data, i valori negativi prima. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relativo a @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Campo personalizzato @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Campo personalizzato da usare per la data. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Ricorrente @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Il trigger si ripete. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Intervallo di ripetizione in giorni @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Ripeti il trigger ogni n giorni. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Attiva per i documenti che corrispondono a tutti filtri specificati di seguito. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtra nome file @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Elabora i documenti che corrispondono a questo nome. Puoi usare wildcard come *.pdf o *fattura*. Ignora maiuscole e minuscole. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtra sorgenti @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtro percorso - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Applica ai documenti che corrispondono a questo percorso. I caratteri jolly specificati come * sono consentiti. Case-normalizzato.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Regola e-mail @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Applica ai documenti elaborati attraverso questa regola di posta. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Algoritmo di corrispondenza contenuti @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Modello di corrispondenza contenuti - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Ha uno dei tag + Filtri Avanzati - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Ha corrispondente + Aggiungi filtro - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Ha tipo di documento + Nessun filtro avanzato del workflow definito. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Completa la configurazione della query di campo personalizzato. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Tipo di Azione @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assegna titolo @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Può includere alcuni segnaposto, vedere <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assegna tag @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assegna percorso di archiviazione @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assegna campi personalizzati @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assegna proprietario @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assegna permessi di visualizzazione @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assegna permessi di modifica @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Rimuovi tag @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Rimuovi tutto @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Rimuovi corrispondenti @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Rimuovi tipi di documento @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Rimuovi percorsi di archiviazione @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Rimuovi campi personalizzati @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Rimuovi proprietari @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Rimuovi permessi @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Visualizza permessi @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Modifica permessi @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Oggetto email @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Corpo e-mail @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Destinatari email @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Allega documento @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook URL @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Usa parametri per il corpo del webhook @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Invia il payload del webhook come JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Parametri Webhook @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Corpo Webhook @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Header Webhook @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Includi documento @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Cartella di elaborazione @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Upload API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Recupero Posta @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Interfaccia web @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Campo personalizzato @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Elaborazione avviata @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Documento Aggiunto @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Documento Aggiornato @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Programmato @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assegnazione @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Rimozione @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Ha qualcuna di queste etichette + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Ha tutte queste etichette + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Non ha queste etichette + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Ha corrispondente + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Non ha corrispondenti + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Ha tipo di documento + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Non ha questi tipi di documento + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Ha percorso di archiviazione + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Non ha percorso di archiviazione + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Corrisponde a campo personalizzato + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Crea un nuovo flusso di lavoro @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Modifica flusso di lavoro + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Indirizzo/i email @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Oggetto @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Messaggio @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Usa versione archiviata @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Invia email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Invia Documento via email + Alcuni server di posta elettronica possono rifiutare messaggi con allegati di grandi dimensioni. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email inviata + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Errore durante l'invio dei documenti + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Non assegnato @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Apri filtro @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Suggerimenti: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Aggiungi elemento @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Aggiungi tag @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Rimuovi etichetta @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtra i documenti con queste etichette @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Continua a leggere @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scansiona il codice QR con la tua app di autenticazione e poi inserisci il codice qui sotto @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Secret di autenticazione @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Puoi memorizzare questo secret e usarlo per reinstallare la tua app di autenticazione in un secondo momento. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Codice @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 I codici di recupero non verranno mostrati di nuovo, assicurati di salvarli. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copia codici @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Le email devono corrispondere @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Le password devono corrispondere @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profilo aggiornato con successo @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Errore durante il salvataggio del profilo @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Errore nella generazione del token di autenticazione @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Errore disconnessione account social @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Errore nel recupero delle impostazioni TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP attivato con successo @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Errore nell'attivazione del TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP disattivato con successo @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Errore nella disattivazione del TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + Ok Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtra per corrispondente @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtra per tipo di documento @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtra per percorso di archiviazione @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 No @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Pagina @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Rielabora @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Stampa More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 Editor PDF @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Errore nel recupero dei metadati @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Errore durante il recupero dei suggerimenti. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Documento "" salvato con successo. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Errore durante il savataggio del documento "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Errore nel salvare il documento @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Vuoi davvero spostare il documento "" nel cestino? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 I documenti possono essere ripristinati prima della cancellazione definitiva. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Sposta nel cestino @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Errore durante l'eliminazione del documento @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Conferma rielaborazione @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Questa operazione ricreerà in modo permanente il file di archivio per questo documento. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Il file di archivio verrà rigenerato con le impostazioni attuali. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 L'attività di rielaborazione per "" inizierà in background. Chiudi e riapri o ricarica questo documento dopo che l'operazione è stata completata per vedere i nuovi contenuti. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Errore nell'esecuzione dell'operazione @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Errore durante il download del documento @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Adatta Alla Pagina @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 L'operazione di modifica PDF per "" inizierà in background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Errore durante l'operazione di modifica PDF @@ -7850,27 +8066,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Stampa non riuscita. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Errore nel caricamento del documento per la stampa. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Errore durante il caricamento della TIFF: @@ -7882,19 +8098,11 @@ Nessun elemento trovato. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Seleziona: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Modifica: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Campi personalizzati @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filtra campi personalizzati @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Imposta valori @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Ruota @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Unisci @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Includere: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 File archiviati @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 File originali @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Usa nome file formattato @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Errore nell'esecuzione dell'operazione in blocco @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" e "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' e "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Conferma assegnazione tag @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Questa operazione aggiungerà il tag "" a documento/i selezionato/i. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Questa operazione aggiungerà i tag a documento/i selezionato/i. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Questa operazione rimuoverà il tag "" da documento/i selezionato/i. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Questa operazione rimuoverà i tag da documento/i selezionato/i. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Questa operazione aggiungerà i tag e rimuoverà i tag a documento/i selezionato/i. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Conferma assegnazione corrispondente @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Questa operazione assegnerà il corrispondente "" a documento/i selezionato/i. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Questa operazione rimuoverà il corrispondente da documento/i selezionato/i. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Conferma assegnazione tipo di documento @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Questa operazione assegnerà il tipo di documento "" a documento/i selezionato/i. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Questa operazione eliminerà il tipo di documento da documento/i selezionato/i. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Conferma assegnazione percorso di archiviazione @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Questa operazione assegnerà il percorso di archiviazione "" a documento/i selezionato/i. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Questa operazione rimuoverà il percorso di archiviazione da documento/i selezionato/i. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Conferma assegnazione campo personalizzato @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Questa operazione assegnerà il campo personalizzato "" a documenti selezionati. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Questa operazione assegnerà i campi personalizzati a documenti selezionati. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Questa operazione rimuoverà il campo personalizzato "" da documenti selezionati. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Questa operazione assegnerà i campi personalizzati da documenti selezionati. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Questa operazione assegnerà i campi personalizzati e rimuoverà i campi personalizzati su documenti selezionati. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Spostare documenti selezionati nel cestino? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Questa operazione ricreerà in modo permanente i file di archivio per i documenti selezionati. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 I file di archivio verranno rigenerati con le impostazioni attuali. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Conferma rotazione @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Questa operazione ruoterà in modo permanente la versione originale di documenti. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Conferma unione @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Questa operazione unirà documenti selezionati in nuovi documenti. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Il documento unito sarà messo in coda per l'elaborazione. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Campi personalizzati aggiornati. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Errore nell'aggiornamento dei campi personalizzati. @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtra per tag @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Seleziona nessuno @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Seleziona pagina @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Seleziona tutti - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Seleziona: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Mostra + + src/app/data/matching-model.ts + 45 + + Niente Sort src/app/components/document-list/document-list.component.html - 48 + 68 Ordina @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Viste @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Salva "" @@ -8561,7 +8781,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Salva come... @@ -8569,7 +8789,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Tutte le viste salvate @@ -8577,7 +8797,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selezionato di un documento} other {Selezionati di documenti}} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Un documento} other { documenti}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrato) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,7 +8833,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Errore durante il caricamento dei documenti @@ -8621,7 +8841,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Ordina per ASN @@ -8629,11 +8849,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8649,7 +8869,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Ordina per corrispondente @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Ordina per titolo @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Ordina per proprietario @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Ordina per note @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Ordina per tipo di documento @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Ordina per percorso di archiviazione @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Filtra per data di creazione @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Ordina per data di aggiunta @@ -8729,7 +8949,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Ordina per numero di pagine @@ -8737,7 +8957,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Condiviso @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Ordina per @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Modifica documento @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Anteprima documento @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Azzera filtri / selezione @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Apri il primo documento [selezionato] @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Pagina precedente @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Pagina successiva @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 La vista "" è stata salvata. @@ -8829,7 +9049,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Impossibile salvare la vista "". @@ -8837,7 +9057,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 La vista "" è stata creata. @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titolo & contenuto @@ -8861,7 +9081,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Tipo di file @@ -8869,7 +9089,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Più come @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 uguale a @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 è vuoto @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 non è vuoto @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 maggiore di @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 minore di @@ -8917,7 +9137,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Corrispondente: @@ -8925,7 +9145,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Senza corrispondente @@ -8933,7 +9153,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Tipo di documento: @@ -8941,7 +9161,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Senza tipo di documento @@ -8949,7 +9169,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Percorso di archiviazione: @@ -8957,7 +9177,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Senza percorso di archiviazione @@ -8965,7 +9185,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Etichetta: @@ -8973,7 +9193,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Senza alcun tag @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Query campi personalizzati @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Titolo: @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Proprietario: @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Proprietario non in: @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Senza proprietario @@ -9157,7 +9377,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 corrispondente @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 corrispondenti @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Ultimo utilizzato @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Vuoi eliminare il corrispondente ""? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filtra Documenti () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 tipo di documento @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 tipi di documento @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Vuoi eliminare il tipo di documento ""? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ Disabilitato + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Visualizza Email Elaborata + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Nessuna regola email definita. @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Errore nel recupero degli account di posta @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Errore nel recupero delle regole di posta @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Autenticazione OAuth2 riuscita @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 Autenticazione OAuth2 non riuscita, vedere i log per i dettagli @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Account "" salvato. @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Errore durante il salvataggio dell'account. @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Conferma eliminazione dell'account email @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Questa operazione eliminerà definitivamente questo account email. @@ -9477,7 +9705,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Account email "" eliminato @@ -9485,7 +9713,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Errore durante l'eliminazione dell'account mail "". @@ -9493,7 +9721,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Elaborazione account email "" @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Errore nell'elaborazione dell'account email "" @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Regola "" salvata. @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Errore durante il salvataggio della regola. @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Regola "" abilitata. @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Regola "" disabilitata. @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Errore di attivazione della regola "". @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Conferma eliminazione della regola email @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Questa operazione eliminerà definitivamente questa regola di posta. @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Regola email "" eliminata @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Errore durante l'eliminazione della regola "". @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permessi aggiornati @@ -9589,14 +9817,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Errore durante l'aggiornamento dei permnessi + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Posta processata per + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Nessun messaggio email elaborato trovato. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Ricevuto + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Elaborato + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Email processate cancellate + Filter by: @@ -9661,19 +9929,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Uno } other { totale }} @@ -9681,7 +9949,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9957,11 @@ Automatico - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Niente - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 è stato creato con successo. @@ -9713,7 +9969,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Errore durante la creazione di . @@ -9721,7 +9977,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 "" aggiornato con successo. @@ -9729,7 +9985,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Errore durante e il salvataggio di . @@ -9737,7 +9993,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 I documenti associati non verranno eliminati. @@ -9745,7 +10001,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Errore durante l'eliminazione dell'elemento @@ -9753,7 +10009,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permessi aggiornati @@ -9761,7 +10017,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Questa operazione eliminerà permanentemente tutti gli oggetti. @@ -9769,7 +10025,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Oggetti eliminati con successo @@ -9777,7 +10033,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Errore nell'eliminazione degli oggetti @@ -9865,7 +10121,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 percorso di archiviazione @@ -9873,7 +10129,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 percorsi di archiviazione @@ -9881,7 +10137,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Vuoi eliminare il percorso di archiviazione ""? @@ -9889,7 +10145,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tag @@ -9897,7 +10153,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 tag @@ -10179,7 +10435,7 @@ src/app/data/custom-field.ts 55 - Long Text + Testo Lungo Search score diff --git a/src-ui/src/locale/messages.ja_JP.xlf b/src-ui/src/locale/messages.ja_JP.xlf index 4f7a18d43..04f3efa60 100644 --- a/src-ui/src/locale/messages.ja_JP.xlf +++ b/src-ui/src/locale/messages.ja_JP.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 閉じる @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 前へ @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 次へ @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 前月 @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 翌月 @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 閉じる @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 月を選択 @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 西暦を選択 @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 先頭ページ @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 時の増加 @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 前へ @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 時の減少 @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 次へ @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 分の増加 @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 最終ページ @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 分の減少 @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 秒の増加 @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 秒の減少 @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 ドキュメント @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 システム設定 @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 有効にする @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 ログ @@ -742,11 +742,35 @@ アプリケーションとメールチェックのログファイルを確認してください + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + 表示 + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ 読み込み中... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + これは何ですか? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 高度な検索 @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 ユーザーの取得に失敗しました @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 グループの取得に失敗しました @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 設定の保存中にエラーが発生しました @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 ファイルタスク @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 非表示にする @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 結果 @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 非表示にする @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 すべて非表示にする @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 すべて非表示にしますか? @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 個すべてのタスクを非表示にしますか? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 待機中 @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 処理中 @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 完了した @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 失敗した @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 ごみ箱 @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + 選択項目を削除 @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 本当に削除しますか? @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 ユーザー & グループ @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 パスワードが変更されました。一時的にログアウトされます。 @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 ユーザー "" を保存しました @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 ユーザーの保存に失敗しました @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 ユーザーアカウントを削除しますか? @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 この操作により、このユーザーアカウントは完全に削除されます。 @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 ユーザー「」を削除しました @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 ユーザー「」の削除中にエラーが発生しました。 @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 グループ "" を保存しました @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 グループの保存に失敗しました @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 グループを削除しますか? @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 この操作により、このグループは完全に削除されます。 @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 グループ「」を削除しました @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 グループ「」の削除中にエラーが発生しました。 @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 マニュアル @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 保存済みビュー @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 開いているドキュメント @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 すべて閉じる @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 ドキュメント管理 @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 メール @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 システム管理 @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 設定 @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 が利用可能です。 @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 クリックして表示 @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngxは自動的にアップデートを確認できます @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 アップデートの自動確認機能について @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 アップデートがあります。 @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 サイドバービューを更新しました @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 サイドバービューの更新に失敗しました @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 アップデートの確認設定の保存中にエラーが発生しました @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + 解除 @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 確認 @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 確認 @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 ドキュメントを検索... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 すべて @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 クエリの追加 @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 式の追加 @@ -3758,18 +3830,6 @@ 相対的な日付 - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - 現在 - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ 追加日 + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + 現在 + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 1週間以内 @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 1か月間以内 @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 3か月間以内 @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 1年以内 @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 今年 @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 今月 @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ 昨日 + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 マッチングアルゴリズム @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 マッチングパターン @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 大文字・小文字を区別しない @@ -3982,19 +4082,11 @@ 追加オプション - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - 警告: このフィールドの既存のインスタンスは、ここでオプションを編集した後も現在の値インデックス (例: オプション #1、#2、#3) を保持します。 - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 デフォルトの通貨 @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3文字の通貨コード @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 ロケールを使用 @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 ドキュメントタイプの割り当て @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 発信元の割り当て @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + エラー @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 フォルダーのパス @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 受信トレイタグ @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 受信トレイタグは、すべてのドキュメントに自動的に割り当てられます。 @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 新規タグの作成 @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 タグの編集 @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + メールアドレス @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 2要素認証 @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 2要素認証を無効にする @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 新規ユーザーアカウントの作成 @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 ユーザーアカウントの編集 @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 TOTPが無効です @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 TOTPの無効化に失敗しました @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 トリガーの種類 @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 スケジュールされたトリガー オフセットと使用する日付フィールドを設定します。 @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 オフセット日 @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 相対的に @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 カスタムフィールド @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 日付に使用するカスタムフィールドです。 @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 繰り返し @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 トリガーは繰り返します。 @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 繰り返しの間隔 @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 n日ごとにトリガーを繰り返します。 @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 以下の すべての フィルターにマッチするドキュメントのトリガー @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 ファイル名のフィルター @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 このファイル名にマッチするドキュメントに適用されます。 *.pdf や *請求書* などのワイルドカードが使用できます。大文字・小文字を区別しません。 @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 ソースのフィルター @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 パスのフィルター - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - このパスにマッチするドキュメントに適用されます。 * で指定されたワイルドカードが使用できます。大文字・小文字を区別しません。 + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 メールルールのフィルター @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 このメールルールを介して利用されるドキュメントに適用されます。 @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 内容のマッチングアルゴリズム @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 内容のマッチングパターン - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - タグがあります + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - 発信元 + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - ドキュメントタイプ + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 アクションの種類 @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 タイトルの割り当て @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 プレースホルダーを含めることができます。 <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>マニュアル</a> を参照してください。 @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 タグの割り当て @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 フォルダーの割り当て @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 カスタム項目の割り当て @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 所有者の割り当て @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 表示権限の割り当て @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 編集権限の割り当て @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 タグの削除 @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 すべて削除 @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 発信元の削除 @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 ドキュメントタイプの削除 @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 フォルダーの削除 @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 カスタム項目の削除 @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 所有者の削除 @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 権限の削除 @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 権限の表示 @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 権限の編集 @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 メールの件名 @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 メール本文 @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 メール受信者 @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 ドキュメントを添付 @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook URL @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Webhook本文にパラメータを使用する @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 WebhookペイロードをJSONとして送信 @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhookパラメータ @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook本文 @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhookヘッダー @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 ドキュメントを含める @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 フォルダーの利用 @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API アップロード @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 メールの取得 @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 ウェブUI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 カスタムフィールド @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 利用開始時 @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 ドキュメントの追加時 @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 ドキュメントの更新時 @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 スケジュール済 @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 割り当て @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 削除 @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + 発信元 + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + ドキュメントタイプ + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 新規ワークフローの作成 @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 ワークフローの編集 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 メール アドレス(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 件名 @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 メッセージ @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 アーカイブバージョンを使用します @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 メール送信 - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - メールドキュメント + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 メールを送信しました + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned 未割り当て @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 フィルタを開く @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 提案: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths アイテムを追加 @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 タグを追加 @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 タグを削除 @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 これらのタグでドキュメントをフィルター @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + 続きを読む @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 認証アプリでQRコードをスキャンし、以下のコードを入力してください @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 認証シークレット @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 このシークレットを保存して後で認証アプリを再インストールすることができます。 @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 コード @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 リカバリコードは再度表示されないので、必ず保存してください。 @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 コードをコピー @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 メールアドレスが一致しません @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 パスワードが一致しません @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 プロフィールは正常に更新されました @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 プロフィールの保存に失敗しました @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 認証トークンの生成に失敗しました @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 ソーシャルアカウントの接続解除に失敗しました @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 TOTP設定の取得中にエラーが発生しました @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTPが正常に有効になりました @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 TOTPの有効化に失敗しました @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTPを無効にしました @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 TOTPの無効化に失敗しました @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 発信元でフィルター @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 ドキュメントタイプでフィルター @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 フォルダーでフィルター @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 はい @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 いいえ @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 ページ @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 再処理 @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 メタデータの取得に失敗しました @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 提案の取得に失敗しました @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 ドキュメント「」が正常に保存されました。 @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 ドキュメント「」の保存中にエラーが発生しました @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 ドキュメントの保存に失敗しました @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 ドキュメント "" をごみ箱に移動しますか? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 ドキュメントは永久に削除される前に復元できます。 @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 ごみ箱へ移動 @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 ドキュメントの削除に失敗しました @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 再処理の確認 @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 この操作により、このドキュメントのアーカイブファイルが永続的に再作成されます。 @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 アーカイブファイルは現在の設定で再生成されます。 @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 」の再処理操作がバックグラウンドで開始されます。操作が完了したら、このドキュメントを閉じて再度開くか、再読み込みして新しいコンテンツを表示してください。 @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 操作の実行に失敗しました @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 ドキュメントのダウンロードに失敗しました @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 ページに合わせる @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 TIFFの読み込み中にエラーが発生しました: @@ -7882,19 +8098,11 @@ エントリーが見つかりません。 - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - 選択: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 編集: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 カスタム項目 @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 カスタムフィールドをフィルタ @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 値の設定 @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 回転 @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 結合 @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 以下を含める: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 アーカイブされたファイル @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 元のファイル @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 フォーマット済みのファイル名を使用 @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 一括操作の実行に失敗しました @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" と "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' と "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 タグを割り当てますか? @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 この操作により、選択中の ドキュメントにタグ "" が追加されます。 @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 この操作により、選択中の ドキュメントにタグ が追加されます。 @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 この操作により、選択中の ドキュメントからタグ "" が削除されます。 @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 この操作により、選択中の ドキュメントからタグ が削除されます。 @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 この操作により、選択中の ドキュメントにタグ が追加され、タグ が削除されます。 @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 発信元を割り当てますか? @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 この操作により、選択された件のドキュメントに発信元「」が割り当てられます。 @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 この操作により、選択された件のドキュメントから発信元が削除されます。 @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 ドキュメントタイプを割り当てますか? @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 この操作により、選択中の ドキュメントにドキュメントタイプ "" が割り当てられます。 @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 この操作により、選択中の ドキュメントからドキュメントタイプが削除されます。 @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 フォルダーを割り当てますか? @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 この操作により、選択中の ドキュメントにフォルダー "" が割り当てられます。 @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 この操作により、選択中の ドキュメントからフォルダーが削除されます。 @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 カスタムフィールドの割り当てを確認 @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 この操作により、カスタムフィールド "" が選択されたドキュメント に割り当てられます。 @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 この操作により、カスタムフィールド "" が選択されたドキュメント に割り当てられます。 @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 この操作により、カスタムフィールド "" が選択したドキュメント から削除されます。 @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 この操作により、カスタムフィールド が選択したドキュメント から削除されます。 @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 この操作により、選択したドキュメント にカスタムフィールド が割り当てられ、カスタムフィールド が削除されます。 @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 選択したドキュメント をゴミ箱に移動しますか? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 この操作により、選択した のドキュメントのアーカイブ ファイルが永続的に再作成されます。 @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 アーカイブファイルは現在の設定で再生成されます。 @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 本当に回転しますか? @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 この操作により、 ドキュメントの元のバージョンが恒久的に回転します。 @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 本当に結合しますか? @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 この操作により、選択中の ドキュメントが新しいドキュメントに分割されます @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 結合されたドキュメントはキューに追加されます @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 カスタムフィールドを更新しました。 @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 カスタムフィールドの更新中にエラーが発生しました。 @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 タグでフィルター @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 選択を解除 @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 ページ内を選択 @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 すべて選択 - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - 表示 + + src/app/data/matching-model.ts + 45 + + なし Sort src/app/components/document-list/document-list.component.html - 48 + 68 並び替え @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 ビュー @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 "" を保存 @@ -8561,7 +8781,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 名前を付けて保存... @@ -8569,7 +8789,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 すべての保存されたビュー @@ -8577,7 +8797,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 { ドキュメントを選択中} other { ドキュメント中の ドキュメントを選択中}} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {1 ドキュメント} other { ドキュメント}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (フィルター適用) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,7 +8833,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 ドキュメントの読み込みに失敗しました @@ -8621,7 +8841,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 ASN で並べ替え @@ -8629,11 +8849,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8649,7 +8869,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 発信元で並べ替え @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 タイトルで並べ替え @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 所有者で並べ替え @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 メモで並べ替え @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 ドキュメントタイプで並べ替え @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 フォルダーで並べ替え @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 作成日で並べ替え @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 追加日で並べ替え @@ -8729,7 +8949,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 ページ数でソート @@ -8737,7 +8957,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 共有済み @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 でソート @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 ドキュメントを編集 @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 ドキュメントのプレビュー @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 フィルター/選択をリセット @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 最初の [selected] ドキュメントを開く @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 前のページ @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 次のページ @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 ビュー "" は正常に保存されました @@ -8829,7 +9049,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 ビュー " " を保存できませんでした。 @@ -8837,7 +9057,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 ビュー "" は正常に作成されました @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 タイトルと内容 @@ -8861,7 +9081,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 ファイル形式 @@ -8869,7 +9089,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 類似 @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 が次の値と等しい @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 が空である @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 が空でない @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 が次の値より大きい @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 が次の値より小さい @@ -8917,7 +9137,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 発信元: @@ -8925,7 +9145,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 発信元なし @@ -8933,7 +9153,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 ドキュメントタイプ: @@ -8941,7 +9161,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 ドキュメントタイプなし @@ -8949,7 +9169,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 ストレージパス: @@ -8957,7 +9177,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 フォルダーなし @@ -8965,7 +9185,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 タグ: @@ -8973,7 +9193,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 タグなし @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 カスタムフィールドのクエリ @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 タイトル: @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 所有者: @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 所有者がいない: @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 所有者なし @@ -9157,7 +9377,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 発信元 @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 発信元 @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 最終使用日 @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 発信元 "" を削除してもよろしいですか? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 ドキュメントのフィルター () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 ドキュメントタイプ @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 ドキュメントタイプ @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 ドキュメントタイプ "" を削除してもよろしいですか? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ 無効 + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 メールルールは定義されていません。 @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 メールアカウントの取得に失敗しました @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 メールルールの取得に失敗しました @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2認証に成功 @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2認証に失敗しました。詳細はログを参照してください @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 アカウント " " を保存しました。 @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 アカウントの保存に失敗しました @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 メールアカウントを削除しますか? @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 この操作により、このメールアカウントは完全に削除されます。 @@ -9477,7 +9705,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 メール アカウント「」を削除しました @@ -9485,7 +9713,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 メール アカウント「」の削除中にエラーが発生しました。 @@ -9493,7 +9721,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 メール アカウント「」を処理しています @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 メール アカウント""の処理中にエラーが発生しました @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 ルール "" を保存しました @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 ルールの保存に失敗しました @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 ルール "" は有効です。 @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 ルール "" は無効です。 @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 ルール「」の切り替え中にエラーが発生しました。 @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 メールルールを削除しますか? @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 この操作により、このメールルールは完全に削除されます。 @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 メールルール「」を削除しました @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 メールルール「」の削除中にエラーが発生しました。 @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 権限が更新されました @@ -9589,14 +9817,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 権限の更新に失敗しました + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9661,19 +9929,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {1 個の } other {計 個の }} @@ -9681,7 +9949,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9957,11 @@ 自動 - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - なし - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 は正常に作成されました @@ -9713,7 +9969,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 の作成中にエラーが発生しました @@ -9721,7 +9977,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 "" を正常に更新しました。 @@ -9729,7 +9985,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 の保存中にエラーが発生しました @@ -9737,7 +9993,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 割り当てられたドキュメントは削除されません @@ -9745,7 +10001,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 要素の削除中にエラーが発生しました @@ -9753,7 +10009,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 権限は正常に更新されました @@ -9761,7 +10017,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 この操作により、すべてのオブジェクトは完全に削除されます。 @@ -9769,7 +10025,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 オブジェクトは正常に削除されました @@ -9777,7 +10033,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 オブジェクトの削除に失敗しました @@ -9865,7 +10121,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 フォルダー @@ -9873,7 +10129,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 フォルダー @@ -9881,7 +10137,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 フォルダー "" を削除してもよろしいですか? @@ -9889,7 +10145,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 タグ @@ -9897,7 +10153,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 タグ diff --git a/src-ui/src/locale/messages.ko_KR.xlf b/src-ui/src/locale/messages.ko_KR.xlf index 1c0d103f2..17013b8f1 100644 --- a/src-ui/src/locale/messages.ko_KR.xlf +++ b/src-ui/src/locale/messages.ko_KR.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 닫기 @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 이전 @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 다음 @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 지난달 @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 다음 달 @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 닫기 @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 월 선택 @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 시간 @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 연도 선택 @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 처음 @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 시간 증가 @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 이전 @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 감소 시간 @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 다음 @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 분 단위 증가 @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 마지막 @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 분 감소 @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 초 단위 증가 @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 초 단위로 감소 @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 문서 @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 설정 @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 사용 @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 로그 @@ -742,11 +742,35 @@ 애플리케이션 및 이메일 확인을 위한 로그 파일을 검토합니다. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + 표시 + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ 로딩 중... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + 이것은 무엇입니까? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 고급 검색 @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 사용자 검색 오류 @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 그룹 검색 오류 @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 설정을 저장하는 중 오류가 발생하였습니다. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 1 @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 해제 @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 결과 @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 선택 해제 @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 모두 해제 @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 모두 해제 확인 @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 모든 작업을 해제하시겠습니까? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 대기중 @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 시작 @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 완료 @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 실패 @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 휴지통 @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + 선택 항목 삭제 @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 삭제 검토 @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 사용자 & 그룹 @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 비밀번호가 변경되었습니다. 곧 로그아웃됩니다. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 사용자 ""가 저장되었습니다. @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 사용자 저장 에러. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 사용자 계정 삭제 검토 @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 이 작업은 사용자 계정을 영구적으로 삭제합니다. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 삭제된 사용자 """ @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 사용자 "" 삭제 중 오류가 발생했습니다. @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 그룹 ""가 저장되었습니다. @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 그룹을 저장하는데 오류가 발생했습니다. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 사용자 그룹 삭제 검토 @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 이 작업은 사용자 그룹을 영구적으로 삭제합니다. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 삭제된 그룹 """ @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 그룹 "" 삭제 중 오류가 발생했습니다. @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 문서 @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 저장된 보기 @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 문서 열기 @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 모두 닫기 @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 관리 @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 메일 @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 관리 @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 환경설정 @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 Github @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 사용 가능함 @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 클릭해서 보기. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx는 자동으로 최신 업데이트를 확인할 수 있습니다. @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 어떻게 작동할까요? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 업데이트 가능 @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 사이드바 업데이트 완료 @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 사이드바 업데이트 중 오류가 발생했습니다 @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 설정을 저장하는 중 오류가 발생하였습니다. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + 지우기 @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 최종확인 @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 확인 @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 거짓 @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 문서 검색... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 모두 @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 아님 @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 쿼리 추가 @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 표현식 추가 @@ -3758,18 +3830,6 @@ 상대적 날짜 - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - 지금 - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ 추가됨 + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + 지금 + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 1주일 이내 @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 1개월 이내 @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 3개월 이내 @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 1년 이내 @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 올해 @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 이번 달 @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ 어제 + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 알고리즘 일치 @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 패턴 일치 @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 대소문자 구분 안 함 @@ -3982,19 +4082,11 @@ 옵션 추가 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - 경고: 여기서 옵션을 편집하더라도 이 필드의 기존 인스턴스는 현재 값 인덱스(예: 옵션 #1, #2, #3)를 유지합니다. - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 기본 통화 @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3자 통화 코드 @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 지역 사용 @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 이 문서 유형 지정 @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 에서 통신원을 지정합니다. @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + 에러 @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 경로 @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 색상 + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 받은 편지함 태그 @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 받은 편지함 태그는 소비된 모든 문서에 자동으로 할당됩니다. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 새 태그 생성 @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 태그 편집 @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + 이메일 @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 2단계 인증 @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 2단계 인증 비활성화 @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 새로운 사용자 계정 만들기 @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 사용자 계정 수정 @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp 비활성화 @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp 비활성화 실패됨 @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 트리거 유형 @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 예약 트리거 오프셋과 사용할 날짜 필드를 설정합니다. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 오프셋 날짜 @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 양수 값은 날짜 이후에, 음수 값은 그 이전에 트리거됩니다. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 상대적 @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 사용자 정의 필드 @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 날짜에 사용할 사용자 지정 필드입니다. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 반복 @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 트리거가 반복되고 있습니다. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 반복 간격일 @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 n일마다 트리거를 반복합니다. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 아래에 지정된 모든 필터와 일치하는 문서에 대해 트리거합니다. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 파일 이름 필터 @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 지정된 경우 파일 이름과 완전히 일치하는 문서만 사용합니다. *.pdf와 같은 와일드카드 또는 *invoice*와 같은 것이 허용됩니다. 대소문자를 구분하지 않습니다. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 출처 필터 @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 필터 경로 - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - 이 경로와 일치하는 문서에 적용합니다. 와일드카드는 *로 지정할 수 있습니다. 대/소문자 정규화.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 필터 메일 규칙 @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 이 메일 규칙을 통해 사용되는 문서에 적용합니다. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 콘텐츠 일치 알고리즘 @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 콘텐츠 일치 패턴 - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - 태그 중 하나라도 포함 + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - 대응하는 사람이 있음 + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - 문서 유형이 있음 + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 동작 유형 @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 제목 지정 @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 일부 자리표시자를 포함할 수 있습니다. 자세한 내용은 <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>문서</a>를 참조하세요. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 태그 할당 @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 이 저장 경로를 할당합니다. @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 사용자 지정 필드 할당 @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 소유자 할당 @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 보기 권한 할당 @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 편집 권한 할당 @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 태그 제거 @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 모두 제거 @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 담당자 제거 @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 모든 문서 유형 제거 @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 모든 저장소 경로 제거 @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 사용자 정의 필드 제거 @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 소유자 제거 @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 권한 제거 @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 권한 보기 @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 권한 수정 @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 이메일 제목 @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 이메일 본문 @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 이메일 수신자 @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 문서 첨부 @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 웹훅 URL @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 웹훅 본문에 매개변수 사용 @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 웹훅 페이로드를 JSON으로 보내기 @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 웹훅 매개변수 @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 웹훅 본문 @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 웹훅 헤더 @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 문서 포함 @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 소비된 폴더 @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API 업로드 @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 메일 가져오기 @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 웹 UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 사용자정의 필드 @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 소비 시작됨 @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 문서 추가됨 @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 문서 업데이트됨 @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 예약됨 @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 과제 @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 제거 @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 웹훅 + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + 대응하는 사람이 있음 + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + 문서 유형이 있음 + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 새 워크플로우 만들기 @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 워크플로우 편집 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 이메일 주소 @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 제목 @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 메시지 @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 아카이브 버전 사용 @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 이메일 보내기 - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - 문서 이메일로 보내기 + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 이메일 보냄 + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned 할당되지 않음 @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 "" 필터 열기 @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 제안: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths 항목 추가 @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 태그 추가 @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 태그 제거 @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 다음 태그를 사용하여 문서 필터링 @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + 더 보기 @@ -6010,7 +6222,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 9 - Select all pages + 모든 페이지 선택 Deselect all pages @@ -6018,7 +6230,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 12 - Deselect all pages + 모든 페이지 선택 해제 Rotate selected pages counter-clockwise @@ -6026,7 +6238,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 17 - Rotate selected pages counter-clockwise + 선택한 페이지 반시계방향으로 회전 Rotate selected pages clockwise @@ -6034,7 +6246,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 20 - Rotate selected pages clockwise + 선택한 페이지 시계방향으로 회전 Delete selected pages @@ -6042,7 +6254,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 23 - Delete selected pages + 선택한 페이지 삭제 Rotate page counter-clockwise @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 인증 앱으로 QR 코드를 스캔한 다음 아래 코드를 입력합니다. @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 인증(Authenticator) 비밀키 @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 이 비밀 번호를 저장하여 나중에 인증 앱을 다시 설치할 때 사용할 수 있습니다. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 코드 @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 복구 코드는 다시 표시되지 않으므로 반드시 저장하세요. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 코드 복사 @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 이메일이 일치해야 합니다 @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 비밀번호가 일치해야 합니다 @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 프로필 업데이트 성공 @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 프로필을 저장하는 중 오류가 발생하였습니다 @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 인증 토큰을 생성하는 중 오류가 발생하였습니다 @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 소셜 계정 연결 해제 @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 TOTP 설정 가져오기 오류 @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP가 성공적으로 활성화되었습니다. @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 TOTP 활성화 오류 @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP가 성공적으로 비활성화되었습니다. @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 TOTP 비활성화 오류 @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6778,7 +6994,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 105 - Tasks Queue + 작업 대기열 Redis Status @@ -6826,7 +7042,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 245 - Run Task + 작업 실행 Last Updated @@ -6874,7 +7090,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + WebSocket 연결 OK @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 담당자별 필터링 @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 문서 유형별로 필터링 @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 저장 경로별 필터링 @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 아니오 @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 페이지 @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 재처리 @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + 인쇄 More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF 편집기 @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 메타데이터를 가져오는데 실패하였습니다. @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 추천을 가져오는데 실패하였습니다. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 문서 ""가 성공적으로 저장되었습니다. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 문서 "" 저장 중 오류가 발생했습니다 @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 문서를 저장하는데 오류가 발생하였습니다. @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 "" 문서를 휴지통으로 정말 옮기시겠습니까? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 문서를 영구 삭제하기 전에 복원할 수 있습니다. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 휴지통으로 이동 @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 문서 삭제 오류 @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 재처리 확인 @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 이 작업을 수행하면 이 문서의 아카이브 파일이 영구적으로 다시 생성됩니다. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 아카이브 파일은 현재 설정으로 다시 생성됩니다. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 ""의 재처리 작업이 백그라운드에서 시작됩니다. 작업이 완료된 후 새 콘텐츠를 보려면 이 문서를 닫았다가 다시 열거나 다시 로드하세요. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 작업 수행중 오류가 발생하였습니다. @@ -7818,15 +8034,15 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 - Error downloading document + 문서 다운로드 중 오류 발생 Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 페이지 맞춤 @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 ""의 PDF 편집 작업이 백그라운드에서 시작됩니다. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,15 +8066,15 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + 인쇄 실패. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 tiff를 로드하는 동안 오류가 발생했습니다: @@ -7882,19 +8098,11 @@ 항목을 찾을 수 없습니다. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - 선택: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 편집: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 사용자 정의 필드 @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 사용자 정의 필터 @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 값 설정 @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 회전 @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 병합 @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 포함: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 보관된 파일 @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 원본 파일 @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 형식화된 파일명 사용 @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 대량 작업 실행 중 오류 발생 @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" 그리고 "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' 그리고 "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 태그 할당 확인 @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 이 작업은 태그를 개의 선택된 문서에 추가합니다. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 이 작업은 태그들을 개의 선택된 문서에 추가합니다. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 이 작업은 태그를 개의 선택된 문서에서 제거합니다. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 이 작업은 태그들을 개의 선택된 문서에서 제거합니다. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 이 작업은 태그들을 추가하고, 태그들을 개의 선택된 문서에서 제거합니다. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 담당자 지정 확인 @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 이 작업은 담당자를 개의 선택된 문서에 할당합니다. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 이 작업은 개의 선택된 문서에서 담당자를 제거합니다. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 문서 유형 할당 확인 @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 이 작업은 문서 유형을 개의 선택된 문서에 할당합니다. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 이 작업은 개의 선택된 문서에서 문서 유형을 제거합니다. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 저장 경로 할당 확인 @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 이 작업은 저장 경로를 개의 선택된 문서에 할당합니다. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 이 작업은 개의 선택된 문서에서 저장 경로를 제거합니다. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 사용자 지정 필드 할당 확인 @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 이 작업은 사용자 정의 필드를 개의 선택된 문서에 할당합니다. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 이 작업은 사용자 정의 필드를 개의 선택된 문서에 할당합니다. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 이 작업은 사용자 정의 필드를 개의 선택된 문서에서 제거합니다. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 이 작업은 사용자 정의 필드를 개의 선택된 문서에서 제거합니다. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 이 작업은 사용자 정의 필드를 추가하고, 사용자 정의 필드를 개의 선택된 문서에 제거합니다. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 개의 선택된 문서를 휴지통으로 이동하시겠습니까? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 이 작업은 개의 선택된 문서에 대해 아카이브 파일을 영구적으로 재생성합니다. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 아카이브 파일은 현재 설정으로 다시 생성됩니다. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 회전 확인 @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 이 작업은 개의 문서의 원본 버전을 영구적으로 회전시킵니다. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 병합 확인 @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 이 작업은 개의 선택된 문서를 새 문서로 병합합니다. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 병합된 문서는 사용 대기열에 대기합니다. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 태그별로 필터 @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 선택 안함 @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 페이지 선택 @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 전체 선택 - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - 표시 + + src/app/data/matching-model.ts + 45 + + 없음 Sort src/app/components/document-list/document-list.component.html - 48 + 68 정렬 @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 조회수 @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 저장 @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 다른 이름으로 저장 @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 모든 저장된 보기 @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {문서 1개의 선택된 } other {문서 개의 선택된 }} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {문서 1개} other { 개의 문서}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (필터링됨) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 문서를 로딩하는 동안 오류가 발생했습니다. @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 ASN별 정렬 @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 담당자별 정렬 @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 제목으로 정렬 @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 소유자로 정렬 @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 노트별로 정렬 @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 문서 유형별 정렬 @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 저장 경로별로 정렬 @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 생성된 날짜로 정렬 @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 추가된 날짜로 정렬 @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 페이지 수로 정렬 @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 공유됨 @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 문서 수정 @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 문서 미리보기 @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 필터/선택 항목 재설정 @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 첫번째 [선택한] 문서 열기 @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 이전 페이지 @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 다음 페이지 @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 뷰가 성공적으로 저장되었습니다. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 뷰가 성공적으로 생성되었습니다. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 제목 & 자료 @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 파일 종류 @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 더 비슷한 @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 일치 @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 는(은) 비어 있습니다. @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 가 비어 있지 않습니다. @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 보다 큰 @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 미만 @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 담당자 없음 @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 문서 유형: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 문서 유형 없음 @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 저장 경로 없음 @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 어떤 태그도 없이 @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 사용자 정의 필드 쿼리 @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 제목: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 소유자: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 소유자가 다음에 없습니다: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 소유자 없음 @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 담당자 @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 담당자 @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 최근 사용됨 @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 정말로 담당자 를 삭제하시겠습니까? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 문서 필터링 () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 문서 유형 @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 문서 유형 @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 문서 유형 을 정말로 삭제하시겠습니까? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ 비활성화됨 + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 메일 규칙이 정의되어 있지 않습니다. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 메일 계정 검색 중 오류 발생 @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 메일 규칙 검색 오류 @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 인증 성공 @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 인증에 실패함, 세부사항에 대한 로그를 확인 @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 계정 이(가) 저장되었습니다. @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 계정 저장 오류입니다. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 메일 계정 삭제 확인 @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 이 작업을 수행하면 이 메일 계정이 영구적으로 삭제됩니다. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 규치 저장됨 @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 오류 저장 규칙. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 규칙 ""이(가) 활성화되었습니다. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 규칙 "" 비활성화 되었습니다. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 메일 규칙 삭제 확인 @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 이 작업을 수행하면 이 메일 규칙이 영구적으로 삭제됩니다. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 권한이 업데이트 되었습니다! @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 권한 업데이트 중 오류 발생 + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + 받음 + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 { 1개} other {총 }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ 자동 - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - 없음 - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 이(가) 성공적으로 생성되었습니다. @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 을(를) 생성하는 동안 오류가 발생했습니다. @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 을(를) 저장하는 동안 오류가 발생했습니다. @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 연결된 문서는 삭제되지 않습니다. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 요소 삭제 중 오류 발생 @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 권한을 성공적으로 업데이트하였습니다 @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 이 작업은 모든 개체를 영구적으로 삭제합니다. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 개체가 성공적으로 삭제됨 @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 개체 삭제 중 오류 발생 @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 저장소 경로 @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 저장소 경로 @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 정말로 저장 경로 를 삭제하시겠습니까? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 태그 @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 태그 diff --git a/src-ui/src/locale/messages.lb_LU.xlf b/src-ui/src/locale/messages.lb_LU.xlf index cfa1d1e84..5de4007f7 100644 --- a/src-ui/src/locale/messages.lb_LU.xlf +++ b/src-ui/src/locale/messages.lb_LU.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Zoumaachen @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Zréck @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Weider @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mount virdrun @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Nächste Mount @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zoumaachen @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Mount auswielen @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Stonnen @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Joer auswielen @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutten @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ufank @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Stonnen eropsetzen @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zréck @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Stonnen erofsetzen @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Weider @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutten erhéijen @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Schluss @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutten erofsetzen @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekonnen @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekonnen eropsetzen @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekonnen erofsetzen @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumenter @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Astellungen @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Enable @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Protokoller @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Lueden... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Wat ass dat? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Erweidert Sich @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Feeler beim Opruffe vun de Benotzer @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Feeler beim Opruffe vun de Benotzergruppen @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Beim Späichere vun den Astellungen ass ee Feeler opgetrueden. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Datei Jobs @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dismiss @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dismiss selected @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Dismiss all @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirm Dismiss All @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 ausstoend @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 gestart @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 ofgeschloss @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 feelgeschloen @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Pabeierkuerf @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Ausgewielten Dokumenter läschen @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Läsche bestätegen @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Benotzer & Gruppen @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 D’Passwuert gouf geännert, Dir gitt elo ofgemellt. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Benotzer „“ gespäichert. @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Feeler beim Späicheren vum Benotzer. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 D’Läsche vum Benotzer bestätegen @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Dëse Virgang wäert de Benotzer permanent läschen. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Benotzer „“ geläscht @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Feeler beim Läsche vum Benotzer „“. @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Grupp „“ gespäichert. @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Feeler beim Späicheren vun der Grupp. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 D’Läsche vun der Grupp bestätegen @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Dëse Virgang wäert d'Grupp permanent läschen. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Grupp „“ geläscht @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Feeler beim Läsche vun der Grupp „“. @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentatioun @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Gespäichert Usiichten @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Oppen Dokumenter @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 All zoumaachen @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Verwalten @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 ass disponibel. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klicke fir unzeweisen. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx can automatically check for updates @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 How does this work? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Update disponibel @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Säiteleeschten-Usiichten aktualiséiert @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Feeler beim Aktualiséieren vun de Säiteleeschten-Usiichten @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 An error occurred while saving update checking settings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Läschen @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Bestätegung @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Bestätegen @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Wouer @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Falsch @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Dokumenter sichen... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 All @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - elo - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Dobäigesat + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + elo + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Bannent 1 Woch @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Bannent 1 Mount @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Bannent 3 Méint @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Bannent 1 Joer @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Dëst Joer @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Dëse Mount @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Gëschter + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Zouweisungsalgorithmus @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Zouweisungsmuster @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Grouss-/Klengschreiwung ignoréieren @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Standardwärung @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Dräistellegen ISO-Wärungscode @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assign document type @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assign correspondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Feeler @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Pfad @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Faarf + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Postaganks-Etikett @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Postaganks-Etikette ginn automatesch allen nei veraarbechten Dokumenter zougewisen. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Nei Etikett erstellen @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Etikett editéieren @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Create new user account @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Edit user account @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Net zougewisen @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Virschléi: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Element dobäisetzen @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Etikett dobäisetzen @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documents with these Tags @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 No Korrespondent filteren @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filter by document type @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter by storage path @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Jo @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nee @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Säit @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Auswielen: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Editéieren: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Include: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" a(n) "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' a(n) "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Zouweisung vun der Etikett bestätegen @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Dës Operatioun setzt d'Etikett "" bei ausgewielt Dokument(er). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Dës Operatioun setzt d'Etiketten bei ausgewielt Dokument(er). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Dës Operatioun läscht d'Etikett "" bei ausgewielt Dokument(er). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 This operation will remove the tags from selected document(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Dës Operatioun setzt d'Etiketten dobäi a läscht d'Etiketten bei ausgewielt Dokument(er). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 D'Zouweisung vum Korrespondent bestätegen @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Dës Operatioun weist de Korrespondent "" ausgewielt Dokument(er) zou. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Dës Operatioun läscht de Korrespondent bei ausgewielt Dokument(er). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Zouweisung vum Dokumententyp bestätegen @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Dës Operatioun weist den Dokumententyp "" ausgewielt Dokument(er) zou. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Dës Operatioun läscht den Dokumententyp bei ausgewielt Dokument(er). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 No Etikett filteren @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Näischt auswielen @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Säit auswielen @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Alles auswielen - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + None Sort src/app/components/document-list/document-list.component.html - 48 + 68 Zortéieren @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Usiichten @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 "" späicheren @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Späicheren als... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 { vun 1 Dokument ausgewählt} other { vu(n) Dokumenter ausgewielt}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Een Dokument} other { Dokumenter}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (gefiltert) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Feeler beim Luede vun den Dokumenter @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sort by ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sort by title @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sort by owner @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by document type @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by storage path @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sort by created date @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sort by added date @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Dokument editéieren @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Usiicht "" gouf erfollegräich gespäichert. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Vue "" gouf erfollegräich erstallt. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titel an Inhalt @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Méi ähnleches @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 ass gläich @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 ass eidel @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 ass net eidel @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 ass méi grouss ewéi @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 ass méi kleng ewéi @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Ouni Korrespondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Ouni Dokumententyp @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Ouni Etikett @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Titel: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 Korrespondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 Korrespondenten @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Fir d'lescht benotzt @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Soll de Korrespondent "" wierklech geläscht ginn? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 Dokumententyp @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 Dokumententypen @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Soll den Dokumententyp "" wierklech geläscht ginn? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {} =1 {One } other { insgesamt }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatesch - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - None - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 Späicherpfad @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 Späicherpfaden @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 Etikett @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 Etiketten diff --git a/src-ui/src/locale/messages.lt_LT.xlf b/src-ui/src/locale/messages.lt_LT.xlf index bc1f5c879..804effc96 100644 --- a/src-ui/src/locale/messages.lt_LT.xlf +++ b/src-ui/src/locale/messages.lt_LT.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Uždaryti @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Ankstesnis @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Kitas @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Ankstesnis mėnuo @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Kitas mėnuo @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Uždaryti @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pasirinktas mėnuo @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Valandos @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pasirinkti metus @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutės @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pirmas @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Padidinti valandas @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ankstesnis @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sumažinti valandas @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Kitas @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Padidinti minutes @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Paskutinis @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sumažinti minutes @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekundės @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Padidinti sekundes @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sumažinti sekundes @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumentai @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Nustatymai @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Įjungti @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Žurnalai @@ -742,11 +742,35 @@ Peržiūrėkite žurnalo failus apie aplikaciją ir el. pašto patikrą. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Įkeliama... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + What's this? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Advanced search @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 An error occurred while saving settings. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 File Tasks @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dismiss @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dismiss selected @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Dismiss all @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirm Dismiss All @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 queued @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 started @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completed @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 failed @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Delete selected @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirm delete @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Users & Groups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Password has been changed, you will be logged out momentarily. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Saved user "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Error saving user. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirm delete user account @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 This operation will permanently delete this user account. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error saving group. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirm delete user group @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 This operation will permanently delete this user group. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentation @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Saved views @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Open documents @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Close all @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Manage @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 is available. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Click to view. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx can automatically check for updates @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 How does this work? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Update available @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 An error occurred while saving update checking settings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Clear @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirmation @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Confirm @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 All @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - now - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Added + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + now + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Matching algorithm @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Matching pattern @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Case insensitive @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assign document type @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assign correspondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Error @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Path @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Color + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inbox tag @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inbox tags are automatically assigned to all consumed documents. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Create new tag @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Edit tag @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Create new user account @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Edit user account @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Not assigned @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Suggestions: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Add item @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Add tag @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documents with these Tags @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filter by correspondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filter by document type @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter by storage path @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Yes @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 No @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Page @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Select: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Edit: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Include: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" and "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' and "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirm tags assignment @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 This operation will add the tag "" to selected document(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 This operation will add the tags to selected document(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 This operation will remove the tag "" from selected document(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 This operation will remove the tags from selected document(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 This operation will add the tags and remove the tags on selected document(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirm correspondent assignment @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 This operation will assign the correspondent "" to selected document(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 This operation will remove the correspondent from selected document(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirm document type assignment @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 This operation will assign the document type "" to selected document(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 This operation will remove the document type from selected document(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filter by tag @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Select none @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Select page @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Select all - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + None Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sort @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Views @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Save "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Save as... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {One document} other { documents}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtered) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Error while loading documents @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sort by ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sort by title @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sort by owner @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by document type @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by storage path @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sort by created date @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sort by added date @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Edit document @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 View "" saved successfully. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 View "" created successfully. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Title & content @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 More like @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 equals @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 is empty @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 is not empty @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 greater than @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 less than @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Without correspondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Without document type @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Without any tag @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Title: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 correspondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 correspondents @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Last used @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Do you really want to delete the correspondent ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 document type @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 document types @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Do you really want to delete the document type ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatic - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - None - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 storage path @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 storage paths @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tag @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 tags diff --git a/src-ui/src/locale/messages.lv_LV.xlf b/src-ui/src/locale/messages.lv_LV.xlf index a751c3756..b5733aa1f 100644 --- a/src-ui/src/locale/messages.lv_LV.xlf +++ b/src-ui/src/locale/messages.lv_LV.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Aizvērt @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Iepriekšējais @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Nākamais @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Iepriekšējais mēnesis @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Nākamais mēnesis @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Aizvērt @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Izvēlieties mēnesi @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Stundas @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Izvēlieties gadu @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minūtes @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pirmā @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Palielināt stundas @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Iepriekšējā @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Samazināt stundas @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Nākamā @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Palielināt minūtes @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pēdējā @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Samazināt minūtes @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekundes @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Palielināt sekundes @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Samazināt sekundes @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokuments @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Iestatījumi @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Iespējot @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Notikumu žurnāli @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Ielāde... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Kas tas ir? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Paplašinātā meklēšana @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 An error occurred while saving settings. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 File Tasks @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dismiss @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dismiss selected @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Noraidīt visus @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirm Dismiss All @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 queued @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 started @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 pabeigts @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 neizdevās @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Delete selected @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirm delete @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Users & Groups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Password has been changed, you will be logged out momentarily. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Saved user "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Error saving user. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirm delete user account @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 This operation will permanently delete this user account. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error saving group. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirm delete user group @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 This operation will permanently delete this user group. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentācija @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Saglabātais skats @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Atvērt dokumentus @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Aizvērt visu @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Pārvaldīt @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Pasts @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administrācija @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfigurācija @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 is available. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Click to view. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx can automatically check for updates @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 How does this work? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Pieejams atjauninājums @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 An error occurred while saving update checking settings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Notīrīt @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Apstiprinājums @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Apstiprināt @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Viss @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - now - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Pievienots + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + now + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Matching algorithm @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Matching pattern @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Case insensitive @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assign document type @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assign correspondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Kļūda @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Path @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Krāsa + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inbox tag @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inbox tags are automatically assigned to all consumed documents. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Izveidot jaunu birku @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Rediģēt birku @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-pasts @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Create new user account @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Edit user account @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Dzēst birkas @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Dzēst visus @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Noņemt atļaujas @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Skatīt atļaujas @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Rediģēt atļaujas @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Dokuments pievienots @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Dokuments atjaunināts @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Izveidot jaunu darbplūsmu @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Rediģēt darbplūsmu + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nav piešķirts @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Ieteikumi: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Pievienot @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Pievienot birku @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtrēt dokumentus ar šiem tagiem @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Rādīt vairāk @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Parolēm jāsakrīt @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profils tika sekmīgi atjaunināts @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filter by correspondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtrēt pēc dokumenta veida @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter by storage path @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Yes @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 No @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Lapa @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Select: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Edit: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Pielāgojami lauki @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Include: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" and "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' and "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirm tags assignment @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 This operation will add the tag "" to selected document(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 This operation will add the tags to selected document(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 This operation will remove the tag "" from selected document(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 This operation will remove the tags from selected document(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 This operation will add the tags and remove the tags on selected document(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirm correspondent assignment @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 This operation will assign the correspondent "" to selected document(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 This operation will remove the correspondent from selected document(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirm document type assignment @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 This operation will assign the document type "" to selected document(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 This operation will remove the document type from selected document(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filter by tag @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Select none @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Select page @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Atzīmēt visu - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + Neviens Sort src/app/components/document-list/document-list.component.html - 48 + 68 Kārtot @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Skati @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Save "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Save as... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {One document} other { documents}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtered) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Error while loading documents @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sort by ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Kārtot pēc nosaukuma @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sort by owner @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Filtrēt pēc dokumenta veida @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by storage path @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Kārtot pēc izveides datuma @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Kārtot pēc pievienošanas datuma @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Rediģēt dokumentu @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 View "" saved successfully. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 View "" created successfully. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Title & content @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 More like @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 equals @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 ir tukšs @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 is not empty @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 lielāks par @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 mazāk kā @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Without correspondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Without document type @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Bez birkas @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Title: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 correspondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 correspondents @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Last used @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Do you really want to delete the correspondent ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 document type @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 document types @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Do you really want to delete the document type ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatic - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Neviens - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 storage path @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 storage paths @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tag @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 tags diff --git a/src-ui/src/locale/messages.mk_MK.xlf b/src-ui/src/locale/messages.mk_MK.xlf new file mode 100644 index 000000000..ab25c7e3f --- /dev/null +++ b/src-ui/src/locale/messages.mk_MK.xlf @@ -0,0 +1,11480 @@ + + + + + + Close + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts + 50 + + Close + + + Slide of + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts + 131,135 + + Currently selected slide number read by screen reader + Slide of + + + Previous + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts + 157,159 + + Previous + + + Next + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts + 198 + + Next + + + Previous month + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts + 83,85 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts + 112 + + Previous month + + + Next month + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts + 112 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts + 112 + + Next month + + + HH + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + HH + + + Close + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Close + + + Select month + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Select month + + + «« + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + «« + + + Hours + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Hours + + + « + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + « + + + MM + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + MM + + + » + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + » + + + Select year + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Select year + + + Minutes + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Minutes + + + »» + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + »» + + + First + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + First + + + Increment hours + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Increment hours + + + Previous + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Previous + + + Decrement hours + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Decrement hours + + + Next + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Next + + + Increment minutes + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Increment minutes + + + Last + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Last + + + Decrement minutes + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Decrement minutes + + + SS + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + SS + + + Seconds + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Seconds + + + Increment seconds + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Increment seconds + + + Decrement seconds + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + Decrement seconds + + + + + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts + 13 + + + + + + + + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts + 41,42 + + + + + Document was added to Paperless-ngx. + + src/app/app.component.ts + 95 + + + src/app/app.component.ts + 104 + + Document was added to Paperless-ngx. + + + Open document + + src/app/app.component.ts + 97 + + + src/app/components/admin/trash/trash.component.ts + 146 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 44 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 47 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 50 + + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 58 + + Open document + + + Could not add : + + src/app/app.component.ts + 119 + + Could not add : + + + Document is being processed by Paperless-ngx. + + src/app/app.component.ts + 134 + + Document is being processed by Paperless-ngx. + + + Dashboard + + src/app/app.component.ts + 141 + + + src/app/components/app-frame/app-frame.component.html + 84 + + + src/app/components/app-frame/app-frame.component.html + 86 + + + src/app/components/dashboard/dashboard.component.html + 1 + + Dashboard + + + Documents + + src/app/app.component.ts + 152 + + + src/app/components/app-frame/app-frame.component.html + 91 + + + src/app/components/app-frame/app-frame.component.html + 93 + + + src/app/components/document-list/document-list.component.ts + 192 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 61 + + + src/app/components/manage/management-list/management-list.component.html + 139 + + + src/app/components/manage/management-list/management-list.component.html + 139 + + + src/app/components/manage/management-list/management-list.component.html + 139 + + + src/app/components/manage/management-list/management-list.component.html + 139 + + Documents + + + Settings + + src/app/app.component.ts + 164 + + + src/app/components/admin/settings/settings.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 51 + + + src/app/components/app-frame/app-frame.component.html + 255 + + + src/app/components/app-frame/app-frame.component.html + 257 + + Settings + + + Prev + + src/app/app.component.ts + 170 + + Prev + + + Next + + src/app/app.component.ts + 171 + + + src/app/components/document-detail/document-detail.component.html + 113 + + Next + + + End + + src/app/app.component.ts + 172 + + End + + + The dashboard can be used to show saved views, such as an 'Inbox'. Views are found under Manage > Saved Views once you have created some. + + src/app/app.component.ts + 178 + + The dashboard can be used to show saved views, such as an 'Inbox'. Views are found under Manage > Saved Views once you have created some. + + + Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms. + + src/app/app.component.ts + 185 + + Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms. + + + The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar. + + src/app/app.component.ts + 190 + + The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar. + + + The filtering tools allow you to quickly find documents using various searches, dates, tags, etc. + + src/app/app.component.ts + 197 + + The filtering tools allow you to quickly find documents using various searches, dates, tags, etc. + + + Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar. + + src/app/app.component.ts + 203 + + Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar. + + + Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view. + + src/app/app.component.ts + 208 + + Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view. + + + Manage e-mail accounts and rules for automatically importing documents. + + src/app/app.component.ts + 216 + + + src/app/components/manage/mail/mail.component.html + 4 + + Manage e-mail accounts and rules for automatically importing documents. + + + Workflows give you more control over the document pipeline. + + src/app/app.component.ts + 224 + + Workflows give you more control over the document pipeline. + + + File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process. + + src/app/app.component.ts + 232 + + + src/app/components/admin/tasks/tasks.component.html + 4 + + File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process. + + + Check out the settings for various tweaks to the web app. + + src/app/app.component.ts + 240 + + Check out the settings for various tweaks to the web app. + + + Thank you! 🙏 + + src/app/app.component.ts + 248 + + Thank you! 🙏 + + + There are <em>tons</em> more features and info we didn't cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues. + + src/app/app.component.ts + 250 + + There are <em>tons</em> more features and info we didn't cover here, but this should get you started. Check out the documentation or visit the project on GitHub to learn more or to report issues. + + + Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx! + + src/app/app.component.ts + 252 + + Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx! + + + Application Configuration + + src/app/components/admin/config/config.component.html + 2 + + Application Configuration + + + Global app configuration options which apply to <strong>every</strong> user of this install of Paperless-ngx. Options can also be set using environment variables or the configuration file but the value here will always take precedence. + + src/app/components/admin/config/config.component.html + 4 + + Global app configuration options which apply to <strong>every</strong> user of this install of Paperless-ngx. Options can also be set using environment variables or the configuration file but the value here will always take precedence. + + + Read the documentation about this setting + + src/app/components/admin/config/config.component.html + 25 + + Read the documentation about this setting + + + Enable + + src/app/components/admin/config/config.component.html + 34 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 125 + + Enable + + + Discard + + src/app/components/admin/config/config.component.html + 53 + + + src/app/components/document-detail/document-detail.component.html + 374 + + Discard + + + Save + + src/app/components/admin/config/config.component.html + 56 + + + src/app/components/admin/settings/settings.component.html + 362 + + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 26 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 52 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 28 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 20 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 40 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 76 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 77 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 31 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 57 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 116 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 185 + + + src/app/components/document-detail/document-detail.component.html + 367 + + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 83 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 21 + + + src/app/components/manage/saved-views/saved-views.component.html + 74 + + Save + + + Error retrieving config + + src/app/components/admin/config/config.component.ts + 103 + + Error retrieving config + + + Invalid JSON + + src/app/components/admin/config/config.component.ts + 129 + + Invalid JSON + + + Configuration updated + + src/app/components/admin/config/config.component.ts + 173 + + Configuration updated + + + An error occurred updating configuration + + src/app/components/admin/config/config.component.ts + 178 + + An error occurred updating configuration + + + File successfully updated + + src/app/components/admin/config/config.component.ts + 200 + + File successfully updated + + + An error occurred uploading file + + src/app/components/admin/config/config.component.ts + 205 + + An error occurred uploading file + + + Logs + + src/app/components/admin/logs/logs.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 290 + + + src/app/components/app-frame/app-frame.component.html + 293 + + Logs + + + Review the log files for the application and for email checking. + + src/app/components/admin/logs/logs.component.html + 4 + + Review the log files for the application and for email checking. + + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + + + Auto refresh + + src/app/components/admin/logs/logs.component.html + 21 + + + src/app/components/admin/tasks/tasks.component.html + 41 + + Auto refresh + + + Loading... + + src/app/components/admin/logs/logs.component.html + 38 + + + src/app/components/admin/logs/logs.component.html + 48 + + + src/app/components/admin/tasks/tasks.component.html + 48 + + + src/app/components/admin/trash/trash.component.html + 45 + + + src/app/components/admin/users-groups/users-groups.component.html + 92 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 35 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 50 + + + src/app/components/common/input/document-link/document-link.component.html + 58 + + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 23 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 110 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 128 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 10 + + + src/app/components/dashboard/widgets/widget-frame/widget-frame.component.html + 18 + + + src/app/components/document-detail/document-detail.component.html + 387 + + + src/app/components/document-list/document-list.component.html + 134 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 26 + + + src/app/components/manage/mail/mail.component.html + 40 + + + src/app/components/manage/mail/mail.component.html + 123 + + + src/app/components/manage/mail/mail.component.html + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/management-list/management-list.component.html + 52 + + + src/app/components/manage/saved-views/saved-views.component.html + 68 + + + src/app/components/manage/workflows/workflows.component.html + 28 + + Loading... + + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + + + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. + + src/app/components/admin/settings/settings.component.html + 4 + + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. + + + Start tour + + src/app/components/admin/settings/settings.component.html + 8 + + Start tour + + + System Status + + src/app/components/admin/settings/settings.component.html + 27 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 2 + + System Status + + + Open Django Admin + + src/app/components/admin/settings/settings.component.html + 30 + + Open Django Admin + + + General + + src/app/components/admin/settings/settings.component.html + 40 + + General + + + Appearance + + src/app/components/admin/settings/settings.component.html + 44 + + Appearance + + + Display language + + src/app/components/admin/settings/settings.component.html + 47 + + Display language + + + You need to reload the page after applying a new language. + + src/app/components/admin/settings/settings.component.html + 60 + + You need to reload the page after applying a new language. + + + Date display + + src/app/components/admin/settings/settings.component.html + 68 + + Date display + + + Date format + + src/app/components/admin/settings/settings.component.html + 85 + + Date format + + + Short: + + src/app/components/admin/settings/settings.component.html + 91,92 + + Short: + + + Medium: + + src/app/components/admin/settings/settings.component.html + 95,96 + + Medium: + + + Long: + + src/app/components/admin/settings/settings.component.html + 99,100 + + Long: + + + Items per page + + src/app/components/admin/settings/settings.component.html + 107 + + Items per page + + + Sidebar + + src/app/components/admin/settings/settings.component.html + 123 + + Sidebar + + + Use 'slim' sidebar (icons only) + + src/app/components/admin/settings/settings.component.html + 127 + + Use 'slim' sidebar (icons only) + + + Dark mode + + src/app/components/admin/settings/settings.component.html + 134 + + Dark mode + + + Use system settings + + src/app/components/admin/settings/settings.component.html + 137 + + Use system settings + + + Enable dark mode + + src/app/components/admin/settings/settings.component.html + 138 + + Enable dark mode + + + Invert thumbnails in dark mode + + src/app/components/admin/settings/settings.component.html + 139 + + Invert thumbnails in dark mode + + + Theme Color + + src/app/components/admin/settings/settings.component.html + 145 + + Theme Color + + + Reset + + src/app/components/admin/settings/settings.component.html + 152 + + Reset + + + Update checking + + src/app/components/admin/settings/settings.component.html + 157 + + Update checking + + + Enable update checking + + src/app/components/admin/settings/settings.component.html + 160 + + Enable update checking + + + What's this? + + src/app/components/admin/settings/settings.component.html + 161 + + + src/app/components/common/page-header/page-header.component.html + 9 + + + src/app/components/common/permissions-select/permissions-select.component.html + 4 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + + What's this? + + + Update checking works by pinging the public GitHub API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. + + src/app/components/admin/settings/settings.component.html + 165,167 + + Update checking works by pinging the public GitHub API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. + + + No tracking data is collected by the app in any way. + + src/app/components/admin/settings/settings.component.html + 169 + + No tracking data is collected by the app in any way. + + + Saved Views + + src/app/components/admin/settings/settings.component.html + 175 + + + src/app/components/app-frame/app-frame.component.html + 215 + + + src/app/components/app-frame/app-frame.component.html + 217 + + + src/app/components/manage/saved-views/saved-views.component.html + 2 + + Saved Views + + + Show warning when closing saved views with unsaved changes + + src/app/components/admin/settings/settings.component.html + 178 + + Show warning when closing saved views with unsaved changes + + + Show document counts in sidebar saved views + + src/app/components/admin/settings/settings.component.html + 179 + + Show document counts in sidebar saved views + + + Document editing + + src/app/components/admin/settings/settings.component.html + 185 + + Document editing + + + Use PDF viewer provided by the browser + + src/app/components/admin/settings/settings.component.html + 189 + + Use PDF viewer provided by the browser + + + This is usually faster for displaying large PDF documents, but it might not work on some browsers. + + src/app/components/admin/settings/settings.component.html + 189 + + This is usually faster for displaying large PDF documents, but it might not work on some browsers. + + + Default zoom + + src/app/components/admin/settings/settings.component.html + 195 + + Default zoom + + + Fit width + + src/app/components/admin/settings/settings.component.html + 199 + + Fit width + + + Fit page + + src/app/components/admin/settings/settings.component.html + 200 + + Fit page + + + Only applies to the Paperless-ngx PDF viewer. + + src/app/components/admin/settings/settings.component.html + 202 + + Only applies to the Paperless-ngx PDF viewer. + + + Automatically remove inbox tag(s) on save + + src/app/components/admin/settings/settings.component.html + 208 + + Automatically remove inbox tag(s) on save + + + Show document thumbnail during loading + + src/app/components/admin/settings/settings.component.html + 214 + + Show document thumbnail during loading + + + Global search + + src/app/components/admin/settings/settings.component.html + 218 + + + src/app/components/app-frame/global-search/global-search.component.ts + 122 + + Global search + + + Do not include advanced search results + + src/app/components/admin/settings/settings.component.html + 221 + + Do not include advanced search results + + + Full search links to + + src/app/components/admin/settings/settings.component.html + 227 + + Full search links to + + + Title and content search + + src/app/components/admin/settings/settings.component.html + 231 + + Title and content search + + + Advanced search + + src/app/components/admin/settings/settings.component.html + 232 + + + src/app/components/app-frame/global-search/global-search.component.html + 24 + + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 208 + + Advanced search + + + Bulk editing + + src/app/components/admin/settings/settings.component.html + 237 + + Bulk editing + + + Show confirmation dialogs + + src/app/components/admin/settings/settings.component.html + 240 + + Show confirmation dialogs + + + Apply on close + + src/app/components/admin/settings/settings.component.html + 241 + + Apply on close + + + Notes + + src/app/components/admin/settings/settings.component.html + 245 + + + src/app/components/document-list/document-list.component.html + 242 + + + src/app/data/document.ts + 58 + + + src/app/data/document.ts + 95 + + Notes + + + Enable notes + + src/app/components/admin/settings/settings.component.html + 248 + + Enable notes + + + Permissions + + src/app/components/admin/settings/settings.component.html + 259 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 14 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 51 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 2 + + + src/app/components/document-detail/document-detail.component.html + 343 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 78 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 101 + + + src/app/components/manage/mail/mail.component.html + 66 + + + src/app/components/manage/mail/mail.component.html + 78 + + + src/app/components/manage/mail/mail.component.html + 154 + + + src/app/components/manage/mail/mail.component.html + 166 + + + src/app/components/manage/management-list/management-list.component.html + 7 + + + src/app/components/manage/management-list/management-list.component.html + 7 + + + src/app/components/manage/management-list/management-list.component.html + 7 + + + src/app/components/manage/management-list/management-list.component.html + 7 + + Permissions + + + Default Permissions + + src/app/components/admin/settings/settings.component.html + 262 + + Default Permissions + + + Settings apply to this user account for objects (Tags, Mail Rules, etc. but not documents) created via the web UI. + + src/app/components/admin/settings/settings.component.html + 266,268 + + Settings apply to this user account for objects (Tags, Mail Rules, etc. but not documents) created via the web UI. + + + Default Owner + + src/app/components/admin/settings/settings.component.html + 273 + + Default Owner + + + Objects without an owner can be viewed and edited by all users + + src/app/components/admin/settings/settings.component.html + 277 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 32 + + Objects without an owner can be viewed and edited by all users + + + Default View Permissions + + src/app/components/admin/settings/settings.component.html + 282 + + Default View Permissions + + + Users: + + src/app/components/admin/settings/settings.component.html + 287 + + + src/app/components/admin/settings/settings.component.html + 314 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 278 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 297 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 364 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 383 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 38 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 57 + + Users: + + + Groups: + + src/app/components/admin/settings/settings.component.html + 297 + + + src/app/components/admin/settings/settings.component.html + 324 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 286 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 305 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 372 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 391 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 46 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 65 + + Groups: + + + Default Edit Permissions + + src/app/components/admin/settings/settings.component.html + 309 + + Default Edit Permissions + + + Edit permissions also grant viewing permissions + + src/app/components/admin/settings/settings.component.html + 333 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 311 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 397 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 71 + + Edit permissions also grant viewing permissions + + + Notifications + + src/app/components/admin/settings/settings.component.html + 341 + + + src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.html + 11 + + Notifications + + + Document processing + + src/app/components/admin/settings/settings.component.html + 344 + + Document processing + + + Show notifications when new documents are detected + + src/app/components/admin/settings/settings.component.html + 348 + + Show notifications when new documents are detected + + + Show notifications when document processing completes successfully + + src/app/components/admin/settings/settings.component.html + 349 + + Show notifications when document processing completes successfully + + + Show notifications when document processing fails + + src/app/components/admin/settings/settings.component.html + 350 + + Show notifications when document processing fails + + + Suppress notifications on dashboard + + src/app/components/admin/settings/settings.component.html + 351 + + Suppress notifications on dashboard + + + This will suppress all messages about document processing status on the dashboard. + + src/app/components/admin/settings/settings.component.html + 351 + + This will suppress all messages about document processing status on the dashboard. + + + Cancel + + src/app/components/admin/settings/settings.component.html + 361 + + + src/app/components/common/confirm-dialog/confirm-dialog.component.ts + 47 + + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 25 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 51 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 27 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 19 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 39 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 75 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 76 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 30 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 56 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 115 + + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 25 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 184 + + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 81 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 20 + + + src/app/components/manage/saved-views/saved-views.component.html + 73 + + Cancel + + + Use system language + + src/app/components/admin/settings/settings.component.ts + 78 + + Use system language + + + Use date format of display language + + src/app/components/admin/settings/settings.component.ts + 81 + + Use date format of display language + + + Error retrieving users + + src/app/components/admin/settings/settings.component.ts + 226 + + + src/app/components/admin/users-groups/users-groups.component.ts + 75 + + Error retrieving users + + + Error retrieving groups + + src/app/components/admin/settings/settings.component.ts + 245 + + + src/app/components/admin/users-groups/users-groups.component.ts + 89 + + Error retrieving groups + + + Settings were saved successfully. + + src/app/components/admin/settings/settings.component.ts + 548 + + Settings were saved successfully. + + + Settings were saved successfully. Reload is required to apply some changes. + + src/app/components/admin/settings/settings.component.ts + 552 + + Settings were saved successfully. Reload is required to apply some changes. + + + Reload now + + src/app/components/admin/settings/settings.component.ts + 553 + + Reload now + + + An error occurred while saving settings. + + src/app/components/admin/settings/settings.component.ts + 563 + + + src/app/components/app-frame/app-frame.component.ts + 180 + + An error occurred while saving settings. + + + File Tasks + + src/app/components/admin/tasks/tasks.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 278 + + + src/app/components/app-frame/app-frame.component.html + 280 + + File Tasks + + + Clear selection + + src/app/components/admin/tasks/tasks.component.html + 9 + + + src/app/components/admin/trash/trash.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 153 + + + src/app/components/manage/management-list/management-list.component.html + 4 + + + src/app/components/manage/management-list/management-list.component.html + 4 + + + src/app/components/manage/management-list/management-list.component.html + 4 + + + src/app/components/manage/management-list/management-list.component.html + 4 + + Clear selection + + + Filter by + + src/app/components/admin/tasks/tasks.component.html + 16 + + Filter by + + + Name + + src/app/components/admin/tasks/tasks.component.html + 61 + + + src/app/components/admin/tasks/tasks.component.ts + 45 + + + src/app/components/admin/trash/trash.component.html + 35 + + + src/app/components/admin/users-groups/users-groups.component.html + 21 + + + src/app/components/admin/users-groups/users-groups.component.html + 58 + + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 12 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 11 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 12 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 11 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 13 + + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 8 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 17 + + + src/app/components/manage/mail/mail.component.html + 30 + + + src/app/components/manage/mail/mail.component.html + 111 + + + src/app/components/manage/management-list/management-list.component.html + 21 + + + src/app/components/manage/management-list/management-list.component.html + 21 + + + src/app/components/manage/management-list/management-list.component.html + 21 + + + src/app/components/manage/management-list/management-list.component.html + 21 + + + src/app/components/manage/management-list/management-list.component.html + 38 + + + src/app/components/manage/management-list/management-list.component.html + 38 + + + src/app/components/manage/management-list/management-list.component.html + 38 + + + src/app/components/manage/management-list/management-list.component.html + 38 + + + src/app/components/manage/workflows/workflows.component.html + 17 + + Name + + + Created + + src/app/components/admin/tasks/tasks.component.html + 62 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 8 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 94 + + + src/app/components/document-list/document-list.component.html + 269 + + + src/app/data/document.ts + 34 + + + src/app/data/document.ts + 92 + + Created + + + Results + + src/app/components/admin/tasks/tasks.component.html + 64 + + Results + + + Info + + src/app/components/admin/tasks/tasks.component.html + 66 + + Info + + + Actions + + src/app/components/admin/tasks/tasks.component.html + 67 + + + src/app/components/admin/trash/trash.component.html + 37 + + + src/app/components/admin/users-groups/users-groups.component.html + 23 + + + src/app/components/admin/users-groups/users-groups.component.html + 61 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 67 + + + src/app/components/document-detail/document-detail.component.html + 50 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 87 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 19 + + + src/app/components/manage/mail/mail.component.html + 33 + + + src/app/components/manage/mail/mail.component.html + 116 + + + src/app/components/manage/management-list/management-list.component.html + 44 + + + src/app/components/manage/management-list/management-list.component.html + 44 + + + src/app/components/manage/management-list/management-list.component.html + 44 + + + src/app/components/manage/management-list/management-list.component.html + 44 + + + src/app/components/manage/saved-views/saved-views.component.html + 28 + + + src/app/components/manage/workflows/workflows.component.html + 21 + + Actions + + + click for full output + + src/app/components/admin/tasks/tasks.component.html + 97 + + click for full output + + + Dismiss + + src/app/components/admin/tasks/tasks.component.html + 110 + + + src/app/components/admin/tasks/tasks.component.ts + 155 + + Dismiss + + + Open Document + + src/app/components/admin/tasks/tasks.component.html + 115 + + Open Document + + + {VAR_PLURAL, plural, =1 {One task} other { total tasks}} + + src/app/components/admin/tasks/tasks.component.html + 134 + + {VAR_PLURAL, plural, =1 {One task} other { total tasks}} + + +  ( selected) + + src/app/components/admin/tasks/tasks.component.html + 136 + +  ( selected) + + + Failed + + src/app/components/admin/tasks/tasks.component.html + 148,150 + + Failed + + + Complete + + src/app/components/admin/tasks/tasks.component.html + 156,158 + + Complete + + + Started + + src/app/components/admin/tasks/tasks.component.html + 164,166 + + Started + + + Queued + + src/app/components/admin/tasks/tasks.component.html + 172,174 + + Queued + + + Result + + src/app/components/admin/tasks/tasks.component.ts + 46 + + Result + + + Dismiss selected + + src/app/components/admin/tasks/tasks.component.ts + 110 + + Dismiss selected + + + Dismiss all + + src/app/components/admin/tasks/tasks.component.ts + 111 + + Dismiss all + + + Confirm Dismiss All + + src/app/components/admin/tasks/tasks.component.ts + 152 + + Confirm Dismiss All + + + Dismiss all tasks? + + src/app/components/admin/tasks/tasks.component.ts + 153 + + Dismiss all tasks? + + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + + + queued + + src/app/components/admin/tasks/tasks.component.ts + 246 + + queued + + + started + + src/app/components/admin/tasks/tasks.component.ts + 248 + + started + + + completed + + src/app/components/admin/tasks/tasks.component.ts + 250 + + completed + + + failed + + src/app/components/admin/tasks/tasks.component.ts + 252 + + failed + + + Trash + + src/app/components/admin/trash/trash.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 238 + + + src/app/components/app-frame/app-frame.component.html + 241 + + Trash + + + Manage trashed documents that are pending deletion. + + src/app/components/admin/trash/trash.component.html + 4 + + Manage trashed documents that are pending deletion. + + + Restore selected + + src/app/components/admin/trash/trash.component.html + 11 + + Restore selected + + + Delete selected + + src/app/components/admin/trash/trash.component.html + 14 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + + Delete selected + + + Empty trash + + src/app/components/admin/trash/trash.component.html + 17 + + Empty trash + + + Remaining + + src/app/components/admin/trash/trash.component.html + 36 + + Remaining + + + days + + src/app/components/admin/trash/trash.component.html + 63 + + days + + + Restore + + src/app/components/admin/trash/trash.component.html + 71 + + + src/app/components/admin/trash/trash.component.html + 78 + + Restore + + + Delete + + src/app/components/admin/trash/trash.component.html + 72 + + + src/app/components/admin/trash/trash.component.html + 81 + + + src/app/components/admin/trash/trash.component.ts + 82 + + + src/app/components/admin/trash/trash.component.ts + 116 + + + src/app/components/admin/users-groups/users-groups.component.html + 38 + + + src/app/components/admin/users-groups/users-groups.component.html + 76 + + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 27 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 87 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 45 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 + + + src/app/components/common/permissions-select/permissions-select.component.html + 19 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 36 + + + src/app/components/document-detail/document-detail.component.html + 24 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 145 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 43 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 55 + + + src/app/components/manage/mail/mail.component.html + 67 + + + src/app/components/manage/mail/mail.component.html + 81 + + + src/app/components/manage/mail/mail.component.html + 155 + + + src/app/components/manage/mail/mail.component.html + 169 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 10 + + + src/app/components/manage/management-list/management-list.component.html + 121 + + + src/app/components/manage/management-list/management-list.component.html + 121 + + + src/app/components/manage/management-list/management-list.component.html + 121 + + + src/app/components/manage/management-list/management-list.component.html + 121 + + + src/app/components/manage/management-list/management-list.component.html + 133 + + + src/app/components/manage/management-list/management-list.component.html + 133 + + + src/app/components/manage/management-list/management-list.component.html + 133 + + + src/app/components/manage/management-list/management-list.component.html + 133 + + + src/app/components/manage/management-list/management-list.component.ts + 247 + + + src/app/components/manage/saved-views/saved-views.component.html + 30 + + + src/app/components/manage/workflows/workflows.component.html + 55 + + + src/app/components/manage/workflows/workflows.component.html + 66 + + Delete + + + {VAR_PLURAL, plural, =1 {One document in trash} other { total documents in trash}} + + src/app/components/admin/trash/trash.component.html + 94 + + {VAR_PLURAL, plural, =1 {One document in trash} other { total documents in trash}} + + + Confirm delete + + src/app/components/admin/trash/trash.component.ts + 78 + + + src/app/components/admin/trash/trash.component.ts + 110 + + + src/app/components/manage/management-list/management-list.component.ts + 243 + + + src/app/components/manage/management-list/management-list.component.ts + 366 + + Confirm delete + + + This operation will permanently delete this document. + + src/app/components/admin/trash/trash.component.ts + 79 + + This operation will permanently delete this document. + + + This operation cannot be undone. + + src/app/components/admin/trash/trash.component.ts + 80 + + + src/app/components/admin/trash/trash.component.ts + 114 + + + src/app/components/admin/users-groups/users-groups.component.ts + 145 + + + src/app/components/admin/users-groups/users-groups.component.ts + 198 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 104 + + + src/app/components/manage/mail/mail.component.ts + 192 + + + src/app/components/manage/mail/mail.component.ts + 293 + + + src/app/components/manage/management-list/management-list.component.ts + 368 + + + src/app/components/manage/workflows/workflows.component.ts + 133 + + This operation cannot be undone. + + + Document "" deleted + + src/app/components/admin/trash/trash.component.ts + 90 + + Document "" deleted + + + Error deleting document "" + + src/app/components/admin/trash/trash.component.ts + 97 + + Error deleting document "" + + + This operation will permanently delete the selected documents. + + src/app/components/admin/trash/trash.component.ts + 112 + + This operation will permanently delete the selected documents. + + + This operation will permanently delete all documents in the trash. + + src/app/components/admin/trash/trash.component.ts + 113 + + This operation will permanently delete all documents in the trash. + + + Document(s) deleted + + src/app/components/admin/trash/trash.component.ts + 124 + + Document(s) deleted + + + Error deleting document(s) + + src/app/components/admin/trash/trash.component.ts + 131 + + Error deleting document(s) + + + Document "" restored + + src/app/components/admin/trash/trash.component.ts + 144 + + Document "" restored + + + Error restoring document "" + + src/app/components/admin/trash/trash.component.ts + 155 + + Error restoring document "" + + + Document(s) restored + + src/app/components/admin/trash/trash.component.ts + 167 + + Document(s) restored + + + Error restoring document(s) + + src/app/components/admin/trash/trash.component.ts + 173 + + Error restoring document(s) + + + Users & Groups + + src/app/components/admin/users-groups/users-groups.component.html + 2 + + + src/app/components/app-frame/app-frame.component.html + 269 + + + src/app/components/app-frame/app-frame.component.html + 271 + + Users & Groups + + + Create, delete and edit users and groups. + + src/app/components/admin/users-groups/users-groups.component.html + 4 + + Create, delete and edit users and groups. + + + Users + + src/app/components/admin/users-groups/users-groups.component.html + 12 + + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 76 + + Users + + + Add User + + src/app/components/admin/users-groups/users-groups.component.html + 14 + + Add User + + + Username + + src/app/components/admin/users-groups/users-groups.component.html + 20 + + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 19 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 13 + + + src/app/components/manage/mail/mail.component.html + 32 + + Username + + + Groups + + src/app/components/admin/users-groups/users-groups.component.html + 22 + + + src/app/components/admin/users-groups/users-groups.component.html + 50 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 34 + + Groups + + + Edit + + src/app/components/admin/users-groups/users-groups.component.html + 35 + + + src/app/components/admin/users-groups/users-groups.component.html + 73 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 53 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 42 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 52 + + + src/app/components/manage/mail/mail.component.html + 65 + + + src/app/components/manage/mail/mail.component.html + 75 + + + src/app/components/manage/mail/mail.component.html + 153 + + + src/app/components/manage/mail/mail.component.html + 163 + + + src/app/components/manage/management-list/management-list.component.html + 120 + + + src/app/components/manage/management-list/management-list.component.html + 120 + + + src/app/components/manage/management-list/management-list.component.html + 120 + + + src/app/components/manage/management-list/management-list.component.html + 120 + + + src/app/components/manage/management-list/management-list.component.html + 130 + + + src/app/components/manage/management-list/management-list.component.html + 130 + + + src/app/components/manage/management-list/management-list.component.html + 130 + + + src/app/components/manage/management-list/management-list.component.html + 130 + + + src/app/components/manage/workflows/workflows.component.html + 54 + + + src/app/components/manage/workflows/workflows.component.html + 63 + + Edit + + + Add Group + + src/app/components/admin/users-groups/users-groups.component.html + 52 + + Add Group + + + No groups defined + + src/app/components/admin/users-groups/users-groups.component.html + 84 + + No groups defined + + + Password has been changed, you will be logged out momentarily. + + src/app/components/admin/users-groups/users-groups.component.ts + 116 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 201 + + Password has been changed, you will be logged out momentarily. + + + Saved user "". + + src/app/components/admin/users-groups/users-groups.component.ts + 125 + + Saved user "". + + + Error saving user. + + src/app/components/admin/users-groups/users-groups.component.ts + 135 + + Error saving user. + + + Confirm delete user account + + src/app/components/admin/users-groups/users-groups.component.ts + 143 + + Confirm delete user account + + + This operation will permanently delete this user account. + + src/app/components/admin/users-groups/users-groups.component.ts + 144 + + This operation will permanently delete this user account. + + + Proceed + + src/app/components/admin/users-groups/users-groups.component.ts + 147 + + + src/app/components/admin/users-groups/users-groups.component.ts + 200 + + + src/app/components/document-detail/document-detail.component.ts + 1028 + + + src/app/components/document-detail/document-detail.component.ts + 1393 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 798 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 831 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 850 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 106 + + + src/app/components/manage/mail/mail.component.ts + 194 + + + src/app/components/manage/mail/mail.component.ts + 295 + + + src/app/components/manage/management-list/management-list.component.ts + 370 + + + src/app/components/manage/workflows/workflows.component.ts + 135 + + Proceed + + + Deleted user "" + + src/app/components/admin/users-groups/users-groups.component.ts + 153 + + Deleted user "" + + + Error deleting user "". + + src/app/components/admin/users-groups/users-groups.component.ts + 160 + + Error deleting user "". + + + Saved group "". + + src/app/components/admin/users-groups/users-groups.component.ts + 180 + + Saved group "". + + + Error saving group. + + src/app/components/admin/users-groups/users-groups.component.ts + 188 + + Error saving group. + + + Confirm delete user group + + src/app/components/admin/users-groups/users-groups.component.ts + 196 + + Confirm delete user group + + + This operation will permanently delete this user group. + + src/app/components/admin/users-groups/users-groups.component.ts + 197 + + This operation will permanently delete this user group. + + + Deleted group "" + + src/app/components/admin/users-groups/users-groups.component.ts + 206 + + Deleted group "" + + + Error deleting group "". + + src/app/components/admin/users-groups/users-groups.component.ts + 213 + + Error deleting group "". + + + by Paperless-ngx + + src/app/components/app-frame/app-frame.component.html + 20 + + by Paperless-ngx + + + Logged in as + + src/app/components/app-frame/app-frame.component.html + 43 + + Logged in as + + + My Profile + + src/app/components/app-frame/app-frame.component.html + 47 + + My Profile + + + Logout + + src/app/components/app-frame/app-frame.component.html + 54 + + Logout + + + Documentation + + src/app/components/app-frame/app-frame.component.html + 59 + + + src/app/components/app-frame/app-frame.component.html + 299 + + + src/app/components/app-frame/app-frame.component.html + 302 + + Documentation + + + Saved views + + src/app/components/app-frame/app-frame.component.html + 101 + + + src/app/components/app-frame/app-frame.component.html + 106 + + Saved views + + + Open documents + + src/app/components/app-frame/app-frame.component.html + 141 + + Open documents + + + Close all + + src/app/components/app-frame/app-frame.component.html + 161 + + + src/app/components/app-frame/app-frame.component.html + 163 + + Close all + + + Manage + + src/app/components/app-frame/app-frame.component.html + 172 + + Manage + + + Correspondents + + src/app/components/app-frame/app-frame.component.html + 178 + + + src/app/components/app-frame/app-frame.component.html + 180 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 107 + + Correspondents + + + Tags + + src/app/components/app-frame/app-frame.component.html + 185 + + + src/app/components/app-frame/app-frame.component.html + 188 + + + src/app/components/common/input/tags/tags.component.ts + 80 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 94 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 5 + + + src/app/components/document-list/document-list.component.html + 224 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 39 + + + src/app/data/document.ts + 42 + + Tags + + + Document Types + + src/app/components/app-frame/app-frame.component.html + 194 + + + src/app/components/app-frame/app-frame.component.html + 196 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 120 + + Document Types + + + Storage Paths + + src/app/components/app-frame/app-frame.component.html + 201 + + + src/app/components/app-frame/app-frame.component.html + 203 + + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 133 + + Storage Paths + + + Custom Fields + + src/app/components/app-frame/app-frame.component.html + 208 + + + src/app/components/app-frame/app-frame.component.html + 210 + + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html + 4 + + + src/app/components/manage/custom-fields/custom-fields.component.html + 2 + + Custom Fields + + + Workflows + + src/app/components/app-frame/app-frame.component.html + 224 + + + src/app/components/app-frame/app-frame.component.html + 226 + + + src/app/components/manage/workflows/workflows.component.html + 2 + + Workflows + + + Mail + + src/app/components/app-frame/app-frame.component.html + 231 + + + src/app/components/app-frame/app-frame.component.html + 234 + + Mail + + + Administration + + src/app/components/app-frame/app-frame.component.html + 249 + + Administration + + + Configuration + + src/app/components/app-frame/app-frame.component.html + 262 + + + src/app/components/app-frame/app-frame.component.html + 264 + + Configuration + + + GitHub + + src/app/components/app-frame/app-frame.component.html + 309 + + GitHub + + + is available. + + src/app/components/app-frame/app-frame.component.html + 318,319 + + is available. + + + Click to view. + + src/app/components/app-frame/app-frame.component.html + 319 + + Click to view. + + + Paperless-ngx can automatically check for updates + + src/app/components/app-frame/app-frame.component.html + 323 + + Paperless-ngx can automatically check for updates + + + How does this work? + + src/app/components/app-frame/app-frame.component.html + 330,332 + + How does this work? + + + Update available + + src/app/components/app-frame/app-frame.component.html + 343 + + Update available + + + Sidebar views updated + + src/app/components/app-frame/app-frame.component.ts + 264 + + Sidebar views updated + + + Error updating sidebar views + + src/app/components/app-frame/app-frame.component.ts + 267 + + Error updating sidebar views + + + An error occurred while saving update checking settings. + + src/app/components/app-frame/app-frame.component.ts + 288 + + An error occurred while saving update checking settings. + + + Search + + src/app/components/app-frame/global-search/global-search.component.html + 8 + + + src/app/components/app-frame/global-search/global-search.component.html + 26 + + Search + + + Open + + src/app/components/app-frame/global-search/global-search.component.html + 53 + + + src/app/components/app-frame/global-search/global-search.component.html + 56 + + + src/app/components/app-frame/global-search/global-search.component.html + 59 + + + src/app/components/app-frame/global-search/global-search.component.html + 76 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 72 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 143 + + Open + + + Filter documents + + src/app/components/app-frame/global-search/global-search.component.html + 62 + + Filter documents + + + Download + + src/app/components/app-frame/global-search/global-search.component.html + 73 + + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 104 + + + src/app/components/document-detail/document-detail.component.html + 34 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 117 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 78 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 149 + + Download + + + No results + + src/app/components/app-frame/global-search/global-search.component.html + 87 + + No results + + + Documents + + src/app/components/app-frame/global-search/global-search.component.html + 90 + + Documents + + + Saved Views + + src/app/components/app-frame/global-search/global-search.component.html + 96 + + Saved Views + + + Tags + + src/app/components/app-frame/global-search/global-search.component.html + 103 + + Tags + + + Correspondents + + src/app/components/app-frame/global-search/global-search.component.html + 110 + + Correspondents + + + Document types + + src/app/components/app-frame/global-search/global-search.component.html + 117 + + Document types + + + Storage paths + + src/app/components/app-frame/global-search/global-search.component.html + 124 + + Storage paths + + + Users + + src/app/components/app-frame/global-search/global-search.component.html + 131 + + Users + + + Groups + + src/app/components/app-frame/global-search/global-search.component.html + 138 + + Groups + + + Custom fields + + src/app/components/app-frame/global-search/global-search.component.html + 145 + + Custom fields + + + Mail accounts + + src/app/components/app-frame/global-search/global-search.component.html + 152 + + Mail accounts + + + Mail rules + + src/app/components/app-frame/global-search/global-search.component.html + 159 + + Mail rules + + + Workflows + + src/app/components/app-frame/global-search/global-search.component.html + 166 + + Workflows + + + Successfully updated object. + + src/app/components/app-frame/global-search/global-search.component.ts + 211 + + + src/app/components/app-frame/global-search/global-search.component.ts + 249 + + Successfully updated object. + + + Error occurred saving object. + + src/app/components/app-frame/global-search/global-search.component.ts + 214 + + + src/app/components/app-frame/global-search/global-search.component.ts + 252 + + Error occurred saving object. + + + Clear All + + src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.html + 16 + + Clear All + + + No notifications + + src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.html + 20 + + No notifications + + + Clear + + src/app/components/common/clearable-badge/clearable-badge.component.html + 2 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + + Clear + + + Are you sure? + + src/app/components/common/confirm-button/confirm-button.component.ts + 22 + + Are you sure? + + + Confirmation + + src/app/components/common/confirm-dialog/confirm-dialog.component.ts + 23 + + Confirmation + + + Confirm + + src/app/components/common/confirm-dialog/confirm-dialog.component.ts + 35 + + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 26 + + + src/app/components/document-detail/document-detail.component.ts + 981 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 441 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 481 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 519 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 557 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 619 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 752 + + Confirm + + + Documents: + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 9 + + Documents: + + + Use metadata from: + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 22 + + Use metadata from: + + + Regenerate all metadata + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 24 + + Regenerate all metadata + + + Try to include archive version in merge for non-PDF files + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 32 + + Try to include archive version in merge for non-PDF files + + + Delete original documents after successful merge + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 36 + + Delete original documents after successful merge + + + Note that only PDFs will be included. + + src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html + 39 + + Note that only PDFs will be included. + + + Note that only PDFs will be rotated. + + src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.html + 25 + + Note that only PDFs will be rotated. + + + View + + src/app/components/common/custom-field-display/custom-field-display.component.html + 22 + + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 34 + + + src/app/components/common/permissions-select/permissions-select.component.html + 20 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 75 + + View + + + Search fields + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html + 10 + + Search fields + + + Create new field + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html + 21 + + Create new field + + + Saved field "". + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts + 130 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 85 + + Saved field "". + + + Error saving field. + + src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts + 139 + + + src/app/components/manage/custom-fields/custom-fields.component.ts + 94 + + Error saving field. + + + Today + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 47 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 52 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 76 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 128 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 152 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 111 + + + src/app/components/common/input/date/date.component.html + 21 + + Today + + + Close + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 48 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 53 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 77 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 129 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 153 + + + src/app/components/common/input/date/date.component.html + 22 + + + src/app/components/document-detail/document-detail.component.html + 107 + + + src/app/guards/dirty-saved-view.guard.ts + 35 + + Close + + + True + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 55 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 95 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 101 + + True + + + False + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 56 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 96 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 102 + + False + + + Search docs... + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 70 + + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 118 + + Search docs... + + + Any + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 150 + + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 17 + + Any + + + All + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 152 + + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 15 + + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 16 + + + src/app/components/common/permissions-select/permissions-select.component.html + 16 + + + src/app/components/common/permissions-select/permissions-select.component.html + 27 + + + src/app/components/document-list/document-list.component.html + 30 + + All + + + Not + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 155 + + Not + + + Add query + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 174 + + Add query + + + Add expression + + src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html + 177 + + Add expression + + + Relative dates + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 25 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 101 + + Relative dates + + + From + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 44 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 120 + + From + + + To + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 68 + + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 144 + + To + + + Added + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 84 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 90 + + + src/app/components/document-list/document-list.component.html + 278 + + + src/app/data/document.ts + 38 + + + src/app/data/document.ts + 93 + + Added + + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + now + + + Within 1 week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 81 + + Within 1 week + + + Within 1 month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 86 + + Within 1 month + + + Within 3 months + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 91 + + Within 3 months + + + Within 1 year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 96 + + Within 1 year + + + This year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 101 + + This year + + + This month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 106 + + This month + + + Yesterday + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 116 + + + src/app/pipes/custom-date.pipe.ts + 29 + + Yesterday + + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + + + Matching algorithm + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 13 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 14 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 64 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 18 + + Matching algorithm + + + Matching pattern + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 15 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 16 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 66 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 20 + + Matching pattern + + + Case insensitive + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html + 16 + + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html + 17 + + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 67 + + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 21 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 173 + + Case insensitive + + + Create new correspondent + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts + 43 + + Create new correspondent + + + Edit correspondent + + src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts + 47 + + Edit correspondent + + + Data type + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 12 + + Data type + + + Data type cannot be changed after a field is created + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 14 + + Data type cannot be changed after a field is created + + + Add option + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 20 + + Add option + + + Default Currency + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 44 + + Default Currency + + + 3-character currency code + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 44 + + 3-character currency code + + + Use locale + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html + 44 + + Use locale + + + Create new custom field + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts + 118 + + Create new custom field + + + Edit custom field + + src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts + 122 + + Edit custom field + + + Create new document type + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts + 43 + + Create new document type + + + Edit document type + + src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts + 47 + + Edit document type + + + Create new item + + src/app/components/common/edit-dialog/edit-dialog.component.ts + 121 + + Create new item + + + Edit item + + src/app/components/common/edit-dialog/edit-dialog.component.ts + 125 + + Edit item + + + Create new user group + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts + 36 + + Create new user group + + + Edit user group + + src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts + 40 + + Edit user group + + + IMAP Server + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 14 + + IMAP Server + + + IMAP Port + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 15 + + IMAP Port + + + IMAP Security + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 16 + + IMAP Security + + + Password + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 20 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 15 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 20 + + Password + + + Password is token + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 21 + + Password is token + + + Check if the password above is a token used for authentication + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 21 + + Check if the password above is a token used for authentication + + + Character Set + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 22 + + Character Set + + + Test + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html + 37 + + Test + + + No encryption + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 20 + + No encryption + + + SSL + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 21 + + SSL + + + STARTTLS + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 22 + + STARTTLS + + + Create new mail account + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 54 + + Create new mail account + + + Edit mail account + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 58 + + Edit mail account + + + Successfully connected to the mail server + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 103 + + Successfully connected to the mail server + + + Unable to connect to the mail server + + src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts + 104 + + Unable to connect to the mail server + + + Account + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 16 + + + src/app/components/manage/mail/mail.component.html + 113 + + Account + + + Order + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 19 + + Order + + + Enabled + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 22 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 19 + + + src/app/components/manage/mail/mail.component.html + 137 + + + src/app/components/manage/workflows/workflows.component.html + 41 + + Enabled + + + Paperless will only process mails that match all of the criteria specified below. + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 27 + + Paperless will only process mails that match all of the criteria specified below. + + + Folder + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 29 + + Folder + + + Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server. + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 29 + + Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server. + + + Maximum age (days) + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 30 + + Maximum age (days) + + + Filter from + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 33 + + Filter from + + + Filter to + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 34 + + Filter to + + + Filter subject + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 35 + + Filter subject + + + Filter body + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 36 + + Filter body + + + Consumption scope + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 42 + + Consumption scope + + + See docs for .eml processing requirements + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 42 + + See docs for .eml processing requirements + + + Attachment type + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 43 + + Attachment type + + + PDF layout + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 44 + + PDF layout + + + Include only files matching + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 47 + + Include only files matching + + + Optional. Wildcards e.g. *.pdf or *invoice* allowed. Can be comma-separated list. Case insensitive. + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 47 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 48 + + Optional. Wildcards e.g. *.pdf or *invoice* allowed. Can be comma-separated list. Case insensitive. + + + Exclude files matching + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 48 + + Exclude files matching + + + Action + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 54 + + Action + + + Only performed if the mail is processed. + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 54 + + Only performed if the mail is processed. + + + Action parameter + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 56 + + Action parameter + + + Assign title from + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 58 + + Assign title from + + + Assign owner from rule + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 59 + + Assign owner from rule + + + Assign document type + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 63 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 265 + + Assign document type + + + Assign correspondent from + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 64 + + Assign correspondent from + + + Assign correspondent + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 66 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 266 + + Assign correspondent + + + Error + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html + 73 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 113 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 186 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 220 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 254 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 264 + + + src/app/components/common/toast/toast.component.html + 30 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + + Error + + + Only process attachments + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 38 + + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 49 + + Only process attachments + + + Process all files, including 'inline' attachments + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 42 + + Process all files, including 'inline' attachments + + + Process message as .eml + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 53 + + Process message as .eml + + + Process message as .eml and attachments separately + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 57 + + Process message as .eml and attachments separately + + + System default + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 64 + + System default + + + Text, then HTML + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 68 + + Text, then HTML + + + HTML, then text + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 72 + + HTML, then text + + + HTML only + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 76 + + HTML only + + + Text only + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 80 + + Text only + + + Move to specified folder + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 91 + + Move to specified folder + + + Mark as read, don't process read mails + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 95 + + Mark as read, don't process read mails + + + Flag the mail, don't process flagged mails + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 99 + + Flag the mail, don't process flagged mails + + + Tag the mail with specified tag, don't process tagged mails + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 103 + + Tag the mail with specified tag, don't process tagged mails + + + Use subject as title + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 110 + + Use subject as title + + + Use attachment filename as title + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 114 + + Use attachment filename as title + + + Do not assign title from this rule + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 118 + + Do not assign title from this rule + + + Do not assign a correspondent + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 125 + + Do not assign a correspondent + + + Use mail address + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 129 + + Use mail address + + + Use name (or mail address if not available) + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 133 + + Use name (or mail address if not available) + + + Use correspondent selected below + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 137 + + Use correspondent selected below + + + Create new mail rule + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 191 + + Create new mail rule + + + Edit mail rule + + src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts + 195 + + Edit mail rule + + + Path + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 13 + + + src/app/components/manage/storage-path-list/storage-path-list.component.ts + 49 + + Path + + + See <a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'>the documentation</a>. + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 13 + + See <a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'>the documentation</a>. + + + Preview + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 18 + + + src/app/components/document-detail/document-detail.component.html + 309 + + Preview + + + Path test failed + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 30 + + Path test failed + + + No document selected + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 32 + + No document selected + + + Search for a document + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 38 + + Search for a document + + + No documents found + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html + 39 + + + src/app/components/common/input/document-link/document-link.component.ts + 72 + + No documents found + + + Create new storage path + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts + 82 + + Create new storage path + + + Edit storage path + + src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts + 86 + + Edit storage path + + + Color + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 13 + + + src/app/components/manage/tag-list/tag-list.component.ts + 49 + + Color + + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + + + Inbox tag + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 17 + + Inbox tag + + + Inbox tags are automatically assigned to all consumed documents. + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 17 + + Inbox tags are automatically assigned to all consumed documents. + + + Create new tag + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts + 51 + + Create new tag + + + Edit tag + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts + 55 + + Edit tag + + + Email + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 14 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 136 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 10 + + + src/app/components/document-detail/document-detail.component.html + 92 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + + Email + + + First name + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 16 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 30 + + First name + + + Last name + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 17 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 31 + + Last name + + + Active + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 22 + + Active + + + Admin + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 26 + + Admin + + + Access logs, Django backend + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 26 + + Access logs, Django backend + + + Superuser + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 30 + + Superuser + + + (Grants all permissions and can view objects) + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 30 + + (Grants all permissions and can view objects) + + + Two-factor Authentication + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 37 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 103 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 139 + + Two-factor Authentication + + + Disable Two-factor Authentication + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 39 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html + 41 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 170 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 172 + + Disable Two-factor Authentication + + + Create new user account + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 72 + + Create new user account + + + Edit user account + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 76 + + Edit user account + + + Totp deactivated + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 132 + + Totp deactivated + + + Totp deactivation failed + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 135 + + + src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts + 140 + + Totp deactivation failed + + + Sort order + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 16 + + + src/app/components/manage/workflows/workflows.component.html + 18 + + Sort order + + + Triggers + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 25 + + + src/app/components/manage/workflows/workflows.component.html + 20 + + Triggers + + + Trigger Workflow On: + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 31 + + Trigger Workflow On: + + + Add Trigger + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 33 + + Add Trigger + + + Apply Actions: + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 73 + + Apply Actions: + + + Add Action + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 75 + + Add Action + + + Trigger type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 123 + + Trigger type + + + Set scheduled trigger offset and which date field to use. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 125 + + Set scheduled trigger offset and which date field to use. + + + Offset days + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 130 + + Offset days + + + Positive values will trigger after the date, negative values before. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 134 + + Positive values will trigger after the date, negative values before. + + + Relative to + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 139 + + Relative to + + + Custom field + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 143 + + Custom field + + + Custom field to use for date. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 143 + + Custom field to use for date. + + + Recurring + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 149 + + Recurring + + + Trigger is recurring. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 149 + + Trigger is recurring. + + + Recurring interval days + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 153 + + Recurring interval days + + + Repeat the trigger every n days. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 153 + + Repeat the trigger every n days. + + + Trigger for documents that match all filters specified below. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 158 + + Trigger for documents that match all filters specified below. + + + Filter filename + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 161 + + Filter filename + + + Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 161 + + Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. + + + Filter sources + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 163 + + Filter sources + + + Filter path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 164 + + Filter path + + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 164 + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. + + + Filter mail rule + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 165 + + Filter mail rule + + + Apply to documents consumed via this mail rule. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 165 + + Apply to documents consumed via this mail rule. + + + Content matching algorithm + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 168 + + Content matching algorithm + + + Content matching pattern + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 170 + + Content matching pattern + + + Advanced Filters + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 183 + + Advanced Filters + + + Add filter + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 190 + + Add filter + + + No advanced workflow filters defined. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 195 + + No advanced workflow filters defined. + + + Complete the custom field query configuration. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 224,226 + + Complete the custom field query configuration. + + + Action type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 258 + + Action type + + + Assign title + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 263 + + Assign title + + + Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 263 + + Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. + + + Assign tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 264 + + Assign tags + + + Assign storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 267 + + Assign storage path + + + Assign custom fields + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 268 + + Assign custom fields + + + Assign owner + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 272 + + Assign owner + + + Assign view permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 274 + + Assign view permissions + + + Assign edit permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 293 + + Assign edit permissions + + + Remove tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 320 + + Remove tags + + + Remove all + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 321 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 327 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 333 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 339 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 345 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 352 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 358 + + Remove all + + + Remove correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 326 + + Remove correspondents + + + Remove document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 332 + + Remove document types + + + Remove storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 338 + + Remove storage paths + + + Remove custom fields + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 344 + + Remove custom fields + + + Remove owners + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 351 + + Remove owners + + + Remove permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 357 + + Remove permissions + + + View permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 360 + + View permissions + + + Edit permissions + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 379 + + Edit permissions + + + Email subject + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 407 + + Email subject + + + Email body + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 408 + + Email body + + + Email recipients + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 409 + + Email recipients + + + Attach document + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 410 + + Attach document + + + Webhook url + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 418 + + Webhook url + + + Use parameters for webhook body + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 420 + + Use parameters for webhook body + + + Send webhook payload as JSON + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 421 + + Send webhook payload as JSON + + + Webhook params + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 424 + + Webhook params + + + Webhook body + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 426 + + Webhook body + + + Webhook headers + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 428 + + Webhook headers + + + Include document + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 429 + + Include document + + + Consume Folder + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 71 + + Consume Folder + + + API Upload + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 75 + + API Upload + + + Mail Fetch + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 79 + + Mail Fetch + + + Web UI + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 83 + + Web UI + + + Modified + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 98 + + + src/app/data/document.ts + 94 + + Modified + + + Custom Field + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 102 + + Custom Field + + + Consumption Started + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 109 + + Consumption Started + + + Document Added + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 113 + + Document Added + + + Document Updated + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 117 + + Document Updated + + + Scheduled + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 121 + + Scheduled + + + Assignment + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 128 + + Assignment + + + Removal + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 132 + + Removal + + + Webhook + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 140 + + Webhook + + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + + + Create new workflow + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 474 + + Create new workflow + + + Edit workflow + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 478 + + Edit workflow + + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + + Email address(es) + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 11 + + Email address(es) + + + Subject + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 + + Subject + + + Message + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 19 + + Message + + + Use archive version + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 27 + + Use archive version + + + Send email + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 33 + + Send email + + + Some email servers may reject messages with large attachments. + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 + + Some email servers may reject messages with large attachments. + + + Email sent + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 63 + + Email sent + + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + + + Error emailing document + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 70 + + Error emailing document + + + Include + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 25 + + Include + + + Exclude + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 27 + + Exclude + + + Create + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 58 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 65 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + + src/app/components/manage/management-list/management-list.component.html + 13 + + Create + + + Apply + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 64 + + Apply + + + Click again to exclude items. + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.html + 77 + + Click again to exclude items. + + + Not assigned + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts + 95 + + Filter drop down element to filter for documents with no correspondent/type/tag assigned + Not assigned + + + Open filter + + src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts + 767 + + Open filter + + + Keyboard shortcuts + + src/app/components/common/hotkey-dialog/hotkey-dialog.component.ts + 24 + + Keyboard shortcuts + + + Remove + + src/app/components/common/input/check/check.component.html + 8 + + + src/app/components/common/input/date/date.component.html + 7 + + + src/app/components/common/input/document-link/document-link.component.html + 12 + + + src/app/components/common/input/file/file.component.html + 9 + + + src/app/components/common/input/file/file.component.html + 21 + + + src/app/components/common/input/monetary/monetary.component.html + 9 + + + src/app/components/common/input/number/number.component.html + 9 + + + src/app/components/common/input/select/select.component.html + 10 + + + src/app/components/common/input/switch/switch.component.html + 13 + + + src/app/components/common/input/text/text.component.html + 9 + + + src/app/components/common/input/textarea/textarea.component.html + 9 + + + src/app/components/common/input/url/url.component.html + 7 + + Remove + + + Invalid date. + + src/app/components/common/input/date/date.component.html + 31 + + Invalid date. + + + Suggestions: + + src/app/components/common/input/date/date.component.html + 37 + + + src/app/components/common/input/select/select.component.html + 61 + + + src/app/components/common/input/tags/tags.component.html + 65 + + Suggestions: + + + Filter documents with this + + src/app/components/common/input/date/date.component.ts + 120 + + + src/app/components/common/input/select/select.component.ts + 172 + + Filter documents with this + + + Remove link + + src/app/components/common/input/document-link/document-link.component.html + 43 + + + src/app/components/common/input/document-link/document-link.component.html + 50 + + Remove link + + + Open link + + src/app/components/common/input/document-link/document-link.component.html + 46 + + + src/app/components/common/input/url/url.component.html + 14 + + Open link + + + Not found + + src/app/components/common/input/document-link/document-link.component.html + 51 + + Not found + + + Search for documents + + src/app/components/common/input/document-link/document-link.component.ts + 81 + + Search for documents + + + Selected items + + src/app/components/common/input/drag-drop-select/drag-drop-select.component.ts + 25 + + Selected items + + + No items selected + + src/app/components/common/input/drag-drop-select/drag-drop-select.component.ts + 31 + + No items selected + + + Add + + src/app/components/common/input/entries/entries.component.html + 8 + + + src/app/components/common/permissions-select/permissions-select.component.html + 17 + + Add + + + Upload + + src/app/components/common/input/file/file.component.html + 15 + + Upload + + + Show password + + src/app/components/common/input/password/password.component.html + 6 + + Show password + + + Edit Permissions + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 9 + + Edit Permissions + + + Owner: + + src/app/components/common/input/permissions/permissions-form/permissions-form.component.html + 26 + + Owner: + + + Add item + + src/app/components/common/input/select/select.component.html + 25 + + Used for both types, correspondents, storage paths + Add item + + + Private + + src/app/components/common/input/select/select.component.ts + 71 + + + src/app/components/common/tag/tag.component.html + 20 + + + src/app/components/common/tag/tag.component.html + 23 + + + src/app/pipes/object-name.pipe.ts + 40 + + + src/app/pipes/object-name.pipe.ts + 46 + + Private + + + No items found + + src/app/components/common/input/select/select.component.ts + 106 + + No items found + + + Note: value has not yet been set and will not apply until explicitly changed + + src/app/components/common/input/switch/switch.component.html + 39 + + Note: value has not yet been set and will not apply until explicitly changed + + + Add tag + + src/app/components/common/input/tags/tags.component.html + 17 + + Add tag + + + Remove tag + + src/app/components/common/input/tags/tags.component.html + 23 + + Remove tag + + + Filter documents with these Tags + + src/app/components/common/input/tags/tags.component.html + 55 + + Filter documents with these Tags + + + Read more + + src/app/components/common/page-header/page-header.component.html + 15 + + + src/app/components/common/permissions-select/permissions-select.component.html + 9 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + + Read more + + + Select all pages + + src/app/components/common/pdf-editor/pdf-editor.component.html + 9 + + Select all pages + + + Deselect all pages + + src/app/components/common/pdf-editor/pdf-editor.component.html + 12 + + Deselect all pages + + + Rotate selected pages counter-clockwise + + src/app/components/common/pdf-editor/pdf-editor.component.html + 17 + + Rotate selected pages counter-clockwise + + + Rotate selected pages clockwise + + src/app/components/common/pdf-editor/pdf-editor.component.html + 20 + + Rotate selected pages clockwise + + + Delete selected pages + + src/app/components/common/pdf-editor/pdf-editor.component.html + 23 + + Delete selected pages + + + Rotate page counter-clockwise + + src/app/components/common/pdf-editor/pdf-editor.component.html + 33 + + Rotate page counter-clockwise + + + Rotate page clockwise + + src/app/components/common/pdf-editor/pdf-editor.component.html + 36 + + Rotate page clockwise + + + Delete page + + src/app/components/common/pdf-editor/pdf-editor.component.html + 41 + + Delete page + + + Add / remove document split here + + src/app/components/common/pdf-editor/pdf-editor.component.html + 44 + + Add / remove document split here + + + Split here + + src/app/components/common/pdf-editor/pdf-editor.component.html + 70 + + Split here + + + Create new document(s) + + src/app/components/common/pdf-editor/pdf-editor.component.html + 82 + + Create new document(s) + + + Update existing document + + src/app/components/common/pdf-editor/pdf-editor.component.html + 87 + + Update existing document + + + Copy metadata + + src/app/components/common/pdf-editor/pdf-editor.component.html + 94 + + Copy metadata + + + Delete original + + src/app/components/common/pdf-editor/pdf-editor.component.html + 98 + + Delete original + + + Merge with existing permissions + + src/app/components/common/permissions-dialog/permissions-dialog.component.html + 14 + + Merge with existing permissions + + + Set permissions + + src/app/components/common/permissions-dialog/permissions-dialog.component.ts + 41 + + Set permissions + + + Edit permissions for + + src/app/components/common/permissions-dialog/permissions-dialog.component.ts + 46 + + Edit permissions for + + + Existing owner, user and group permissions will be merged with these settings. + + src/app/components/common/permissions-dialog/permissions-dialog.component.ts + 87 + + Existing owner, user and group permissions will be merged with these settings. + + + Any and all existing owner, user and group permissions will be replaced. + + src/app/components/common/permissions-dialog/permissions-dialog.component.ts + 88 + + Any and all existing owner, user and group permissions will be replaced. + + + My documents + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 26 + + My documents + + + Shared with me + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 36 + + Shared with me + + + Shared by me + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 46 + + Shared by me + + + Unowned + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 56 + + Unowned + + + Hide unowned + + src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html + 86 + + Hide unowned + + + Global permissions define what areas of the app and API endpoints users can access. + + src/app/components/common/permissions-select/permissions-select.component.html + 8 + + Global permissions define what areas of the app and API endpoints users can access. + + + Type + + src/app/components/common/permissions-select/permissions-select.component.html + 15 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 56 + + Type + + + Change + + src/app/components/common/permissions-select/permissions-select.component.html + 18 + + Change + + + Inherited from group + + src/app/components/common/permissions-select/permissions-select.component.ts + 78 + + Inherited from group + + + Error loading preview + + src/app/components/common/preview-popup/preview-popup.component.html + 10 + + Error loading preview + + + Open preview + + src/app/components/common/preview-popup/preview-popup.component.ts + 52 + + Open preview + + + Edit Profile + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 3 + + Edit Profile + + + Confirm Email + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 15 + + Confirm Email + + + Confirm Password + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 25 + + Confirm Password + + + API Auth Token + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 33 + + API Auth Token + + + Copy + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 37 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 44 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 157 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 28 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 284 + + + src/app/components/manage/mail/mail.component.html + 156 + + + src/app/components/manage/mail/mail.component.html + 174 + + + src/app/components/manage/workflows/workflows.component.html + 56 + + + src/app/components/manage/workflows/workflows.component.html + 71 + + Copy + + + Regenerate auth token + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 47 + + Regenerate auth token + + + Copied! + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 54 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 164 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 39 + + Copied! + + + Warning: changing the token cannot be undone + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 56 + + Warning: changing the token cannot be undone + + + Connected social accounts + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 62 + + Connected social accounts + + + Set a password before disconnecting social account. + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 66 + + Set a password before disconnecting social account. + + + Disconnect + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 72 + + Disconnect + + + Disconnect social account + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 74 + + Disconnect social account + + + Warning: disconnecting social accounts cannot be undone + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 84 + + Warning: disconnecting social accounts cannot be undone + + + Connect new social account + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 89 + + Connect new social account + + + Scan the QR code with your authenticator app and then enter the code below + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 116 + + Scan the QR code with your authenticator app and then enter the code below + + + Authenticator secret + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 119 + + Authenticator secret + + + You can store this secret and use it to reinstall your authenticator app at a later time. + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 120 + + You can store this secret and use it to reinstall your authenticator app at a later time. + + + Code + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 123 + + Code + + + Recovery codes will not be shown again, make sure to save them. + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 142 + + Recovery codes will not be shown again, make sure to save them. + + + Copy codes + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html + 160 + + Copy codes + + + Emails must match + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 148 + + Emails must match + + + Passwords must match + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 176 + + Passwords must match + + + Profile updated successfully + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 198 + + Profile updated successfully + + + Error saving profile + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 212 + + Error saving profile + + + Error generating auth token + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 230 + + Error generating auth token + + + Error disconnecting social account + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 255 + + Error disconnecting social account + + + Error fetching TOTP settings + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 274 + + Error fetching TOTP settings + + + TOTP activated successfully + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 295 + + TOTP activated successfully + + + Error activating TOTP + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 297 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 303 + + Error activating TOTP + + + TOTP deactivated successfully + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 319 + + TOTP deactivated successfully + + + Error deactivating TOTP + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 321 + + + src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts + 326 + + Error deactivating TOTP + + + No existing links + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 8,10 + + No existing links + + + Share + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 32 + + Share + + + Share archive version + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 48 + + Share archive version + + + Expires + + src/app/components/common/share-links-dialog/share-links-dialog.component.html + 52 + + Expires + + + 1 day + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 25 + + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 102 + + 1 day + + + 7 days + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 26 + + 7 days + + + 30 days + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 27 + + 30 days + + + Never + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 28 + + Never + + + Share Links + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 32 + + + src/app/components/document-detail/document-detail.component.html + 88 + + Share Links + + + Error retrieving links + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 83 + + Error retrieving links + + + days + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 102 + + days + + + Error deleting link + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 131 + + Error deleting link + + + Error creating link + + src/app/components/common/share-links-dialog/share-links-dialog.component.ts + 159 + + Error creating link + + + Environment + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 18 + + Environment + + + Paperless-ngx Version + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 22 + + Paperless-ngx Version + + + Install Type + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 35 + + Install Type + + + Server OS + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 37 + + Server OS + + + Media Storage + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 39 + + Media Storage + + + available + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 42 + + available + + + total + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 42 + + total + + + Database + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 52 + + Database + + + Status + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 58 + + + src/app/components/common/toast/toast.component.html + 28 + + + src/app/components/manage/mail/mail.component.html + 114 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + + + src/app/components/manage/workflows/workflows.component.html + 19 + + Status + + + Migration Status + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 76 + + Migration Status + + + Up to date + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 80 + + Up to date + + + Latest Migration + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 85 + + Latest Migration + + + Pending Migrations + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 87 + + Pending Migrations + + + Tasks Queue + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 105 + + Tasks Queue + + + Redis Status + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 109 + + Redis Status + + + Celery Status + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 127 + + Celery Status + + + Health + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 153 + + Health + + + Search Index + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 157 + + Search Index + + + Run Task + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 177 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 211 + + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 245 + + Run Task + + + Last Updated + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 184 + + Last Updated + + + Classifier + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 189 + + Classifier + + + Last Trained + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 218 + + Last Trained + + + Sanity Checker + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 223 + + Sanity Checker + + + Last Run + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 252 + + Last Run + + + WebSocket Connection + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 257 + + WebSocket Connection + + + OK + + src/app/components/common/system-status-dialog/system-status-dialog.component.html + 261 + + OK + + + Copy Raw Error + + src/app/components/common/toast/toast.component.html + 43 + + Copy Raw Error + + + Hint: saved views can be created from the documents list + + src/app/components/dashboard/dashboard.component.html + 42 + + Hint: saved views can be created from the documents list + + + Hello , welcome to + + src/app/components/dashboard/dashboard.component.ts + 61 + + Hello , welcome to + + + Welcome to + + src/app/components/dashboard/dashboard.component.ts + 63 + + Welcome to + + + Dashboard updated + + src/app/components/dashboard/dashboard.component.ts + 94 + + Dashboard updated + + + Error updating dashboard + + src/app/components/dashboard/dashboard.component.ts + 97 + + Error updating dashboard + + + Show all + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 10 + + Show all + + + Filter by correspondent + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 54 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 25 + + + src/app/components/document-list/document-list.component.html + 323 + + Filter by correspondent + + + Filter by document type + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 64 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 96 + + + src/app/components/document-list/document-list.component.html + 363 + + Filter by document type + + + Filter by storage path + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 69 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 102 + + + src/app/components/document-list/document-list.component.html + 370 + + Filter by storage path + + + Filter by owner + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 74 + + Filter by owner + + + Yes + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 84 + + + src/app/components/document-list/document-list.component.html + 391 + + Yes + + + No + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 84 + + + src/app/components/document-list/document-list.component.html + 391 + + No + + + No documents + + src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html + 149 + + No documents + + + Statistics + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 1 + + Statistics + + + Go to inbox + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 28 + + Go to inbox + + + Documents in inbox + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 29 + + Documents in inbox + + + Go to documents + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 33 + + Go to documents + + + Total documents + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 34 + + Total documents + + + Total characters + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 38 + + Total characters + + + Current ASN + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html + 43 + + Current ASN + + + Other + + src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.ts + 79 + + Other + + + Upload documents + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 6 + + Upload documents + + + or drop files anywhere + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 7 + + or drop files anywhere + + + Dismiss completed + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html + 23 + + This button dismisses all status messages about processed documents on the dashboard (failed and successful) + Dismiss completed + + + Processing: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 57 + + Processing: + + + Failed: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 60 + + Failed: + + + Added: + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 63 + + Added: + + + , + + src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts + 66 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 386 + + this string is used to separate processing, failed and added on the file upload widget + , + + + Paperless-ngx is running! + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 2 + + Paperless-ngx is running! + + + You're ready to start uploading documents! Explore the various features of this web app on your own, or start a quick tour using the button below. + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 3 + + You're ready to start uploading documents! Explore the various features of this web app on your own, or start a quick tour using the button below. + + + More detail on how to use and configure Paperless-ngx is always available in the documentation. + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 4 + + More detail on how to use and configure Paperless-ngx is always available in the documentation. + + + Thanks for being a part of the Paperless-ngx community! + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 7 + + Thanks for being a part of the Paperless-ngx community! + + + Start the tour + + src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html + 8 + + Start the tour + + + Searching document with asn + + src/app/components/document-asn/document-asn.component.html + 1 + + Searching document with asn + + + Page + + src/app/components/document-detail/document-detail.component.html + 5 + + + src/app/components/document-list/document-list.component.html + 27 + + Page + + + of + + src/app/components/document-detail/document-detail.component.html + 7,8 + + of + + + - + + src/app/components/document-detail/document-detail.component.html + 11 + + - + + + + + + src/app/components/document-detail/document-detail.component.html + 19 + + + + + + Download original + + src/app/components/document-detail/document-detail.component.html + 41 + + Download original + + + Reprocess + + src/app/components/document-detail/document-detail.component.html + 54 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 91 + + Reprocess + + + Print + + src/app/components/document-detail/document-detail.component.html + 58 + + Print + + + More like this + + src/app/components/document-detail/document-detail.component.html + 62 + + + src/app/components/document-list/document-card-large/document-card-large.component.html + 69 + + More like this + + + PDF Editor + + src/app/components/document-detail/document-detail.component.html + 66 + + + src/app/components/document-detail/document-detail.component.ts + 1392 + + PDF Editor + + + Send + + src/app/components/document-detail/document-detail.component.html + 84 + + Send + + + Previous + + src/app/components/document-detail/document-detail.component.html + 110 + + Previous + + + Details + + src/app/components/document-detail/document-detail.component.html + 123 + + Details + + + Title + + src/app/components/document-detail/document-detail.component.html + 126 + + + src/app/components/document-list/document-list.component.html + 221 + + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 195 + + + src/app/data/document.ts + 30 + + + src/app/data/document.ts + 90 + + Title + + + Archive serial number + + src/app/components/document-detail/document-detail.component.html + 127 + + Archive serial number + + + Date created + + src/app/components/document-detail/document-detail.component.html + 128 + + Date created + + + Correspondent + + src/app/components/document-detail/document-detail.component.html + 130 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 19 + + + src/app/components/document-list/document-list.component.html + 211 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 50 + + + src/app/data/document.ts + 46 + + + src/app/data/document.ts + 89 + + Correspondent + + + Document type + + src/app/components/document-detail/document-detail.component.html + 132 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 33 + + + src/app/components/document-list/document-list.component.html + 251 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 61 + + + src/app/data/document.ts + 50 + + + src/app/data/document.ts + 91 + + Document type + + + Storage path + + src/app/components/document-detail/document-detail.component.html + 134 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 47 + + + src/app/components/document-list/document-list.component.html + 260 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 72 + + + src/app/data/document.ts + 54 + + Storage path + + + Default + + src/app/components/document-detail/document-detail.component.html + 135 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Default + + + Content + + src/app/components/document-detail/document-detail.component.html + 239 + + Content + + + Metadata + + src/app/components/document-detail/document-detail.component.html + 248 + + + src/app/components/document-detail/metadata-collapse/metadata-collapse.component.ts + 20 + + Metadata + + + Date modified + + src/app/components/document-detail/document-detail.component.html + 255 + + Date modified + + + Date added + + src/app/components/document-detail/document-detail.component.html + 259 + + Date added + + + Media filename + + src/app/components/document-detail/document-detail.component.html + 263 + + Media filename + + + Original filename + + src/app/components/document-detail/document-detail.component.html + 267 + + Original filename + + + Original MD5 checksum + + src/app/components/document-detail/document-detail.component.html + 271 + + Original MD5 checksum + + + Original file size + + src/app/components/document-detail/document-detail.component.html + 275 + + Original file size + + + Original mime type + + src/app/components/document-detail/document-detail.component.html + 279 + + Original mime type + + + Archive MD5 checksum + + src/app/components/document-detail/document-detail.component.html + 284 + + Archive MD5 checksum + + + Archive file size + + src/app/components/document-detail/document-detail.component.html + 290 + + Archive file size + + + Original document metadata + + src/app/components/document-detail/document-detail.component.html + 299 + + Original document metadata + + + Archived document metadata + + src/app/components/document-detail/document-detail.component.html + 302 + + Archived document metadata + + + Notes + + src/app/components/document-detail/document-detail.component.html + 321,324 + + Notes + + + History + + src/app/components/document-detail/document-detail.component.html + 332 + + History + + + Save & next + + src/app/components/document-detail/document-detail.component.html + 369 + + Save & next + + + Save & close + + src/app/components/document-detail/document-detail.component.html + 372 + + Save & close + + + Document loading... + + src/app/components/document-detail/document-detail.component.html + 382 + + Document loading... + + + Enter Password + + src/app/components/document-detail/document-detail.component.html + 436 + + Enter Password + + + An error occurred loading content: + + src/app/components/document-detail/document-detail.component.ts + 416,418 + + An error occurred loading content: + + + Document changes detected + + src/app/components/document-detail/document-detail.component.ts + 450 + + Document changes detected + + + The version of this document in your browser session appears older than the existing version. + + src/app/components/document-detail/document-detail.component.ts + 451 + + The version of this document in your browser session appears older than the existing version. + + + Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document. + + src/app/components/document-detail/document-detail.component.ts + 452 + + Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document. + + + Ok + + src/app/components/document-detail/document-detail.component.ts + 454 + + Ok + + + Next document + + src/app/components/document-detail/document-detail.component.ts + 580 + + Next document + + + Previous document + + src/app/components/document-detail/document-detail.component.ts + 590 + + Previous document + + + Close document + + src/app/components/document-detail/document-detail.component.ts + 598 + + + src/app/services/open-documents.service.ts + 130 + + Close document + + + Save document + + src/app/components/document-detail/document-detail.component.ts + 605 + + Save document + + + Save and close / next + + src/app/components/document-detail/document-detail.component.ts + 614 + + Save and close / next + + + Error retrieving metadata + + src/app/components/document-detail/document-detail.component.ts + 669 + + Error retrieving metadata + + + Error retrieving suggestions. + + src/app/components/document-detail/document-detail.component.ts + 698 + + Error retrieving suggestions. + + + Document "" saved successfully. + + src/app/components/document-detail/document-detail.component.ts + 870 + + + src/app/components/document-detail/document-detail.component.ts + 894 + + Document "" saved successfully. + + + Error saving document "" + + src/app/components/document-detail/document-detail.component.ts + 900 + + Error saving document "" + + + Error saving document + + src/app/components/document-detail/document-detail.component.ts + 950 + + Error saving document + + + Do you really want to move the document "" to the trash? + + src/app/components/document-detail/document-detail.component.ts + 982 + + Do you really want to move the document "" to the trash? + + + Documents can be restored prior to permanent deletion. + + src/app/components/document-detail/document-detail.component.ts + 983 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 754 + + Documents can be restored prior to permanent deletion. + + + Move to trash + + src/app/components/document-detail/document-detail.component.ts + 985 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 756 + + Move to trash + + + Error deleting document + + src/app/components/document-detail/document-detail.component.ts + 1004 + + Error deleting document + + + Reprocess confirm + + src/app/components/document-detail/document-detail.component.ts + 1024 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 794 + + Reprocess confirm + + + This operation will permanently recreate the archive file for this document. + + src/app/components/document-detail/document-detail.component.ts + 1025 + + This operation will permanently recreate the archive file for this document. + + + The archive file will be re-generated with the current settings. + + src/app/components/document-detail/document-detail.component.ts + 1026 + + The archive file will be re-generated with the current settings. + + + Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. + + src/app/components/document-detail/document-detail.component.ts + 1036 + + Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. + + + Error executing operation + + src/app/components/document-detail/document-detail.component.ts + 1047 + + Error executing operation + + + Error downloading document + + src/app/components/document-detail/document-detail.component.ts + 1096 + + Error downloading document + + + Page Fit + + src/app/components/document-detail/document-detail.component.ts + 1173 + + Page Fit + + + PDF edit operation for "" will begin in the background. + + src/app/components/document-detail/document-detail.component.ts + 1411 + + PDF edit operation for "" will begin in the background. + + + Error executing PDF edit operation + + src/app/components/document-detail/document-detail.component.ts + 1423 + + Error executing PDF edit operation + + + Print failed. + + src/app/components/document-detail/document-detail.component.ts + 1460 + + Print failed. + + + Error loading document for printing. + + src/app/components/document-detail/document-detail.component.ts + 1472 + + Error loading document for printing. + + + An error occurred loading tiff: + + src/app/components/document-detail/document-detail.component.ts + 1537 + + + src/app/components/document-detail/document-detail.component.ts + 1541 + + An error occurred loading tiff: + + + No entries found. + + src/app/components/document-history/document-history.component.html + 10 + + No entries found. + + + Edit: + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 3 + + Edit: + + + Filter tags + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 6 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 40 + + Filter tags + + + Filter correspondents + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 20 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 51 + + Filter correspondents + + + Filter document types + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 34 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 62 + + Filter document types + + + Filter storage paths + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 48 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 73 + + Filter storage paths + + + Custom fields + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 61 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 84 + + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 203 + + Custom fields + + + Filter custom fields + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 62 + + Filter custom fields + + + Set values + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 70 + + Set values + + + Rotate + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 94 + + Rotate + + + Merge + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 97 + + Merge + + + Include: + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 123 + + Include: + + + Archived files + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 127 + + Archived files + + + Original files + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 131 + + Original files + + + Use formatted filename + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 136 + + Use formatted filename + + + Error executing bulk operation + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 290 + + Error executing bulk operation + + + "" + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 378 + + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 384 + + "" + + + "" and "" + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 380 + + This is for messages like 'modify "tag1" and "tag2"' + "" and "" + + + and "" + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 388,390 + + this is for messages like 'modify "tag1", "tag2" and "tag3"' + and "" + + + Confirm tags assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 405 + + Confirm tags assignment + + + This operation will add the tag "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 411 + + This operation will add the tag "" to selected document(s). + + + This operation will add the tags to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 416,418 + + This operation will add the tags to selected document(s). + + + This operation will remove the tag "" from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 424 + + This operation will remove the tag "" from selected document(s). + + + This operation will remove the tags from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 429,431 + + This operation will remove the tags from selected document(s). + + + This operation will add the tags and remove the tags on selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 433,437 + + This operation will add the tags and remove the tags on selected document(s). + + + Confirm correspondent assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 474 + + Confirm correspondent assignment + + + This operation will assign the correspondent "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 476 + + This operation will assign the correspondent "" to selected document(s). + + + This operation will remove the correspondent from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 478 + + This operation will remove the correspondent from selected document(s). + + + Confirm document type assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 512 + + Confirm document type assignment + + + This operation will assign the document type "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 514 + + This operation will assign the document type "" to selected document(s). + + + This operation will remove the document type from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 516 + + This operation will remove the document type from selected document(s). + + + Confirm storage path assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 550 + + Confirm storage path assignment + + + This operation will assign the storage path "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 552 + + This operation will assign the storage path "" to selected document(s). + + + This operation will remove the storage path from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 554 + + This operation will remove the storage path from selected document(s). + + + Confirm custom field assignment + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 583 + + Confirm custom field assignment + + + This operation will assign the custom field "" to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 589 + + This operation will assign the custom field "" to selected document(s). + + + This operation will assign the custom fields to selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 594,596 + + This operation will assign the custom fields to selected document(s). + + + This operation will remove the custom field "" from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 602 + + This operation will remove the custom field "" from selected document(s). + + + This operation will remove the custom fields from selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 607,609 + + This operation will remove the custom fields from selected document(s). + + + This operation will assign the custom fields and remove the custom fields on selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 611,615 + + This operation will assign the custom fields and remove the custom fields on selected document(s). + + + Move selected document(s) to the trash? + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 753 + + Move selected document(s) to the trash? + + + This operation will permanently recreate the archive files for selected document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 795 + + This operation will permanently recreate the archive files for selected document(s). + + + The archive files will be re-generated with the current settings. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 796 + + The archive files will be re-generated with the current settings. + + + Rotate confirm + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 828 + + Rotate confirm + + + This operation will permanently rotate the original version of document(s). + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 829 + + This operation will permanently rotate the original version of document(s). + + + Merge confirm + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 848 + + Merge confirm + + + This operation will merge selected documents into a new document. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 849 + + This operation will merge selected documents into a new document. + + + Merged document will be queued for consumption. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 868 + + Merged document will be queued for consumption. + + + Custom fields updated. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 892 + + Custom fields updated. + + + Error updating custom fields. + + src/app/components/document-list/bulk-editor/bulk-editor.component.ts + 901 + + Error updating custom fields. + + + {VAR_PLURAL, plural, =1 {Set custom fields for 1 document} other {Set custom fields for documents}} + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 3,7 + + {VAR_PLURAL, plural, =1 {Set custom fields for 1 document} other {Set custom fields for documents}} + + + Select custom fields + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 13 + + Select custom fields + + + {VAR_PLURAL, plural, =1 {This operation will also remove 1 custom field from the selected documents.} other {This operation will also + remove custom fields from the selected documents.}} + + src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html + 73,78 + + {VAR_PLURAL, plural, =1 {This operation will also remove 1 custom field from the selected documents.} other {This operation will also + remove custom fields from the selected documents.}} + + + Filter by tag + + src/app/components/document-list/document-card-large/document-card-large.component.html + 36 + + + src/app/components/document-list/document-list.component.html + 339 + + Filter by tag + + + View notes + + src/app/components/document-list/document-card-large/document-card-large.component.html + 91 + + View notes + + + Created: + + src/app/components/document-list/document-card-large/document-card-large.component.html + 115,116 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 76,77 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 91,92 + + Created: + + + Added: + + src/app/components/document-list/document-card-large/document-card-large.component.html + 116,117 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 77,78 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 92,93 + + Added: + + + Modified: + + src/app/components/document-list/document-card-large/document-card-large.component.html + 117,118 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 78,79 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 93,94 + + Modified: + + + {VAR_PLURAL, plural, =1 {1 page} other { pages}} + + src/app/components/document-list/document-card-large/document-card-large.component.html + 134 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 106 + + {VAR_PLURAL, plural, =1 {1 page} other { pages}} + + + Shared + + src/app/components/document-list/document-card-large/document-card-large.component.html + 144 + + + src/app/components/document-list/document-card-small/document-card-small.component.html + 125 + + + src/app/data/document.ts + 66 + + + src/app/pipes/username.pipe.ts + 35 + + Shared + + + Score: + + src/app/components/document-list/document-card-large/document-card-large.component.html + 149 + + Score: + + + Toggle tag filter + + src/app/components/document-list/document-card-small/document-card-small.component.html + 20 + + Toggle tag filter + + + Toggle correspondent filter + + src/app/components/document-list/document-card-small/document-card-small.component.html + 43 + + Toggle correspondent filter + + + Toggle document type filter + + src/app/components/document-list/document-card-small/document-card-small.component.html + 59 + + Toggle document type filter + + + Toggle storage path filter + + src/app/components/document-list/document-card-small/document-card-small.component.html + 66 + + Toggle storage path filter + + + Select + + src/app/components/document-list/document-list.component.html + 5 + + + src/app/data/custom-field.ts + 51 + + Select + + + Select none + + src/app/components/document-list/document-list.component.html + 11 + + Select none + + + Select page + + src/app/components/document-list/document-list.component.html + 12 + + + src/app/components/document-list/document-list.component.ts + 315 + + Select page + + + Select all + + src/app/components/document-list/document-list.component.html + 13 + + + src/app/components/document-list/document-list.component.ts + 308 + + Select all + + + Select: + + src/app/components/document-list/document-list.component.html + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 + + + src/app/components/manage/management-list/management-list.component.ts + 124 + + + src/app/data/matching-model.ts + 45 + + None + + + Sort + + src/app/components/document-list/document-list.component.html + 68 + + Sort + + + Views + + src/app/components/document-list/document-list.component.html + 94 + + Views + + + Save "" + + src/app/components/document-list/document-list.component.html + 113 + + Save "" + + + Save as... + + src/app/components/document-list/document-list.component.html + 116 + + Save as... + + + All saved views + + src/app/components/document-list/document-list.component.html + 117 + + All saved views + + + {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} + + src/app/components/document-list/document-list.component.html + 137 + + {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} + + + {VAR_PLURAL, plural, =1 {One document} other { documents}} + + src/app/components/document-list/document-list.component.html + 141 + + {VAR_PLURAL, plural, =1 {One document} other { documents}} + + + (filtered) + + src/app/components/document-list/document-list.component.html + 143 + + (filtered) + + + Reset filters + + src/app/components/document-list/document-list.component.html + 148 + + + src/app/components/document-list/filter-editor/filter-editor.component.html + 107 + + Reset filters + + + Error while loading documents + + src/app/components/document-list/document-list.component.html + 169 + + Error while loading documents + + + Sort by ASN + + src/app/components/document-list/document-list.component.html + 198 + + Sort by ASN + + + ASN + + src/app/components/document-list/document-list.component.html + 202 + + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 200 + + + src/app/data/document.ts + 70 + + + src/app/data/document.ts + 88 + + ASN + + + Sort by correspondent + + src/app/components/document-list/document-list.component.html + 207 + + Sort by correspondent + + + Sort by title + + src/app/components/document-list/document-list.component.html + 216 + + Sort by title + + + Sort by owner + + src/app/components/document-list/document-list.component.html + 229 + + Sort by owner + + + Owner + + src/app/components/document-list/document-list.component.html + 233 + + + src/app/data/document.ts + 62 + + + src/app/data/document.ts + 96 + + Owner + + + Sort by notes + + src/app/components/document-list/document-list.component.html + 238 + + Sort by notes + + + Sort by document type + + src/app/components/document-list/document-list.component.html + 247 + + Sort by document type + + + Sort by storage path + + src/app/components/document-list/document-list.component.html + 256 + + Sort by storage path + + + Sort by created date + + src/app/components/document-list/document-list.component.html + 265 + + Sort by created date + + + Sort by added date + + src/app/components/document-list/document-list.component.html + 274 + + Sort by added date + + + Sort by number of pages + + src/app/components/document-list/document-list.component.html + 283 + + Sort by number of pages + + + Pages + + src/app/components/document-list/document-list.component.html + 287 + + + src/app/data/document.ts + 74 + + + src/app/data/document.ts + 97 + + + src/app/data/paperless-config.ts + 91 + + Pages + + + Shared + + src/app/components/document-list/document-list.component.html + 290,292 + + Shared + + + Sort by + + src/app/components/document-list/document-list.component.html + 297,298 + + Sort by + + + Edit document + + src/app/components/document-list/document-list.component.html + 331 + + Edit document + + + Preview document + + src/app/components/document-list/document-list.component.html + 332 + + Preview document + + + Reset filters / selection + + src/app/components/document-list/document-list.component.ts + 296 + + Reset filters / selection + + + Open first [selected] document + + src/app/components/document-list/document-list.component.ts + 324 + + Open first [selected] document + + + Previous page + + src/app/components/document-list/document-list.component.ts + 340 + + Previous page + + + Next page + + src/app/components/document-list/document-list.component.ts + 352 + + Next page + + + View "" saved successfully. + + src/app/components/document-list/document-list.component.ts + 385 + + View "" saved successfully. + + + Failed to save view "". + + src/app/components/document-list/document-list.component.ts + 391 + + Failed to save view "". + + + View "" created successfully. + + src/app/components/document-list/document-list.component.ts + 437 + + View "" created successfully. + + + Dates + + src/app/components/document-list/filter-editor/filter-editor.component.html + 90 + + Dates + + + Title & content + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 198 + + Title & content + + + File type + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 205 + + File type + + + More like + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 214 + + More like + + + equals + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 220 + + equals + + + is empty + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 224 + + is empty + + + is not empty + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 228 + + is not empty + + + greater than + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 232 + + greater than + + + less than + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 236 + + less than + + + Correspondent: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 277,281 + + Correspondent: + + + Without correspondent + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 283 + + Without correspondent + + + Document type: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 289,293 + + Document type: + + + Without document type + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 295 + + Without document type + + + Storage path: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 301,305 + + Storage path: + + + Without storage path + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 307 + + Without storage path + + + Tag: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 311,313 + + Tag: + + + Without any tag + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 317 + + Without any tag + + + Custom fields query + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 321 + + Custom fields query + + + Title: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 324 + + Title: + + + ASN: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 327 + + ASN: + + + Owner: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 330 + + Owner: + + + Owner not in: + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 333 + + Owner not in: + + + Without an owner + + src/app/components/document-list/filter-editor/filter-editor.component.ts + 336 + + Without an owner + + + Save current view + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 3 + + Save current view + + + Show in sidebar + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 9 + + + src/app/components/manage/saved-views/saved-views.component.html + 24 + + Show in sidebar + + + Show on dashboard + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 10 + + + src/app/components/manage/saved-views/saved-views.component.html + 20 + + Show on dashboard + + + Filter rules error occurred while saving this view + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 13 + + Filter rules error occurred while saving this view + + + The error returned was + + src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html + 14 + + The error returned was + + + Enter note + + src/app/components/document-notes/document-notes.component.html + 5 + + Enter note + + + Please enter a note. + + src/app/components/document-notes/document-notes.component.html + 6,8 + + Please enter a note. + + + Add note + + src/app/components/document-notes/document-notes.component.html + 14 + + Add note + + + Delete note + + src/app/components/document-notes/document-notes.component.html + 25 + + + src/app/components/document-notes/document-notes.component.html + 27 + + Delete note + + + Error saving note + + src/app/components/document-notes/document-notes.component.ts + 81 + + Error saving note + + + Error deleting note + + src/app/components/document-notes/document-notes.component.ts + 95 + + Error deleting note + + + Drop files to begin upload + + src/app/components/file-drop/file-drop.component.html + 6 + + Drop files to begin upload + + + Initiating upload... + + src/app/components/file-drop/file-drop.component.ts + 137 + + + src/app/components/file-drop/file-drop.component.ts + 146 + + Initiating upload... + + + Failed to read dropped items: + + src/app/components/file-drop/file-drop.component.ts + 142 + + Failed to read dropped items: + + + correspondent + + src/app/components/manage/correspondent-list/correspondent-list.component.ts + 47 + + correspondent + + + correspondents + + src/app/components/manage/correspondent-list/correspondent-list.component.ts + 48 + + correspondents + + + Last used + + src/app/components/manage/correspondent-list/correspondent-list.component.ts + 53 + + Last used + + + Do you really want to delete the correspondent ""? + + src/app/components/manage/correspondent-list/correspondent-list.component.ts + 78 + + Do you really want to delete the correspondent ""? + + + Customize the data fields that can be attached to documents. + + src/app/components/manage/custom-fields/custom-fields.component.html + 4 + + Customize the data fields that can be attached to documents. + + + Add Field + + src/app/components/manage/custom-fields/custom-fields.component.html + 9 + + Add Field + + + Data Type + + src/app/components/manage/custom-fields/custom-fields.component.html + 18 + + Data Type + + + Filter Documents () + + src/app/components/manage/custom-fields/custom-fields.component.html + 45 + + + src/app/components/manage/management-list/management-list.component.html + 123 + + + src/app/components/manage/management-list/management-list.component.html + 123 + + + src/app/components/manage/management-list/management-list.component.html + 123 + + + src/app/components/manage/management-list/management-list.component.html + 123 + + Filter Documents () + + + No fields defined. + + src/app/components/manage/custom-fields/custom-fields.component.html + 70 + + No fields defined. + + + Confirm delete field + + src/app/components/manage/custom-fields/custom-fields.component.ts + 102 + + Confirm delete field + + + This operation will permanently delete this field. + + src/app/components/manage/custom-fields/custom-fields.component.ts + 103 + + This operation will permanently delete this field. + + + Deleted field "" + + src/app/components/manage/custom-fields/custom-fields.component.ts + 112 + + Deleted field "" + + + Error deleting field "". + + src/app/components/manage/custom-fields/custom-fields.component.ts + 121 + + Error deleting field "". + + + document type + + src/app/components/manage/document-type-list/document-type-list.component.ts + 43 + + document type + + + document types + + src/app/components/manage/document-type-list/document-type-list.component.ts + 44 + + document types + + + Do you really want to delete the document type ""? + + src/app/components/manage/document-type-list/document-type-list.component.ts + 49 + + Do you really want to delete the document type ""? + + + Mail Settings + + src/app/components/manage/mail/mail.component.html + 2 + + Mail Settings + + + Mail accounts + + src/app/components/manage/mail/mail.component.html + 12 + + Mail accounts + + + Add Account + + src/app/components/manage/mail/mail.component.html + 14 + + Add Account + + + Connect Gmail Account + + src/app/components/manage/mail/mail.component.html + 18 + + Connect Gmail Account + + + Connect Outlook Account + + src/app/components/manage/mail/mail.component.html + 23 + + Connect Outlook Account + + + Server + + src/app/components/manage/mail/mail.component.html + 31 + + Server + + + Process Mail + + src/app/components/manage/mail/mail.component.html + 68 + + + src/app/components/manage/mail/mail.component.html + 86 + + Process Mail + + + No mail accounts defined. + + src/app/components/manage/mail/mail.component.html + 95 + + No mail accounts defined. + + + Mail rules + + src/app/components/manage/mail/mail.component.html + 103 + + Mail rules + + + Add Rule + + src/app/components/manage/mail/mail.component.html + 105 + + Add Rule + + + Sort Order + + src/app/components/manage/mail/mail.component.html + 112 + + Sort Order + + + Disabled + + src/app/components/manage/mail/mail.component.html + 137 + + + src/app/components/manage/workflows/workflows.component.html + 41 + + Disabled + + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + + + No mail rules defined. + + src/app/components/manage/mail/mail.component.html + 183 + + No mail rules defined. + + + Error retrieving mail accounts + + src/app/components/manage/mail/mail.component.ts + 105 + + Error retrieving mail accounts + + + Error retrieving mail rules + + src/app/components/manage/mail/mail.component.ts + 127 + + Error retrieving mail rules + + + OAuth2 authentication success + + src/app/components/manage/mail/mail.component.ts + 135 + + OAuth2 authentication success + + + OAuth2 authentication failed, see logs for details + + src/app/components/manage/mail/mail.component.ts + 146 + + OAuth2 authentication failed, see logs for details + + + Saved account "". + + src/app/components/manage/mail/mail.component.ts + 170 + + Saved account "". + + + Error saving account. + + src/app/components/manage/mail/mail.component.ts + 182 + + Error saving account. + + + Confirm delete mail account + + src/app/components/manage/mail/mail.component.ts + 190 + + Confirm delete mail account + + + This operation will permanently delete this mail account. + + src/app/components/manage/mail/mail.component.ts + 191 + + This operation will permanently delete this mail account. + + + Deleted mail account "" + + src/app/components/manage/mail/mail.component.ts + 201 + + Deleted mail account "" + + + Error deleting mail account "". + + src/app/components/manage/mail/mail.component.ts + 212 + + Error deleting mail account "". + + + Processing mail account "" + + src/app/components/manage/mail/mail.component.ts + 224 + + Processing mail account "" + + + Error processing mail account "" + + src/app/components/manage/mail/mail.component.ts + 229 + + Error processing mail account "" + + + Saved rule "". + + src/app/components/manage/mail/mail.component.ts + 247 + + Saved rule "". + + + Error saving rule. + + src/app/components/manage/mail/mail.component.ts + 258 + + Error saving rule. + + + Rule "" enabled. + + src/app/components/manage/mail/mail.component.ts + 274 + + Rule "" enabled. + + + Rule "" disabled. + + src/app/components/manage/mail/mail.component.ts + 275 + + Rule "" disabled. + + + Error toggling rule "". + + src/app/components/manage/mail/mail.component.ts + 280 + + Error toggling rule "". + + + Confirm delete mail rule + + src/app/components/manage/mail/mail.component.ts + 291 + + Confirm delete mail rule + + + This operation will permanently delete this mail rule. + + src/app/components/manage/mail/mail.component.ts + 292 + + This operation will permanently delete this mail rule. + + + Deleted mail rule "" + + src/app/components/manage/mail/mail.component.ts + 302 + + Deleted mail rule "" + + + Error deleting mail rule "". + + src/app/components/manage/mail/mail.component.ts + 313 + + Error deleting mail rule "". + + + Permissions updated + + src/app/components/manage/mail/mail.component.ts + 337 + + Permissions updated + + + Error updating permissions + + src/app/components/manage/mail/mail.component.ts + 342 + + + src/app/components/manage/management-list/management-list.component.ts + 353 + + Error updating permissions + + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + + + Filter by: + + src/app/components/manage/management-list/management-list.component.html + 20 + + + src/app/components/manage/management-list/management-list.component.html + 20 + + + src/app/components/manage/management-list/management-list.component.html + 20 + + + src/app/components/manage/management-list/management-list.component.html + 20 + + Filter by: + + + Matching + + src/app/components/manage/management-list/management-list.component.html + 39 + + + src/app/components/manage/management-list/management-list.component.html + 39 + + + src/app/components/manage/management-list/management-list.component.html + 39 + + + src/app/components/manage/management-list/management-list.component.html + 39 + + Matching + + + Document count + + src/app/components/manage/management-list/management-list.component.html + 40 + + + src/app/components/manage/management-list/management-list.component.html + 40 + + + src/app/components/manage/management-list/management-list.component.html + 40 + + + src/app/components/manage/management-list/management-list.component.html + 40 + + Document count + + + {VAR_PLURAL, plural, =1 {One } other { total }} + + src/app/components/manage/management-list/management-list.component.html + 67 + + + src/app/components/manage/management-list/management-list.component.html + 67 + + + src/app/components/manage/management-list/management-list.component.html + 67 + + + src/app/components/manage/management-list/management-list.component.html + 67 + + {VAR_PLURAL, plural, =1 {One } other { total }} + + + Automatic + + src/app/components/manage/management-list/management-list.component.ts + 122 + + + src/app/data/matching-model.ts + 15 + + Automatic + + + Successfully created . + + src/app/components/manage/management-list/management-list.component.ts + 200 + + Successfully created . + + + Error occurred while creating . + + src/app/components/manage/management-list/management-list.component.ts + 205 + + Error occurred while creating . + + + Successfully updated "". + + src/app/components/manage/management-list/management-list.component.ts + 220 + + Successfully updated "". + + + Error occurred while saving . + + src/app/components/manage/management-list/management-list.component.ts + 225 + + Error occurred while saving . + + + Associated documents will not be deleted. + + src/app/components/manage/management-list/management-list.component.ts + 245 + + Associated documents will not be deleted. + + + Error while deleting element + + src/app/components/manage/management-list/management-list.component.ts + 261 + + Error while deleting element + + + Permissions updated successfully + + src/app/components/manage/management-list/management-list.component.ts + 346 + + Permissions updated successfully + + + This operation will permanently delete all objects. + + src/app/components/manage/management-list/management-list.component.ts + 367 + + This operation will permanently delete all objects. + + + Objects deleted successfully + + src/app/components/manage/management-list/management-list.component.ts + 381 + + Objects deleted successfully + + + Error deleting objects + + src/app/components/manage/management-list/management-list.component.ts + 387 + + Error deleting objects + + + Customize the views of your documents. + + src/app/components/manage/saved-views/saved-views.component.html + 4 + + Customize the views of your documents. + + + Documents page size + + src/app/components/manage/saved-views/saved-views.component.html + 41 + + Documents page size + + + Display as + + src/app/components/manage/saved-views/saved-views.component.html + 44 + + Display as + + + Table + + src/app/components/manage/saved-views/saved-views.component.html + 46 + + Table + + + Small Cards + + src/app/components/manage/saved-views/saved-views.component.html + 47 + + Small Cards + + + Large Cards + + src/app/components/manage/saved-views/saved-views.component.html + 48 + + Large Cards + + + No saved views defined. + + src/app/components/manage/saved-views/saved-views.component.html + 61 + + No saved views defined. + + + Saved view "" deleted. + + src/app/components/manage/saved-views/saved-views.component.ts + 133 + + Saved view "" deleted. + + + Views saved successfully. + + src/app/components/manage/saved-views/saved-views.component.ts + 158 + + Views saved successfully. + + + Error while saving views. + + src/app/components/manage/saved-views/saved-views.component.ts + 163 + + Error while saving views. + + + storage path + + src/app/components/manage/storage-path-list/storage-path-list.component.ts + 43 + + storage path + + + storage paths + + src/app/components/manage/storage-path-list/storage-path-list.component.ts + 44 + + storage paths + + + Do you really want to delete the storage path ""? + + src/app/components/manage/storage-path-list/storage-path-list.component.ts + 60 + + Do you really want to delete the storage path ""? + + + tag + + src/app/components/manage/tag-list/tag-list.component.ts + 43 + + tag + + + tags + + src/app/components/manage/tag-list/tag-list.component.ts + 44 + + tags + + + Do you really want to delete the tag ""? + + src/app/components/manage/tag-list/tag-list.component.ts + 60 + + Do you really want to delete the tag ""? + + + Use workflows to customize the behavior of Paperless-ngx when events 'trigger' a workflow. + + src/app/components/manage/workflows/workflows.component.html + 4 + + Use workflows to customize the behavior of Paperless-ngx when events 'trigger' a workflow. + + + Add Workflow + + src/app/components/manage/workflows/workflows.component.html + 9 + + Add Workflow + + + No workflows defined. + + src/app/components/manage/workflows/workflows.component.html + 80 + + No workflows defined. + + + Saved workflow "". + + src/app/components/manage/workflows/workflows.component.ts + 90 + + Saved workflow "". + + + Error saving workflow. + + src/app/components/manage/workflows/workflows.component.ts + 98 + + Error saving workflow. + + + Confirm delete workflow + + src/app/components/manage/workflows/workflows.component.ts + 131 + + Confirm delete workflow + + + This operation will permanently delete this workflow. + + src/app/components/manage/workflows/workflows.component.ts + 132 + + This operation will permanently delete this workflow. + + + Deleted workflow "". + + src/app/components/manage/workflows/workflows.component.ts + 142 + + Deleted workflow "". + + + Error deleting workflow "". + + src/app/components/manage/workflows/workflows.component.ts + 149 + + Error deleting workflow "". + + + Enabled workflow "" + + src/app/components/manage/workflows/workflows.component.ts + 162 + + Enabled workflow "" + + + Disabled workflow "" + + src/app/components/manage/workflows/workflows.component.ts + 163 + + Disabled workflow "" + + + Error toggling workflow "". + + src/app/components/manage/workflows/workflows.component.ts + 170 + + Error toggling workflow "". + + + Not Found + + src/app/components/not-found/not-found.component.html + 6 + + Not Found + + + Go to Dashboard + + src/app/components/not-found/not-found.component.html + 9 + + Go to Dashboard + + + Equal to + + src/app/data/custom-field-query.ts + 24 + + Equal to + + + In + + src/app/data/custom-field-query.ts + 25 + + In + + + Is null + + src/app/data/custom-field-query.ts + 26 + + Is null + + + Exists + + src/app/data/custom-field-query.ts + 27 + + Exists + + + Contains + + src/app/data/custom-field-query.ts + 28 + + Contains + + + Contains (case-insensitive) + + src/app/data/custom-field-query.ts + 29 + + Contains (case-insensitive) + + + Greater than + + src/app/data/custom-field-query.ts + 30 + + Greater than + + + Greater than or equal to + + src/app/data/custom-field-query.ts + 31 + + Greater than or equal to + + + Less than + + src/app/data/custom-field-query.ts + 32 + + Less than + + + Less than or equal to + + src/app/data/custom-field-query.ts + 33 + + Less than or equal to + + + Range + + src/app/data/custom-field-query.ts + 34 + + Range + + + Boolean + + src/app/data/custom-field.ts + 19 + + Boolean + + + Date + + src/app/data/custom-field.ts + 23 + + Date + + + Integer + + src/app/data/custom-field.ts + 27 + + Integer + + + Number + + src/app/data/custom-field.ts + 31 + + Number + + + Monetary + + src/app/data/custom-field.ts + 35 + + Monetary + + + Text + + src/app/data/custom-field.ts + 39 + + Text + + + Url + + src/app/data/custom-field.ts + 43 + + Url + + + Document Link + + src/app/data/custom-field.ts + 47 + + Document Link + + + Long Text + + src/app/data/custom-field.ts + 55 + + Long Text + + + Search score + + src/app/data/document.ts + 103 + + Score is a value returned by the full text search engine and specifies how well a result matches the given query + Search score + + + Auto: Learn matching automatically + + src/app/data/matching-model.ts + 16 + + Auto: Learn matching automatically + + + Any word + + src/app/data/matching-model.ts + 20 + + Any word + + + Any: Document contains any of these words (space separated) + + src/app/data/matching-model.ts + 21 + + Any: Document contains any of these words (space separated) + + + All words + + src/app/data/matching-model.ts + 25 + + All words + + + All: Document contains all of these words (space separated) + + src/app/data/matching-model.ts + 26 + + All: Document contains all of these words (space separated) + + + Exact match + + src/app/data/matching-model.ts + 30 + + Exact match + + + Exact: Document contains this string + + src/app/data/matching-model.ts + 31 + + Exact: Document contains this string + + + Regular expression + + src/app/data/matching-model.ts + 35 + + Regular expression + + + Regular expression: Document matches this regular expression + + src/app/data/matching-model.ts + 36 + + Regular expression: Document matches this regular expression + + + Fuzzy word + + src/app/data/matching-model.ts + 40 + + Fuzzy word + + + Fuzzy: Document contains a word similar to this word + + src/app/data/matching-model.ts + 41 + + Fuzzy: Document contains a word similar to this word + + + None: Disable matching + + src/app/data/matching-model.ts + 46 + + None: Disable matching + + + General Settings + + src/app/data/paperless-config.ts + 50 + + General Settings + + + OCR Settings + + src/app/data/paperless-config.ts + 51 + + OCR Settings + + + Barcode Settings + + src/app/data/paperless-config.ts + 52 + + Barcode Settings + + + Output Type + + src/app/data/paperless-config.ts + 76 + + Output Type + + + Language + + src/app/data/paperless-config.ts + 84 + + Language + + + Mode + + src/app/data/paperless-config.ts + 98 + + Mode + + + Skip Archive File + + src/app/data/paperless-config.ts + 106 + + Skip Archive File + + + Image DPI + + src/app/data/paperless-config.ts + 114 + + Image DPI + + + Clean + + src/app/data/paperless-config.ts + 121 + + Clean + + + Deskew + + src/app/data/paperless-config.ts + 129 + + Deskew + + + Rotate Pages + + src/app/data/paperless-config.ts + 136 + + Rotate Pages + + + Rotate Pages Threshold + + src/app/data/paperless-config.ts + 143 + + Rotate Pages Threshold + + + Max Image Pixels + + src/app/data/paperless-config.ts + 150 + + Max Image Pixels + + + Color Conversion Strategy + + src/app/data/paperless-config.ts + 157 + + Color Conversion Strategy + + + OCR Arguments + + src/app/data/paperless-config.ts + 165 + + OCR Arguments + + + Application Logo + + src/app/data/paperless-config.ts + 172 + + Application Logo + + + Application Title + + src/app/data/paperless-config.ts + 179 + + Application Title + + + Enable Barcodes + + src/app/data/paperless-config.ts + 186 + + Enable Barcodes + + + Enable TIFF Support + + src/app/data/paperless-config.ts + 193 + + Enable TIFF Support + + + Barcode String + + src/app/data/paperless-config.ts + 200 + + Barcode String + + + Retain Split Pages + + src/app/data/paperless-config.ts + 207 + + Retain Split Pages + + + Enable ASN + + src/app/data/paperless-config.ts + 214 + + Enable ASN + + + ASN Prefix + + src/app/data/paperless-config.ts + 221 + + ASN Prefix + + + Upscale + + src/app/data/paperless-config.ts + 228 + + Upscale + + + DPI + + src/app/data/paperless-config.ts + 235 + + DPI + + + Max Pages + + src/app/data/paperless-config.ts + 242 + + Max Pages + + + Enable Tag Detection + + src/app/data/paperless-config.ts + 249 + + Enable Tag Detection + + + Tag Mapping + + src/app/data/paperless-config.ts + 256 + + Tag Mapping + + + Warning: You have unsaved changes to your document(s). + + src/app/guards/dirty-doc.guard.ts + 16 + + Warning: You have unsaved changes to your document(s). + + + Unsaved Changes + + src/app/guards/dirty-form.guard.ts + 15 + + + src/app/guards/dirty-saved-view.guard.ts + 27 + + + src/app/services/open-documents.service.ts + 122 + + + src/app/services/open-documents.service.ts + 149 + + Unsaved Changes + + + You have unsaved changes. + + src/app/guards/dirty-form.guard.ts + 16 + + + src/app/services/open-documents.service.ts + 150 + + You have unsaved changes. + + + Are you sure you want to leave? + + src/app/guards/dirty-form.guard.ts + 17 + + Are you sure you want to leave? + + + Leave page + + src/app/guards/dirty-form.guard.ts + 19 + + Leave page + + + You have unsaved changes to the saved view + + src/app/guards/dirty-saved-view.guard.ts + 29 + + You have unsaved changes to the saved view + + + Are you sure you want to close this saved view? + + src/app/guards/dirty-saved-view.guard.ts + 33 + + Are you sure you want to close this saved view? + + + Save and close + + src/app/guards/dirty-saved-view.guard.ts + 37 + + Save and close + + + You don't have permissions to do that + + src/app/guards/permissions.guard.ts + 34 + + You don't have permissions to do that + + + Last year + + src/app/pipes/custom-date.pipe.ts + 14 + + Last year + + + %s years ago + + src/app/pipes/custom-date.pipe.ts + 15 + + %s years ago + + + Last month + + src/app/pipes/custom-date.pipe.ts + 19 + + Last month + + + %s months ago + + src/app/pipes/custom-date.pipe.ts + 20 + + %s months ago + + + Last week + + src/app/pipes/custom-date.pipe.ts + 24 + + Last week + + + %s weeks ago + + src/app/pipes/custom-date.pipe.ts + 25 + + %s weeks ago + + + %s days ago + + src/app/pipes/custom-date.pipe.ts + 30 + + %s days ago + + + %s hour ago + + src/app/pipes/custom-date.pipe.ts + 34 + + %s hour ago + + + %s hours ago + + src/app/pipes/custom-date.pipe.ts + 35 + + %s hours ago + + + %s minute ago + + src/app/pipes/custom-date.pipe.ts + 39 + + %s minute ago + + + %s minutes ago + + src/app/pipes/custom-date.pipe.ts + 40 + + %s minutes ago + + + Just now + + src/app/pipes/custom-date.pipe.ts + 73 + + Just now + + + (no title) + + src/app/pipes/document-title.pipe.ts + 11 + + (no title) + + + You have unsaved changes to the document + + src/app/services/open-documents.service.ts + 124 + + You have unsaved changes to the document + + + Are you sure you want to close this document? + + src/app/services/open-documents.service.ts + 128 + + Are you sure you want to close this document? + + + Are you sure you want to close all documents? + + src/app/services/open-documents.service.ts + 151 + + Are you sure you want to close all documents? + + + Close documents + + src/app/services/open-documents.service.ts + 153 + + Close documents + + + English (US) + + src/app/services/settings.service.ts + 51 + + English (US) + + + Afrikaans + + src/app/services/settings.service.ts + 57 + + Afrikaans + + + Arabic + + src/app/services/settings.service.ts + 63 + + Arabic + + + Belarusian + + src/app/services/settings.service.ts + 69 + + Belarusian + + + Bulgarian + + src/app/services/settings.service.ts + 75 + + Bulgarian + + + Catalan + + src/app/services/settings.service.ts + 81 + + Catalan + + + Czech + + src/app/services/settings.service.ts + 87 + + Czech + + + Danish + + src/app/services/settings.service.ts + 93 + + Danish + + + German + + src/app/services/settings.service.ts + 99 + + German + + + Greek + + src/app/services/settings.service.ts + 105 + + Greek + + + English (GB) + + src/app/services/settings.service.ts + 111 + + English (GB) + + + Spanish + + src/app/services/settings.service.ts + 117 + + Spanish + + + Finnish + + src/app/services/settings.service.ts + 123 + + Finnish + + + French + + src/app/services/settings.service.ts + 129 + + French + + + Hungarian + + src/app/services/settings.service.ts + 135 + + Hungarian + + + Italian + + src/app/services/settings.service.ts + 141 + + Italian + + + Japanese + + src/app/services/settings.service.ts + 147 + + Japanese + + + Korean + + src/app/services/settings.service.ts + 153 + + Korean + + + Luxembourgish + + src/app/services/settings.service.ts + 159 + + Luxembourgish + + + Dutch + + src/app/services/settings.service.ts + 165 + + Dutch + + + Norwegian + + src/app/services/settings.service.ts + 171 + + Norwegian + + + Persian + + src/app/services/settings.service.ts + 177 + + Persian + + + Polish + + src/app/services/settings.service.ts + 183 + + Polish + + + Portuguese (Brazil) + + src/app/services/settings.service.ts + 189 + + Portuguese (Brazil) + + + Portuguese + + src/app/services/settings.service.ts + 195 + + Portuguese + + + Romanian + + src/app/services/settings.service.ts + 201 + + Romanian + + + Russian + + src/app/services/settings.service.ts + 207 + + Russian + + + Slovak + + src/app/services/settings.service.ts + 213 + + Slovak + + + Slovenian + + src/app/services/settings.service.ts + 219 + + Slovenian + + + Serbian + + src/app/services/settings.service.ts + 225 + + Serbian + + + Swedish + + src/app/services/settings.service.ts + 231 + + Swedish + + + Turkish + + src/app/services/settings.service.ts + 237 + + Turkish + + + Ukrainian + + src/app/services/settings.service.ts + 243 + + Ukrainian + + + Vietnamese + + src/app/services/settings.service.ts + 249 + + Vietnamese + + + Chinese Simplified + + src/app/services/settings.service.ts + 255 + + Chinese Simplified + + + Chinese Traditional + + src/app/services/settings.service.ts + 261 + + Chinese Traditional + + + ISO 8601 + + src/app/services/settings.service.ts + 269 + + ISO 8601 + + + Successfully completed one-time migratration of settings to the database! + + src/app/services/settings.service.ts + 603 + + Successfully completed one-time migratration of settings to the database! + + + Unable to migrate settings to the database, please try saving manually. + + src/app/services/settings.service.ts + 604 + + Unable to migrate settings to the database, please try saving manually. + + + You can restart the tour from the settings page. + + src/app/services/settings.service.ts + 677 + + You can restart the tour from the settings page. + + + Connecting... + + src/app/services/upload-documents.service.ts + 25 + + Connecting... + + + Uploading... + + src/app/services/upload-documents.service.ts + 37 + + Uploading... + + + Upload complete, waiting... + + src/app/services/upload-documents.service.ts + 40 + + Upload complete, waiting... + + + HTTP error: + + src/app/services/upload-documents.service.ts + 53 + + HTTP error: + + + Document already exists. + + src/app/services/websocket-status.service.ts + 24 + + Document already exists. + + + Document already exists. Note: existing document is in the trash. + + src/app/services/websocket-status.service.ts + 25 + + Document already exists. Note: existing document is in the trash. + + + Document with ASN already exists. + + src/app/services/websocket-status.service.ts + 26 + + Document with ASN already exists. + + + Document with ASN already exists. Note: existing document is in the trash. + + src/app/services/websocket-status.service.ts + 27 + + Document with ASN already exists. Note: existing document is in the trash. + + + File not found. + + src/app/services/websocket-status.service.ts + 28 + + File not found. + + + Pre-consume script does not exist. + + src/app/services/websocket-status.service.ts + 29 + + Pre-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Pre-consume script does not exist. + + + Error while executing pre-consume script. + + src/app/services/websocket-status.service.ts + 30 + + Pre-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Error while executing pre-consume script. + + + Post-consume script does not exist. + + src/app/services/websocket-status.service.ts + 31 + + Post-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Post-consume script does not exist. + + + Error while executing post-consume script. + + src/app/services/websocket-status.service.ts + 32 + + Post-Consume is a term that appears like that in the documentation as well and does not need a specific translation + Error while executing post-consume script. + + + Received new file. + + src/app/services/websocket-status.service.ts + 33 + + Received new file. + + + File type not supported. + + src/app/services/websocket-status.service.ts + 34 + + File type not supported. + + + Processing document... + + src/app/services/websocket-status.service.ts + 35 + + Processing document... + + + Generating thumbnail... + + src/app/services/websocket-status.service.ts + 36 + + Generating thumbnail... + + + Retrieving date from document... + + src/app/services/websocket-status.service.ts + 37 + + Retrieving date from document... + + + Saving document... + + src/app/services/websocket-status.service.ts + 38 + + Saving document... + + + Finished. + + src/app/services/websocket-status.service.ts + 39 + + Finished. + + + + diff --git a/src-ui/src/locale/messages.ms_MY.xlf b/src-ui/src/locale/messages.ms_MY.xlf index b153d40d6..5e182ead7 100644 --- a/src-ui/src/locale/messages.ms_MY.xlf +++ b/src-ui/src/locale/messages.ms_MY.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Close @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Previous @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Next @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Previous month @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Next month @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Close @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Select month @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Hours @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Select year @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutes @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 First @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Increment hours @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Previous @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrement hours @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Next @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Increment minutes @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Last @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrement minutes @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seconds @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Increment seconds @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrement seconds @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documents @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Settings @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Enable @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logs @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Loading... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + What's this? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Advanced search @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 An error occurred while saving settings. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 File Tasks @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dismiss @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dismiss selected @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Dismiss all @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirm Dismiss All @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 queued @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 started @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completed @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 failed @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Delete selected @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirm delete @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Users & Groups @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Password has been changed, you will be logged out momentarily. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Saved user "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Error saving user. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirm delete user account @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 This operation will permanently delete this user account. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error saving group. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirm delete user group @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 This operation will permanently delete this user group. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentation @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Saved views @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Open documents @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Close all @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Manage @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 is available. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Click to view. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx can automatically check for updates @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 How does this work? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Update available @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 An error occurred while saving update checking settings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Clear @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirmation @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Confirm @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 All @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - now - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Added + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + now + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Matching algorithm @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Matching pattern @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Case insensitive @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assign document type @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assign correspondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Error @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Path @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Color + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inbox tag @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inbox tags are automatically assigned to all consumed documents. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Create new tag @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Edit tag @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Create new user account @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Edit user account @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Not assigned @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Suggestions: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Add item @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Add tag @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documents with these Tags @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filter by correspondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filter by document type @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter by storage path @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Yes @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 No @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Page @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Select: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Edit: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Include: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" and "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' and "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirm tags assignment @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 This operation will add the tag "" to selected document(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 This operation will add the tags to selected document(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 This operation will remove the tag "" from selected document(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 This operation will remove the tags from selected document(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 This operation will add the tags and remove the tags on selected document(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirm correspondent assignment @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 This operation will assign the correspondent "" to selected document(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 This operation will remove the correspondent from selected document(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirm document type assignment @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 This operation will assign the document type "" to selected document(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 This operation will remove the document type from selected document(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filter by tag @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Select none @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Select page @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Select all - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + None Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sort @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Views @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Save "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Save as... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {One document} other { documents}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtered) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Error while loading documents @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sort by ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sort by title @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sort by owner @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by document type @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by storage path @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sort by created date @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sort by added date @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Edit document @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 View "" saved successfully. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 View "" created successfully. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Title & content @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 More like @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 equals @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 is empty @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 is not empty @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 greater than @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 less than @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Without correspondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Without document type @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Without any tag @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Title: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 correspondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 correspondents @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Last used @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Do you really want to delete the correspondent ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 document type @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 document types @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Do you really want to delete the document type ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatic - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - None - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 storage path @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 storage paths @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tag @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 tags diff --git a/src-ui/src/locale/messages.nl_NL.xlf b/src-ui/src/locale/messages.nl_NL.xlf index 8c26b1e65..ff2cf6a82 100644 --- a/src-ui/src/locale/messages.nl_NL.xlf +++ b/src-ui/src/locale/messages.nl_NL.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Sluiten @@ -13,16 +13,16 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader - Slide of + Dia van Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Vorige @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Volgende @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Vorige maand @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Volgende maand @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 UU @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sluiten @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Selecteer maand @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Uren @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Jaar selecteren @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuten @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Eerste @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Uren verhogen @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vorige @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Uren verlagen @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Volgende @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuten verhogen @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Laatste @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuten verlagen @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seconden @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seconden verhogen @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seconden verlagen @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,10 +265,10 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 - + Document was added to Paperless-ngx. @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documenten @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Instellingen @@ -496,7 +496,7 @@ src/app/components/manage/mail/mail.component.html 4 - E-mailaccounts en regels voor automatisch importeren van documenten beheren. + Beheer e-mailaccounts en regels voor het automatisch importeren van documenten. Workflows give you more control over the document pipeline. @@ -524,7 +524,7 @@ src/app/app.component.ts 240 - Check out the settings for various tweaks to the web app. + Bekijk de instellingen om de webapp naar wens in te stellen. Thank you! 🙏 @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Inschakelen @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logbestanden @@ -740,13 +740,37 @@ src/app/components/admin/logs/logs.component.html 4 - Bekijk de logbestanden voor de applicatie en voor het ophalen van e-mails. + Bekijk de logbestanden van de applicatie en voor het ophalen van e-mails. + + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Toon + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + regels Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,13 +886,21 @@ Laden... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Spring naar beneden + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. src/app/components/admin/settings/settings.component.html 4 - Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. + Opties om het uiterlijk, meldingen en meer aan te passen. De instellingen gelden alleen voor de <strong>huidige gebruiker</strong>. Start tour @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Wat is dit? @@ -1076,7 +1116,7 @@ src/app/components/admin/settings/settings.component.html 165,167 - Update checking works by pinging the public GitHub API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. + Updatecontrole werkt door de openbare GitHub API te pingen voor de nieuwste release en zo te bepalen of er een nieuwe versie beschikbaar is. Het daadwerkelijke bijwerken van de app moet nog steeds handmatig gebeuren. No tracking data is collected by the app in any way. @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1192,7 +1232,7 @@ src/app/components/admin/settings/settings.component.html 214 - Show document thumbnail during loading + Document thumbnail tonen tijdens het laden Global search @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Geavanceerd zoeken @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1376,7 +1416,7 @@ src/app/components/admin/settings/settings.component.html 266,268 - Settings apply to this user account for objects (Tags, Mail Rules, etc. but not documents) created via the web UI. + Instellingen zijn van toepassing op dit account voor objecten (tags, mailregels, enz., maar niet op documenten) die via de webinterface zijn aangemaakt. Default Owner @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Fout bij ophalen gebruikers @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Fout bij ophalen groepen @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Er is een fout opgetreden bij het opslaan van de instellingen. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Bestandstaken @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1916,7 +1956,7 @@ src/app/components/admin/tasks/tasks.component.html 64 - Resultaten + Resultaat Info @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Verbergen @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Resultaat @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Verberg geselecteerde @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Verberg alle @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Bevestig alles verbergen @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Verberg alle taken? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 in wachtrij @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 gestart @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 voltooid @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 mislukt @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Prullenbak @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Geselecteerde verwijderen @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Bevestig het verwijderen @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Gebruikers & groepen @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Wachtwoord is gewijzigd, je wordt zo uitgelogd. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Gebruiker "" opgeslagen. @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Fout bij opslaan gebruiker. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Bevestig verwijderen gebruikersaccount @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Deze actie zal dit gebruikersaccount permanent verwijderen. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Gebruiker "" verwijderd @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Fout bij verwijderen gebruiker "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Groep "" opgeslagen. @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Fout bij opslaan groep. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Bevestig verwijderen gebruikersgroep @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Deze actie zal deze gebruikersgroep permanent verwijderen. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Groep "" verwijderd @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Fout bij verwijderen groep "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Handleiding @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Opgeslagen weergaven @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Open documenten @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Alles sluiten @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Beheren @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 E-mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Beheer @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuratie @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 is beschikbaar. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klik om te bekijken. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx kan automatisch controleren op updates @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Hoe werkt dit? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Update beschikbaar @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Zijbalkweergaven bijgewerkt @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Fout tijdens bijwerken van zijbalkweergaven @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Er is een fout opgetreden tijdens het opslaan van de instellingen voor updatecontroles. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Leegmaken @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Bevestiging @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Bevestig @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Waar @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Onwaar @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Zoek documenten... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Alles @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Niet @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Zoekopdracht toevoegen @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Expressie toevoegen @@ -3758,18 +3830,6 @@ Relatieve datums - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - nu - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Toegevoegd + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + nu + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Binnen 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Binnen 1 maand @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Binnen 3 maanden @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Binnen 1 jaar @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Dit jaar @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Deze maand @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Gisteren + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Vorige week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Vorige maand + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Vorig kwartaal + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Vorig jaar + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritme voor het bepalen van de overeenkomst @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Patroon voor overeenkomst @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Niet hoofdlettergevoelig @@ -3982,19 +4082,11 @@ Optie toevoegen - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Standaard munteenheid @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Drieletterige valutacode @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Valutacode @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4340,7 +4432,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 44 - PDF layout + PDF-opmaak Include only files matching @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Documenttype toewijzen @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Correspondent toewijzen @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Fout @@ -4516,7 +4612,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 64 - System default + Systeemstandaard Text, then HTML @@ -4524,7 +4620,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 68 - Text, then HTML + Tekst, daarna HTML HTML, then text @@ -4532,7 +4628,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 72 - HTML, then text + HTML, daarna tekst HTML only @@ -4540,7 +4636,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 76 - HTML only + Alleen HTML Text only @@ -4548,7 +4644,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 80 - Text only + Alleen tekst Move to specified folder @@ -4604,7 +4700,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 118 - Titel van deze regel niet gebruiken + Geen titel van deze regel toewijzen Do not assign a correspondent @@ -4628,7 +4724,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 133 - Gebruik de naam (of het e-mailadres indien niet beschikbaar) + Gebruik de naam (of e-mailadres indien niet beschikbaar) Use correspondent selected below @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Pad @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Kleur + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 "Postvak in"-label @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 "Postvak in"-labels worden automatisch toegewezen aan alle verwerkte documenten. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Nieuw label aanmaken @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Label bewerken @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-mailadres @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Tweestapsverificatie @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Tweestapsverificatie uitschakelen @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Nieuw gebruikersaccount maken @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Bewerk gebruikersaccount @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 TOTP uitgeschakeld @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Fout bij uitschakelen TOTP @@ -4998,47 +5106,47 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 - Trigger type + Soort trigger Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 - Set scheduled trigger offset and which date field to use. + Stel het aantal dagen verschil in voor de geplande trigger en kies welk datumveld wordt gebruikt. Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 - Offset days + Aantal dagen verschil Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 - Positive values will trigger after the date, negative values before. + Positieve waarden triggeren na de datum, negatieve waarden ervoor. Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 - Relative to + Relatief aan Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Aangepast veld @@ -5046,47 +5154,47 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 - Custom field to use for date. + Aangepast veld om voor datum te gebruiken. Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 - Recurring + Herhalend Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 - Trigger is recurring. + Trigger wordt herhaald. Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 - Recurring interval days + Herhalingsinterval in dagen Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 - Repeat the trigger every n days. + Herhaal de trigger elke n dagen. Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger voor documenten die overeenkomen met alle filters hieronder. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Bestandsnaam filteren @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Toepassen op documenten die overeenkomen met deze bestandsnaam. Wildcards als *.pdf of *factuur* zijn toegestaan. Niet hoofdlettergevoelig. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Bronnen filteren @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter op opslaglocatie - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Toepassen op documenten die overeenkomen met dit pad. Wildcards met * zijn toegestaan. Hoofdletters worden genormaliseerd.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter op e-mailregel @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Toepassen op documenten die via deze e-mailregel zijn toegevoegd. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Inhoud matchingsalgoritme @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Inhoud matchen op patroon - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Heeft een van de labels + Geavanceerde filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Heeft correspondent + Filter toevoegen - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Heeft documenttype + Er zijn geen geavanceerde workflow filters gedefinieerd. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Voltooi de query configuratie van het aangepaste veld. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Actietype @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Titel toewijzen @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Kan gebruik maken van sommige placeholders, zie <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentatie</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Labels toewijzen @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Opslaglocatie toewijzen @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Aangepaste velden toewijzen @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Eigenaar toewijzen @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Weergaverechten toewijzen @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Bewerkingsrechten toewijzen @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Verwijder labels @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Verwijder alle @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Verwijder correspondenten @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Verwijder documenttypes @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Verwijder opslagpaden @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Verwijder aangepaste velden @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Verwijder eigenaars @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Verwijder rechten @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Bekijk rechten @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Bewerk rechten @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 E-mail onderwerp @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 E-mail tekst @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 E-mail ontvangers @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Voeg document toe @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook URL @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Gebruik parameters voor de webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Verzend webhook payload als JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook parameters @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,15 +5562,15 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 - Include document + Voeg document toe Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Inname locatie @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 E-mail ophalen @@ -5486,15 +5594,15 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 - Web UI + Web interface Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Aangepast veld @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Verwerking gestart @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document toegevoegd @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document bijgewerkt @@ -5538,15 +5646,15 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 - Scheduled + Gepland Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Toewijzing @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Verwijdering @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Heeft een van deze labels + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Heeft al deze labels + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Geen van deze labels + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Heeft correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Geen van deze correspondenten + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Heeft documenttype + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Geen van deze documenttypes + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Heeft opslagpad + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Geen van deze opslagpaden + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Komt overeen met aangepast veld query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Nieuwe workflow maken @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Workflow bewerken + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 E-mailadres(sen) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Onderwerp @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Bericht @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Gebruik archiefversie @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 E-mail verzenden - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - E-mail document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 E-mail verzonden + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Zonder toewijzing @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Suggesties: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Item toevoegen @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Label toevoegen @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Label verwijderen @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documenten met deze labels @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Lees meer @@ -6010,7 +6222,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 9 - Select all pages + Selecteer alle pagina's Deselect all pages @@ -6018,7 +6230,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 12 - Deselect all pages + Deselecteer alle pagina's Rotate selected pages counter-clockwise @@ -6042,7 +6254,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 23 - Delete selected pages + Verwijder geselecteerde pagina's Rotate page counter-clockwise @@ -6066,7 +6278,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 41 - Delete page + Verwijder pagina Add / remove document split here @@ -6114,7 +6326,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 98 - Delete original + Verwijder origineel Merge with existing permissions @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan de QR-code met je authenticator-app en voer de code hieronder in @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Geheime sleutel voor authenticator @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Je kunt dit geheime sleutel opslaan en gebruiken om de authenticator-app later opnieuw te installeren. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Herstelcodes worden niet opnieuw getoond, zorg ervoor dat je ze opslaat. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Codes kopiëren @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 E-mailadressen moeten overeenkomen @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Wachtwoorden moeten overeenkomen @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profiel succesvol bijgewerkt @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Fout bij opslaan profiel @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Fout bij genereren authenticatie token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Fout bij ontkoppelen van sociaal account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Fout bij ophalen TOTP instellingen @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP succesvol ingeschakeld @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Fout bij inschakelen TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP is succesvol uitgeschakeld @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Fout bij uitschakelen TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6778,7 +6994,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 105 - Tasks Queue + Takenwachtrij Redis Status @@ -6802,7 +7018,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 153 - Health + Status Search Index @@ -6826,7 +7042,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 245 - Run Task + Taak uitvoeren Last Updated @@ -6866,7 +7082,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 252 - Last Run + Laatst uitgevoerd WebSocket Connection @@ -6874,7 +7090,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + Websocket verbinding OK @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + OK Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Op correspondent filteren @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Documenttypes filteren @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter op opslagpad @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ja @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nee @@ -7098,7 +7314,7 @@ src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 6 - Upload documents + Upload documenten or drop files anywhere @@ -7106,7 +7322,7 @@ src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 7 - or drop files anywhere + of sleep bestanden hierheen Dismiss completed @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Pagina @@ -7220,7 +7436,7 @@ src/app/components/document-detail/document-detail.component.html 7,8 - of + van - @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Opnieuw verwerken @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Print More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Fout bij ophalen metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Fout bij ophalen suggesties. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" succesvol opgeslagen. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Fout bij opslaan document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Fout bij opslaan document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Weet je zeker dat je het document "" naar de prullenbak wilt verplaatsen? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documenten kunnen worden hersteld voordat ze definitief worden verwijderd. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Verplaatsen naar prullenbak @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Fout bij verwijderen document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Bevestig opnieuw verwerken @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Met deze bewerking wordt het gearchiveerde bestand voor dit document permanent opnieuw gemaakt. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Het gearchiveerde bestand wordt opnieuw gegenereerd met de huidige instellingen. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Het opnieuw verwerken van "" zal op de achtergrond beginnen. Sluit en open het document opnieuw nadat de bewerking is voltooid om de wijzigingen te zien. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Fout bij uitvoeren bewerking @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Fout bij downloaden document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Pagina passend maken @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,27 +8066,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Printen mislukt. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Fout bij laden van document voor printen. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Fout bij het laden van tiff: @@ -7882,19 +8098,11 @@ Geen vermeldingen gevonden. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Selecteer: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Bewerk: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Aangepaste velden @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter aangepaste velden @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Waarden instellen @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Roteren @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Samenvoegen @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Inclusief: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Gearchiveerde bestanden @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Originele bestanden @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Gebruik geformatteerde bestandsnaam @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Fout bij uitvoeren bulkbewerking @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" en "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' en "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Bevestig toewijzen van labels @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Het label "" zal aan geselecteerd(e) document(en) worden toegewezen. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Deze bewerking zal de labels toevoegen aan geselecteerd(e) document(en). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Het label "" zal verwijderd worden van geselecteerd(e) document(en). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Deze bewerking zal de labels verwijderen van geselecteerd(e) document(en). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Deze bewerking zal de labels toevoegen en verwijdert de labels van geselecteerd(e) document(en). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Bevestig toewijzen van correspondent @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 De correspondent "" zal aan geselecteerd(e) document(en) worden toegewezen. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 De correspondent zal verwijderd worden van geselecteerd(e) document(en). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Bevestig toewijzen van documenttype @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Het documenttype "" zal aan geselecteerd(e) document(en) worden toegewezen. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Het documenttype zal verwijderd worden van geselecteerd(e) document(en). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Bevestig toewijzing opslagpad @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Het opslagpad zal toegewezen worden aan geselecteerd(e) document(en). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Het opslagpad zal verwijderd worden van geselecteerd(e) document(en). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Toewijzing van aangepaste velden bevestigen @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Deze bewerking zal het aangepaste veld toevoegen aan geselecteerde document(en). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Deze bewerking zal de aangepaste velden toevoegen aan geselecteerde document(en). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Deze bewerking zal het aangepaste veld verwijderen van geselecteerde document(en). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Deze bewerking zal de aangepaste velden verwijderen van geselecteerde document(en). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Deze bewerking zal de aangepaste velden toewijzen en de aangepaste velden verwijderen van geselecteerde document(en). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Verplaats geselecteerde document(en) naar de prullenbak? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Met deze bewerking worden de gearchiveerde bestanden voor geselecteerde document(en) permanent opnieuw aangemaakt. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 De gearchiveerde bestanden worden opnieuw gegenereerd met de huidige instellingen. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Roteren bevestigen @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Met deze bewerking wordt de originele versie van document(en) permanent geroteerd. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Samenvoegen bevestigen @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Deze bewerking voegt geselecteerde documenten samen tot een nieuw document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Het samengevoegde document wordt in de wachtrij geplaatst voor verwerking. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Aangepaste velden bijgewerkt. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Fout tijdens bijwerken van aangepaste velden. @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Op label filteren @@ -8371,7 +8579,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 91,92 - Created: + Aangemaakt: Added: @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Niets selecteren @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Selecteer pagina @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Alles selecteren - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Selecteer: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Toon + + src/app/data/matching-model.ts + 45 + + Geen Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sorteren @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Weergaven @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Opslaan "" @@ -8561,7 +8781,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Opslaan als... @@ -8569,7 +8789,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Alle opgeslagen weergaven @@ -8577,7 +8797,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 { van één document geselecteerd} other { van documenten geselecteerd}} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Eén document} other { documenten}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (gefilterd) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,7 +8833,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Fout bij het laden van documenten @@ -8621,7 +8841,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sorteer op ASN @@ -8629,11 +8849,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8649,7 +8869,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sorteer op correspondent @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sorteer op titel @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sorteer op eigenaar @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sorteer op notities @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sorteer op documenttype @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sorteer op opslagpad @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sorteer op aanmaakdatum @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sorteer op datum toegevoegd @@ -8729,7 +8949,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sorteer op aantal pagina's @@ -8737,7 +8957,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Gedeeld @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sorteer op @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Document bewerken @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Voorbeeld van document @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selectie @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open het eerste [geselecteerde] document @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Vorige pagina @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Volgende pagina @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 View "" met succes opgeslagen. @@ -8829,15 +9049,15 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 - Failed to save view "". + Fout bij het opslaan van weergave "". View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 View "" met succes gemaakt. @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titel en inhoud @@ -8861,15 +9081,15 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 - File type + Bestandstype More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Meer zoals @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 gelijk aan @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 is leeg @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 is niet leeg @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 groter dan @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 kleiner dan @@ -8917,15 +9137,15 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 - Correspondent: + Correspondent: Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Zonder correspondent @@ -8933,15 +9153,15 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 - Document type: + Document type: Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Zonder documenttype @@ -8949,15 +9169,15 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 - Storage path: + Opslagpad: Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Zonder opslagpad @@ -8965,15 +9185,15 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 - Tag: + Label: Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Zonder label @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Aangepaste velden zoekopdracht @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Titel: @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Eigenaar: @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Eigenaar niet in: @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Zonder eigenaar @@ -9157,7 +9377,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 correspondent @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 correspondenten @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Laatst gebruikt @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Bent u zeker dat u correspondent "" wilt verwijderen? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter documenten () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 documenttype @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 documenttypen @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Wilt u het documenttype echt verwijderen ""? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ Uitgeschakeld + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Bekijk verwerkte e-mails + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Geen e-mailregels gedefinieerd. @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Fout bij ophalen e-mailaccounts @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Fout bij ophalen e-mailregels @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authenticatie succes @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authenticatie mislukt, zie logs voor details @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Account "" opgeslagen. @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Fout bij opslaan account. @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Bevestig e-mailaccount verwijderen @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Met deze bewerking wordt dit e-mailaccount permanent verwijderd. @@ -9477,23 +9705,23 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 - Deleted mail account "" + Emailaccount "" verwijderd Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 - Error deleting mail account "". + Fout bij verwijderen emailaccount "". Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 E-mailaccount wordt verwerkt @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Fout bij het verwerken van e-mailaccount @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Regel "" opgeslagen. @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Fout bij opslaan regel. @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Regel "" ingeschakeld. @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Regel "" uitgeschakeld. @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Bevestig e-mailregel verwijderen @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Met deze bewerking wordt dit e-mailregel permanent verwijderd. @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 E-mailregel "" verwijderd @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Fout bij verwijderen e-mailregel "". @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Rechten bijgewerkt @@ -9589,14 +9817,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Fout bij bijwerken rechten + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Geen verwerkte emailberichten gevonden. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Ontvangen + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Verwerkt + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Verwerkte e-mail(s) verwijderd + Filter by: @@ -9661,19 +9929,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Eén } other { totaal }} @@ -9681,7 +9949,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9957,11 @@ Automatisch - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Geen - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Succesvol aangemaakt. @@ -9713,7 +9969,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Fout bij maken . @@ -9721,15 +9977,15 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 - Successfully updated "". + Succesvol bijgewerkt "". Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Fout bij opslaan . @@ -9737,7 +9993,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Bijbehorende documenten worden niet verwijderd. @@ -9745,7 +10001,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Fout tijdens het verwijderen van element @@ -9753,7 +10009,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Rechten succesvol bijgewerkt @@ -9761,7 +10017,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Deze bewerking zal alle objecten permanent verwijderen. @@ -9769,7 +10025,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objecten succesvol verwijderd @@ -9777,7 +10033,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Fout bij verwijderen object @@ -9865,7 +10121,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 opslagpad @@ -9873,7 +10129,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 opslagpaden @@ -9881,7 +10137,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Wil je dit opslagpad echt verwijderen ""? @@ -9889,7 +10145,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 label @@ -9897,7 +10153,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 labels @@ -10179,7 +10435,7 @@ src/app/data/custom-field.ts 55 - Long Text + Lange tekst Search score @@ -10308,7 +10564,7 @@ src/app/data/paperless-config.ts 52 - Barcode Settings + Barcode instellingen Output Type @@ -10428,7 +10684,7 @@ src/app/data/paperless-config.ts 186 - Enable Barcodes + Activeer barcodes Enable TIFF Support @@ -10436,7 +10692,7 @@ src/app/data/paperless-config.ts 193 - Enable TIFF Support + Activeer TIFF ondersteuning Barcode String @@ -10444,7 +10700,7 @@ src/app/data/paperless-config.ts 200 - Barcode String + Barcode tekst Retain Split Pages @@ -10484,7 +10740,7 @@ src/app/data/paperless-config.ts 235 - DPI + DPI Max Pages @@ -10492,7 +10748,7 @@ src/app/data/paperless-config.ts 242 - Max Pages + Max. pagina's Enable Tag Detection @@ -10500,7 +10756,7 @@ src/app/data/paperless-config.ts 249 - Enable Tag Detection + Activeer label detectie Tag Mapping @@ -10908,7 +11164,7 @@ src/app/services/settings.service.ts 177 - Persian + Perzisch Polish @@ -11004,7 +11260,7 @@ src/app/services/settings.service.ts 249 - Vietnamese + Vietnamees Chinese Simplified @@ -11020,7 +11276,7 @@ src/app/services/settings.service.ts 261 - Chinese Traditional + Chinees (traditioneel) ISO 8601 diff --git a/src-ui/src/locale/messages.no_NO.xlf b/src-ui/src/locale/messages.no_NO.xlf index 0800c2f36..51cfc9cc0 100644 --- a/src-ui/src/locale/messages.no_NO.xlf +++ b/src-ui/src/locale/messages.no_NO.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Lukk @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Forrige @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Neste @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Forrige måned @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Neste måned @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Lukk @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Velg en måned @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Timer @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Velg år @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutter @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Først @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Økende timer @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Forrige @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Reduksjon i timer @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Neste @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Økende minutter @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Siste @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Reduksjon i minutter @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekunder @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Tilleggstid i sekund @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Reduksjon sekunder @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumenter @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Innstillinger @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Aktiver @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logger @@ -742,11 +742,35 @@ Se gjennom loggfilene for applikasjonen og for sjekk av e-post. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Vis + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Laster... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Hva er dette? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Avansert søk @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Feil ved innhenting av brukere @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Feil ved innhenting av grupper @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Det oppstod en feil under lagring av innstillingene. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Fil oppgaver @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Fjern varsel @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Resultat @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Fjern valgte varsel @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Kvitter ut alle @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Bekreft kvittering av alle varsler @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Fjern alle oppgaver? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 i kø @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 startet @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 fullført @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 feilet @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Papirkurv @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Slett valgte @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Bekreft sletting @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Brukere & Grupper @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Passordet har blitt endret, du vil bli logget ut øyeblikkelig. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Lagret bruker "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Feil ved lagring av bruker. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Bekreft sletting av brukerkonto @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Denne operasjonen vil permanent slette denne brukerkontoen. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Lagret gruppe "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Feil ved lagring av gruppe. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Bekreft sletting av brukergruppe @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Denne operasjonen vil permanent slette denne brukergruppen. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentasjon @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Lagrede visninger @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Åpne dokumenter @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Lukk alle @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Behandle @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 E-post @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administrasjon @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfigurasjon @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 er tilgjengelig. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klikk for å se. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx kan automatisk sjekke etter oppdateringer @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Hvordan fungerer dette? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Oppdatering er tilgjengelig @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidepanel visning oppdatert @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Feil ved oppdatering av sidepanelet @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Det oppstod en feil under lagring av innstillinger for oppdatering. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Tøm @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Bekreftelse @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Bekreft @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Alle @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Lagt til + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Samsvarende algoritme @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Matchende mønster @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Skill IKKE mellom store og små bokstaver @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Forhåndsvalgt valuta @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Bruk nasjonale innstillinger @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Tilordne dokumenttype @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Tildel korrespondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Feil @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Sti @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Farger + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Innboks etikett @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Innboks-etiketter blir automatisk tildelt til alle innleste dokumenter. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Opprett ny etikett @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Rediger etikett @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-post @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Opprett ny brukerkonto @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Rediger brukerkonto @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Tildel lagringssti @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Tilordne eier @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Tilordne visningstillatelser @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Tilordne redigeringstillatelser @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Fjern etiketter @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Fjern alle @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Fjern korrespondenter @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Fjern dokumenttyper @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Fjern lagringsstier @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Fjern eiere @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Fjern tillatelser @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Vis rettigheter @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Endre rettigheter @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Epost-henting @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Ikke tildelt @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Forslag: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Legg til element @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Legg til etikett @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtrer dokumenter med disse Etikettene @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrer etter korrespondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtrer etter dokumenttype @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtrer etter lagringssti @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ja @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nei @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Side @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Feil ved henting av metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Feil ved henting av forslag. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Feil ved lagring av dokument @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Feil ved sletting av dokumentet @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Velg: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Rediger: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Inkluder: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" and "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' and "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Bekreft tildeling av etiketter @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Denne operasjonen vil legge til etiketten "" til valgte dokumenter. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Denne operasjonen vil legge til etikettene til valgte dokumenter. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Denne handlingen vil fjerne etiketten "" fra valgte dokument(er). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Denne operasjonen vil fjerne etikettene fra valgte dokumenter. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Denne operasjonen vil legge til etikettene og fjerne etikettene valgte dokumenter. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Bekreft korrespondent tildeling @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Denne operasjonen vil legge til etiketten "" til valgte dokumenter. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Denne operasjonen vil fjerne korrespondenten fra valgte dokument(er). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Bekreft tildeling av dokumenttype @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Denne operasjonen vil tildele dokumenttypen "" til valgte dokument(er). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Denne operasjonen vil fjerne dokumenttypen fra valgte dokument(er). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Bekreft tildeling av lagringssti @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Denne operasjonen vil tilegne lagringsstien "" til valgte dokument(er). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Denne operasjonen vil fjerne lagringsstien fra valgte dokument(er). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrer etter etiketter @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Velg ingen @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Velg side @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Velg alle - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Vis + + src/app/data/matching-model.ts + 45 + + Ingen Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sorter @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Visninger @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Lagre "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Lagre som... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {One document} other { documents}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrert) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Feil ved lasting av dokumenter @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sorter etter ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sorter etter korrespondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sorter etter tittel @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sorter etter eier @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sorter etter notater @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sorter etter dokumenttype @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sorter etter lagringssti @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sorter etter opprettingsdato @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sorter etter lagt til dato @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Rediger dokument @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Visning "" ble lagret. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Visning "" ble opprettet. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Tittel & innhold @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Mer lik @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 er lik @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 er tom @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 er ikke tom @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 større enn @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 mindre enn @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Uten korrespondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Uten dokumenttype @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Uten lagringssti @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Uten noen etiketter @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Tittel: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Eier: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Eier ikke i: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Uten en eier @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 korrespondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 korrespondenter @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Sist brukt @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Do you really want to delete the correspondent ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 dokument type @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 dokumenttyper @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Ønsker du virkelig å slette dokumenttype "? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Ingen e-postregler definert. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Lagret konto "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Feil ved lagring av konto. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Bekreft sletting av e-postkonto @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Denne operasjonen vil permanent slette denne e-postkontoen. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Lagret regel "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Feil ved lagring av regel. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Bekreft sletting av e-postregel @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Denne operasjonen vil permanent slette denne e-postregelen. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatisk - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Ingen - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 lagringssti @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 lagringsstier @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Ønsker du virkelig å slette lagringsstien ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tagg @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 tagger diff --git a/src-ui/src/locale/messages.pl_PL.xlf b/src-ui/src/locale/messages.pl_PL.xlf index f89cffc93..69b43351a 100644 --- a/src-ui/src/locale/messages.pl_PL.xlf +++ b/src-ui/src/locale/messages.pl_PL.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Zamknij @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Poprzedni @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Następny @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Poprzedni miesiąc @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Następny miesiąc @@ -62,15 +62,15 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - HH + GG Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zamknij @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Wybierz miesiąc @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Godziny @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Wybierz rok @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuty @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Pierwszy @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zwiększ godziny @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Poprzedni @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zmniejsz godziny @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Następny @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zwiększ minuty @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ostatni @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zmniejsz minuty @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekundy @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zwiększa sekundy @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zmniejsz sekundy @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumenty @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Ustawienia @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Włącz @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Dziennik @@ -742,11 +742,35 @@ Przeglądaj pliki logów dla aplikacji i dla procesu sprawdzania wiadomości e-mail. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Pokaż + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + linie + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Wczytywanie... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Przejdź na dół + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Co to jest? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1120,7 +1160,7 @@ src/app/components/admin/settings/settings.component.html 179 - Show document counts in sidebar saved views + Pokaż liczniki dokumentów w pasku bocznym Document editing @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Wyszukiwanie zaawansowane @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Błąd przy pobieraniu użytkowników @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Błąd przy pobieraniu grup @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Wystąpił błąd podczas zapisywania ustawień. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Operacje na plikach @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Odrzuć @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Wynik @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Odrzuć zaznaczone @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Odrzuć wszystkie @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Potwierdź odrzucenie wszystkich @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Odrzuć wszystkie zadania? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Błąd zakończenia zadań + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Błąd zakończenia zadania + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 zakolejkowane @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 start @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 zakończony @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 niepowodzenie @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Kosz @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Usuń zaznaczone @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Potwierdź usunięcie @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Użytkownicy i Grupy @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Hasło zostało zmienione, zostaniesz natychmiast wylogowany. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Zapisano użytkownika "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Błąd zapisywania użytkownika. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Potwierdź usunięcie konta @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Ta operacja trwale usunie konto tego użytkownika. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Usunięto użytkownika "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Błąd podczas usuwania użytkownika "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Zapisano grupę "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Błąd zapisywania grupy. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Potwierdź usunięcie grupy użytkowników @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Ta operacja trwale usunie tę grupę użytkowników. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Usunięto grupę "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Błąd podczas usuwania grupy "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentacja @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Zapisane widoki @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Otwarte dokumenty @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Zamknij wszystkie @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Zarządzaj @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Poczta @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administracja @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfiguracja @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 jest dostępny. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Kliknij, aby zobaczyć. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx może automatycznie sprawdzać dostępność aktualizacji @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Jak to działa? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Aktualizacja jest dostępna @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Zaktualizowano widoki bocznego panelu @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Błąd podczas aktualizacji widoków bocznego panelu @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Wystąpił błąd podczas zapisywania ustawień sprawdzania aktualizacyj. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Wyczyść @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Potwierdzenie @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Potwierdź @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Prawda @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Fałsz @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Wyszukaj dokumenty... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Wszystkie @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Nie @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Dodaj zapytanie @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Dodaj wyrażenie @@ -3758,18 +3830,6 @@ Daty względne - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - teraz - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Dodano + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + teraz + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 W ciągu 1 tygodnia @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 W ciągu 1 miesiąca @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 W ciągu 3 miesięcy @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 W ciągu 1 roku @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 W tym roku @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 W tym miesiącu @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Wczoraj + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Poprzedni tydzień + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Poprzedni miesiąc + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Poprzedni kwartał + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Poprzedni rok + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algorytm dopasowania @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Wzorzec dopasowania @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 (Nieuwzględniający wielkości liter) @@ -3982,19 +4082,11 @@ Dodaj opcję - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Ostrzeżenie: istniejące instancje tego pola zachowają bieżący indeks wartości (np. opcja #1, #2, #3) po edycji opcji tutaj - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Domyślna waluta @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-znakowy kod waluty @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Użyj waluty lokalnej @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Przypisz typ dokumentu @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Przypisz korespondenta @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Błąd @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Ścieżka @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Kolor + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Nadrzędny/a + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Tag skrzynki odbiorczej @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Tagi skrzynki odbiorczej są automatycznie przypisane do wszystkich przetworzonych dokumentów. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Utwórz tag @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Edytuj tag @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Adres e-mail @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Weryfikacja dwuetapowa @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Wyłącz weryfikację dwuetapową @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Utwórz nowe konto użytkownika @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Edytuj konto użytkownika @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp wyłączony @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Dezaktywacja totp nie powiodła się @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Typ wyzwalacza @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Ustaw offset zaplanowanego wyzwalacza i pole daty do użycia. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Liczba dni przesunięcia @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Dodatnie wartości spowodują działanie po dacie, a ujemne – przed nią. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Względem @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Pole niestandardowe @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Pole niestandardowe używane dla daty. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Cykliczne @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Wyzwalacz jest cykliczny. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Odstęp w dniach @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Powtarzaj wyzwalacz co n dni. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Wyzwalacze do dokumentów, które pasują do wszystkich filtrów określonych poniżej. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtruj po nazwie pliku @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Zastosuj do dokumentów, które pasują do tej nazwy pliku. Maski takie jak *.pdf lub *faktura* są dozwolone. Wielkość liter nie ma znaczenia. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtruj źródła @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtruj ścieżkę - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Zastosuj do dokumentów pasujących do tej ścieżki. Dozwolone są symbole wieloznaczne takie jak *. Wielkość liter nie ma znaczenia.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Reguła filtrowania wiadomości e-mail @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Zastosuj do dokumentów pobieranych za pomocą tej reguły mailowej. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Algorytm dopasowania zawartości @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Wzór dopasowania zawartości - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Posiada dowolne tagi + Filtry zaawansowane - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Ma nadawcę + Dodaj filtr - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Ma typ dokumentu + Nie zdefiniowano zaawansowanych filtrów przepływu pracy. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Zakończ konfigurację pola niestandardowego. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Typ akcji @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Przypisz tytuł @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Może zawierać różna zmienne, zobacz <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>dokumentację</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Przypisz tagi @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Przypisz ścieżkę zapisu @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Przypisz pola dodatkowe @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Przypisz właściciela @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Przypisz uprawnienia do przeglądania @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Przypisz uprawnienia do edycji @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Usuń tagi @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Usuń wszystko @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Usuń korespondentów @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Usuń typy dokumentów @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Usuń ścieżki zapisu @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Usuń pole niestandardowe @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Usuń właścicieli @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Usuń uprawnienia @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Uprawnienia do przeglądania @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Uprawnienia do edycji @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Temat e-maila @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Treść e-maila @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Odbiorcy e-maila @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Dołącz dokument @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Adres URL webhooka @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Użyj parametrów dla treści webhooka @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Wyślij ładunek webhooka jako JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Parametry webhooka @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Treść webhooka @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Nagłówki webhooka @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Dołącz dokument @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Folder pobierania @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Przesyłanie przez API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Pobieranie poczty @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Interfejs webowy @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Pole niestandardowe @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Rozpoczęto pobieranie @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Dodano dokument @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Dokument zaktualizowano @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Zaplanowane @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Przypisanie @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Usuwanie @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Zawiera którykolwiek z podanych tagów + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Zawiera wszystkie podane tagi + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Nie zawiera żadnego z podanych tagów + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Ma nadawcę + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Nie posiada korespondentów + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Ma typ dokumentu + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Nie posiada typów dokumentów + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Ma ścieżkę zapisu w + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Brak ścieżki zapisu w + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Pasuje do zapytania o pole niestandardowe + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Utwórz nowy proces @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edytuj proces + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Dokument e-mailowy} other {Wyślij dokumentów e-mailowych}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Adres(y) e-mail @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Temat @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Wiadomość @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Użyj wersji archiwalnej @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Wyślij e-mail - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Wyślij dokument e-mailem + Niektóre serwery poczty elektronicznej mogą odrzucać wiadomości z dużymi załącznikami. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 E-mail wysłany + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Błąd podczas wysyłania dokumentów + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nieprzypisane @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Otwórz filtr @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Sugestie: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Dodaj element @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Dodaj tag @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Usuń tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtruj dokumenty za pomocą tych tagów @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Dowiedz się więcej @@ -6010,7 +6222,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 9 - Select all pages + Zaznacz wszystkie strony Deselect all pages @@ -6018,7 +6230,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 12 - Deselect all pages + Odznacz wszystkie strony Rotate selected pages counter-clockwise @@ -6026,7 +6238,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 17 - Rotate selected pages counter-clockwise + Obróć wybrane strony przeciwnie do ruchu wskazówek zegara Rotate selected pages clockwise @@ -6034,7 +6246,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 20 - Rotate selected pages clockwise + Obróć wybrane strony zgodnie z ruchem wskazówek zegara Delete selected pages @@ -6042,7 +6254,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 23 - Delete selected pages + Usuń wybrane strony Rotate page counter-clockwise @@ -6050,7 +6262,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 33 - Rotate page counter-clockwise + Obróć stronę przeciwnie do ruchu wskazówek zegara Rotate page clockwise @@ -6058,7 +6270,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 36 - Rotate page clockwise + Obróć stronę zgodnie z ruchem wskazówek zegara Delete page @@ -6066,7 +6278,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 41 - Delete page + Usuń stronę Add / remove document split here @@ -6074,7 +6286,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 44 - Add / remove document split here + Dodaj / usuń podział dokumentu Split here @@ -6082,7 +6294,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 70 - Split here + Podziel tutaj Create new document(s) @@ -6090,7 +6302,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 82 - Create new document(s) + Utwórz nowy dokument(y) Update existing document @@ -6098,7 +6310,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 87 - Update existing document + Zaktualizuj istniejący dokument Copy metadata @@ -6106,7 +6318,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 94 - Copy metadata + Skopiuj metadane Delete original @@ -6114,7 +6326,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 98 - Delete original + Usuń oryginał Merge with existing permissions @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Zeskanuj kod QR za pomocą aplikacji uwierzytelniającej, a następnie wprowadź kod poniżej @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Klucz uwierzytelniający @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Możesz przechowywać ten tajny klucz i użyć go do ponownej instalacji aplikacji uwierzytelniającej w późniejszym czasie. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Kod @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Kody odzyskiwania nie zostaną wyświetlone ponownie, upewnij się, że zostały zapisane. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Kopiuj kody @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Adresy e-mail muszą być zgodne @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Hasła muszą być zgodne @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profil został pomyślnie zaktualizowany @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Błąd podczas zapisywania profilu @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Błąd generowania tokenu autoryzacyjnego @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Błąd rozłączania konta społecznościowego @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Błąd pobierania ustawień TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP aktywowany pomyślnie @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Błąd aktywacji TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP dezaktywowany pomyślnie @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Błąd dezaktywacji TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6874,7 +7090,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + Połączenie WebSocket OK @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + OK Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtruj według nadawcy @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtruj według typu dokumentu @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtruj według ścieżki zapisu @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Tak @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nie @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Strona @@ -7220,7 +7436,7 @@ src/app/components/document-detail/document-detail.component.html 7,8 - of + z - @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Ponowne przetwórz @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Drukuj More like this @@ -7286,9 +7502,9 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 - PDF Editor + Edytor dokumentu PDF Send @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Błąd podczas pobierania metadanych @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Błąd podczas pobierania sugestii. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Dokument "" zapisany pomyślnie. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Błąd zapisu dokumentu "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Błąd podczas zapisywania dokumentu @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Czy naprawdę chcesz przenieść dokument "" do kosza? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Dokumenty można przywrócić przed ich trwałym usunięciem. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Przenieś do kosza @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Błąd usuwania dokumentu @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Potwierdzenie ponownego przetwarzania @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Ta operacja spowoduje trwałe odtworzenie pliku archiwum dla tego dokumentu. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Plik archiwum zostanie ponownie wygenerowany z bieżącymi ustawieniami. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Operacja ponownego przetworzenia dokumentu "" rozpocznie się w tle. Zamknij i ponownie otwórz lub odśwież dokument po zakończeniu operacji, aby zobaczyć nowe treści. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Błąd podczas wykonywania operacji @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Błąd pobierania dokumentu @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Dopasuj do strony @@ -7834,43 +8050,43 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 - PDF edit operation for "" will begin in the background. + Edycja dokumentu PDF dla "" rozpocznie się w tle. Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 - Error executing PDF edit operation + Błąd podczas edycji dokumentu PDF Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Błąd drukowania. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Błąd ładowania dokumentu do wydruku. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Wystąpił błąd podczas ładowania pliku TIFF: @@ -7882,19 +8098,11 @@ Nie znaleziono wpisów. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Wybierz: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Edycja: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Pola dodatkowe @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filtrowanie pól niestandardowych @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Ustaw wartości @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Obrót @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Łączenie @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Zawrzyj: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Zarchiwizowane pliki @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Oryginalne pliki @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Użyj sformatowanej nazwy pliku @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Błąd podczas wykonywania operacji masowej @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" i "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' i "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Potwierdź przypisanie tagów @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Ta operacja doda tag "" do wybranych dokumentów. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Ta operacja doda tagi to wybranych dokumentów. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Ta operacja usunie tag "" z wybranych dokumentów. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Ta operacja usunie tagi from wybranych dokumentu(ów). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Ta operacja doda tagi and remove the tags w wybranych dokumentach. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Potwierdź przypisanie nadawcy @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Ta operacja przypisze nadawcę "" do wybranych dokumentów. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Ta operacja usunie nadawcę z wybranych dokumentów. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Potwierdź przypisanie typu dokumentu @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Ta operacja przypisze typ dokumentu "" do zaznaczonych dokumentów. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Ta operacja usunie typ dokumentu z wybranych dokumentów. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Potwierdź przypisanie ścieżki zapisu @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Ta operacja przypisze ścieżkę zapisu "" do wybranych dokumentów. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Ta operacja usunie ścieżkę zapisu z wybranych dokumentów. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Potwierdź przypisanie pola niestandardowego @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Ta operacja przypisze pole niestandardowe"" do wybranych dokumentów. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Ta operacja przypisze pola niestandardowe do wybranych dokumentów. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Ta operacja usunie niestandardowe pole "" z wybranych dokumentów. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Ta operacja usunie niestandardowe pola z wybranych dokumentów. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Ta operacja przypisze pola niestandardowe i usunie niestandardowe pola na wybranych dokumentach. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Przenieść wybrane dokumenty do kosza? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Ta operacja trwale odtworzy pliki archiwum dla wybranych dokumentów. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Pliki archiwum zostaną ponownie wygenerowane z bieżącymi ustawieniami. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Potwierdzenie obrotu @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Ta operacja spowoduje trwały obrót oryginalnej wersji dokumentu(ów). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Potwierdzenie połączenia @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Ta operacja połączy wybrane dokumenty w nowy dokument. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Połączony dokument zostanie umieszczony w kolejce do pobrania. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Zaktualizowano pola niestandardowe. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Błąd aktualizacji pól niestandardowych. @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtruj po tagach @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Odznacz wszystko @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Zaznacz wszystko na tej stronie @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Zaznacz wszystko - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Wybierz: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Pokaż + + src/app/data/matching-model.ts + 45 + + Brak Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sortowanie @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Widoki @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Zapisz "" @@ -8561,7 +8781,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Zapisz jako... @@ -8569,7 +8789,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Wszystkie zapisane widoki @@ -8577,7 +8797,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, one {} few {Wybrano z dokumentów} many {Wybrano z dokumentów} =1 {Wybrano z jednego dokumentu} other {Wybrano z dokumentów}} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, one {} few { dokumenty} many { dokumentów} =1 {Jeden dokument} other { dokumenty}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (odfiltrowane) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,7 +8833,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Błąd podczas ładowania dokumentów @@ -8621,7 +8841,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sortuj według ASN @@ -8629,11 +8849,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8649,7 +8869,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sortuj według korespondenta @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sortuj według tytułu @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sortuj według właściciela @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sortuj według notatek @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sortuj według typu dokumentu @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sortuj według ścieżki zapisu @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sortuj według daty utworzenia @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sortuj według daty dodania @@ -8729,7 +8949,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sortuj według liczby stron @@ -8737,7 +8957,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Współdzielony @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sortuj według @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Edytuj dokument @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Podgląd dokumentu @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Resetowanie filtrów/wyboru @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Otwórz pierwszy [wybrany] dokument @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Poprzednia strona @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Następna strona @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Widok "" został zapisany. @@ -8829,7 +9049,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Nie udało się zapisać widoku "". @@ -8837,7 +9057,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Widok "" został utworzony pomyślnie. @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Tytuł & treść @@ -8861,7 +9081,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Typ pliku @@ -8869,7 +9089,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Podobne do @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 równa się @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 jest pusty @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 nie jest pusty @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 większy niż @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 mniejsze niż @@ -8917,7 +9137,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Korespondent: @@ -8925,7 +9145,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Bez nadawcy @@ -8933,7 +9153,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Typ dokumentu: @@ -8941,7 +9161,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Bez typu dokumentu @@ -8949,7 +9169,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Ścieżka przechowywania: @@ -8957,7 +9177,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Bez ścieżki zapisu @@ -8965,7 +9185,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8973,7 +9193,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Bez żadnego tagu @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Zapytanie o pola dodatkowe @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Tytuł: @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 Numer archiwum: @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Właściciel: @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Właściciel nie w: @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Bez właściciela @@ -9157,7 +9377,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 korespondent @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 korespondenci @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Ostatnio używane @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Czy na pewno chcesz usunąć nadawcę ""? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filtrowanie dokumentów () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 typ dokumentu @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 typy dokumentów @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Czy na pewno chcesz usunąć typ dokumentu ""? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ Wyłączony + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Zobacz Przetworzoną pocztę + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Nie zdefiniowano reguł poczty. @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Błąd pobierania kont pocztowych @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Błąd pobierania reguł pocztowych @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Uwierzytelnianie OAuth2 powiodło się @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 Uwierzytelnianie OAuth2 nie powiodło się, zobacz szczegóły w dzienniku @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Zapisano konto "". @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Błąd podczas zapisywania konta. @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Potwierdź usunięcie konta pocztowego @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Ta operacja spowoduje trwałe usunięcie tego konta pocztowego. @@ -9477,7 +9705,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Usunięto konto pocztowe "" @@ -9485,7 +9713,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Błąd usuwania konta pocztowego "". @@ -9493,7 +9721,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Przetwarzanie konta pocztowego "" @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Błąd przetwarzania konta pocztowego "" @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Zapisano regułę "". @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Błąd podczas zapisywania reguły. @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Reguła "" włączona. @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Reguła "" wyłączona. @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Błąd przełączania reguły "". @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Potwierdź usunięcie reguły poczty @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Ta operacja trwale usunie tę regułę poczty. @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Usunięto regułę poczty "" @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Błąd usuwania reguły poczty "". @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Uprawnienia zostały zaktualizowane @@ -9589,14 +9817,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Błąd aktualizacji uprawnień + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Przetworzona poczta dla + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Nie znaleziono przetworzonych wiadomości. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Odebrano + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Przetworzono + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Usunięto przetworzone wiadomości + Filter by: @@ -9661,19 +9929,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { łącznie }} @@ -9681,7 +9949,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9957,11 @@ Automatyczny - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Brak - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Pomyślnie utworzono . @@ -9713,7 +9969,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Wystąpił błąd podczas tworzenia . @@ -9721,7 +9977,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Pomyślnie zaktualizowano "". @@ -9729,7 +9985,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Wystąpił błąd podczas zapisywania . @@ -9737,7 +9993,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Powiązane dokumenty nie zostaną usunięte. @@ -9745,7 +10001,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Błąd podczas usuwania elementu @@ -9753,7 +10009,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Uprawnienia zostały pomyślnie zaktualizowane @@ -9761,7 +10017,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Ta operacja spowoduje trwałe usunięcie wszystkich obiektów. @@ -9769,7 +10025,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Obiekty usunięte pomyślnie @@ -9777,7 +10033,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Błąd usuwania obiektów @@ -9865,7 +10121,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 ścieżki zapisu @@ -9873,7 +10129,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 ścieżki zapisu @@ -9881,7 +10137,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Czy na pewno chcesz usunąć ścieżkę zapisu ""? @@ -9889,7 +10145,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tag @@ -9897,7 +10153,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 tagi @@ -10179,7 +10435,7 @@ src/app/data/custom-field.ts 55 - Long Text + Pełny tekst Search score @@ -11004,7 +11260,7 @@ src/app/services/settings.service.ts 249 - Vietnamese + Wietnamski Chinese Simplified diff --git a/src-ui/src/locale/messages.pt_BR.xlf b/src-ui/src/locale/messages.pt_BR.xlf index 73309604f..55a5757ec 100644 --- a/src-ui/src/locale/messages.pt_BR.xlf +++ b/src-ui/src/locale/messages.pt_BR.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Fechar @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Anterior @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Próximo @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mês anterior @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Próximo mês @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Fechar @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Selecione o mês @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Horas @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Selecione o ano @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutos @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Primeiro @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Acrescentar horas @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Anterior @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Deduzir horas @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Próximo @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Acrescentar minutos @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Último @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Deduzir minutos @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Segundos @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Acrescentar segundos @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Deduzir segundos @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documentos @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Configurações @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Habilitar @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logs @@ -742,11 +742,35 @@ Revise os arquivos de log para o aplicativo e para verificação de e-mail. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Mostrar + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Carregando... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + O que é isso? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Pesquisa avançada @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Erro ao recuperar usuários @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Erro ao recuperar grupos @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Ocorreu um erro ao salvar as configurações. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Tarefas de Arquivo @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dispensar @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Resultado @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dispensar selecionado @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Dispensar todos @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirmar Dispensar Todos @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Descartar todas as tarefas? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Erro ao ignorar tarefas + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Erro ao ignorar tarefa + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 na fila @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 iniciado @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 concluído @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 falhou @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Lixeira @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Excluir os itens selecionados @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirmar exclusão @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Usuários & Grupos @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 A senha foi alterada, você será deslogado momentaneamente. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Usuário salvo "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Erro ao salvar o usuário. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirmar exclusão de conta de usuário @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Esta operação excluirá permanentemente esta conta de usuário. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Usuário excluído "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Erro ao excluir o usuário "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Grupo salvo "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Erro ao salvar grupo. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirmar exclusão de grupo de usuário @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Esta operação excluirá este grupo de usuários permanentemente. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Grupo excluído "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Erro ao excluir o grupo "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentação @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Visualizações @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Abrir documentos @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Fechar todos @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Gerenciar @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 E-mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administração @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Personalização @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 está disponível. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Clique para visualizar. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx pode verificar atualizações automaticamente @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Como isto funciona? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Atualização disponível @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Visualizações da barra lateral atualizadas @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Erro ao atualizar visualizações da barra lateral @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Ocorreu um erro ao salvar as verificações de atualizações. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Limpar @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirmação @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Confirmar @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Verdadeiro @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Falso @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Procura documentos... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Todos @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Não @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Adicionar consulta @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Adicionar expressão @@ -3758,18 +3830,6 @@ Datas relacionadas - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - hoje - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Adicionado + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + hoje + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Em 1 semana @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Em 1 mês @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Em 3 meses @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Em 1 ano @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Este ano @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Este mês @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Ontem + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritmo de detecção @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Padrão de detecção @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Não diferenciar maiúsculas de minúsculas @@ -3982,19 +4082,11 @@ Adicionar opção - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Aviso: instâncias deste campo manterão seu índice de valor atual (por exemplo, opção #1, #2, #3) após editar as opções aqui - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Moeda Padrão @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-código da moeda @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Usar local @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Atribuir tipo de documento @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Atribuir correspondente @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Erro @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Caminho @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Cor + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Pai + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Etiqueta caixa de entrada @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Etiquetas de caixa de entrada são atribuídas automaticamente para todos os documentos consumidos. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Criar nova etiqueta @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Editar etiqueta @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-mail @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Autenticação de dois fatores @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Desativar a autenticação de dois fatores @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Criar uma nova conta de usuário @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Editar conta de usuário @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp desativado @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Desativação de totp falhou @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Tipo de acionador @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Define o deslocamento do gatilho programado e o campo a ser usado. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Dias de deslocamento @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Valores positivos serão acionados após a data, valores negativos antes. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relativo a @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Campo personalizado @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Campo personalizado para usar para data. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recorrente @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Gatilho é recorrente. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Dias do intervalo recorrentes @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repetir o gatilho a cada n dias. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Acionar os documentos que correspondem a todos os filtros especificados abaixo. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtro de nome de arquivo @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Aplica-se a documentos que correspondem a esse nome de arquivo. Caracteres curinga como *.pdf ou *fatura* são permitidos. Sem diferenciação de maiúsculas e minúsculas. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtro de fontes @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtro de caminho - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Aplica-se a documentos que correspondem a esse caminho. Caracteres curinga usando * são permitidos. Sem diferenciação de maiúsculas e minúsculas.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filtro de regra de e-mail @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Aplica-se a documentos consumidos por essa regra de e-mail. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Algoritmo de conteúdo correspondente @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Conteúdo correspondente padrão - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Tem alguma das tags + Filtros Avançados - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Possui correspondente + Adicionar filtro - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Possui tipo de documento + Nenhum filtro avançado de fluxo de trabalho definido. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Conclua a configuração da consulta de campo personalizado. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Tipo de ação @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Atribuir título @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Pode incluir alguns espaços reservados, consulte a <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentação</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Atribuir etiquetas @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Atribuir caminho de armazenamento @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Atribuir campos personalizados @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Atribuir proprietário @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Atribuir permissões de visualização @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Atribuir permissões de edição @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remover etiquetas @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remover tudo @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remover correspondentes @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remover tipos de documentos @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remover caminhos de armazenamento @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remover campos personalizados @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remover proprietários @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remover permissões @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Exibir Permissões @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Editar permissões @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Assunto do email @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Corpo do e-mail @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Destinatários de e-mail @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Anexar documento @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Url do webhook @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Usar parâmetros para o corpo do webhook @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Enviar payload do webhook como JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Parâmetros do webhook @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Corpo do webhook @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Cabeçalhos de webhook @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Incluir documentos @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Pasta de Consumo @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Envio por API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Busca em e-mail @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Campo personalizado @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumo Iniciado @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Documento Adicionado @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Documento Atualizado @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Agendado @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Atribuição @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Remoção @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Possui alguma destas etiquetas + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Possui estas etiquetas + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Não possui estas etiquetas + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Possui correspondente + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Não possui correspondentes + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Possui tipo de documento + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Não possui tipos de documento + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Possui caminho de armazenamento + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Não possui caminhos de armazenamento + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Corresponde à consulta de campo personalizado + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Criar novo fluxo de trabalho @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Editar Fluxo de Trabalho + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Enviar documento por e-mail} other {Email Documentos}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Endereço(s) de e-mail @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Assunto @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Mensagem @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Usar versão do arquivo @@ -5618,26 +5818,35 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Enviar email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Documento de e-mail + Alguns servidores de e-mail podem rejeitar mensagens com anexos grandes. +Erro ao enviar documentos por e-mail Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 E-mail enviado + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Erro ao enviar documentos por e-mail + Error emailing document @@ -5710,7 +5919,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Não atribuído @@ -5719,7 +5928,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Abrir filtro @@ -5763,7 +5972,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6008,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Sugestões: @@ -5923,7 +6132,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Adicionar Item @@ -5936,11 +6145,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6181,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Adicionar etiqueta @@ -5980,7 +6189,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remover etiqueta @@ -5988,7 +6197,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtrar documentos com essas Etiquetas @@ -6002,6 +6211,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Leia mais @@ -6292,7 +6505,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6517,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6549,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6617,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Escaneie o código QR com o seu aplicativo de autenticação, e então digite o código abaixo @@ -6412,7 +6625,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Segredo autenticador @@ -6420,7 +6633,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Você pode armazenar este segredo e usá-lo para reinstalar seu aplicativo autenticador mais tarde. @@ -6428,7 +6641,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Código @@ -6436,7 +6649,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Os códigos de recuperação não serão exibidos novamente, certifique-se de salvá-los. @@ -6444,7 +6657,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copiar código @@ -6452,7 +6665,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Os e-mails devem ser iguais @@ -6460,7 +6673,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 As senhas devem ser iguais @@ -6468,7 +6681,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Perfil atualizado com sucesso @@ -6476,7 +6689,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Erro ao salvar o perfil @@ -6484,7 +6697,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Erro ao gerar token de autenticação @@ -6492,7 +6705,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Erro ao desconectar conta de rede social @@ -6500,7 +6713,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Erro ao obter configurações TOTP @@ -6508,7 +6721,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP ativado com sucesso @@ -6516,11 +6729,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Erro ao ativar TOTP @@ -6528,7 +6741,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP desativado com sucesso @@ -6536,11 +6749,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Erro ao desativar TOTP @@ -6734,6 +6947,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6874,7 +7091,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + Conexão WebSocket OK @@ -6882,7 +7099,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + OK Copy Raw Error @@ -6952,7 +7169,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrar por correspondente @@ -6968,7 +7185,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtrar por tipo de documento @@ -6984,7 +7201,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtrar por caminho de armazenamento @@ -7004,7 +7221,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Sim @@ -7016,7 +7233,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Não @@ -7149,7 +7366,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7426,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Página @@ -7254,7 +7471,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocessar @@ -7264,7 +7481,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Imprimir More like this @@ -7286,7 +7503,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 Editor de PDF @@ -7322,11 +7539,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7579,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7607,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7635,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7907,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Erro ao recuperar metadados @@ -7698,7 +7915,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Erro ao recuperar sugestões. @@ -7706,11 +7923,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Documento "" salvo com sucesso. @@ -7718,7 +7935,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Erro ao salvar o documento "" @@ -7726,7 +7943,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Erro ao salvar documento @@ -7734,7 +7951,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Você realmente deseja mover o documento ""? @@ -7742,11 +7959,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documentos podem ser restaurados antes da exclusão permanente. @@ -7754,11 +7971,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Mover para lixeira @@ -7766,7 +7983,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Erro ao apagar documento @@ -7774,11 +7991,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Confirmação de reprocessamento @@ -7786,7 +8003,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Essa operação irá recriar permanentemente o arquivo para este documento. @@ -7794,7 +8011,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Os arquivos serão re-gerados com as configurações atuais. @@ -7802,7 +8019,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 O reprocessamento de "" começará em background. Feche e reabra ou recarregue este documento após a operação ser concluída para ver o novo conteúdo. @@ -7810,7 +8027,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Erro ao executar a operação de divisão @@ -7818,7 +8035,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Erro ao baixar o documento @@ -7826,7 +8043,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Ajustar à Página @@ -7834,7 +8051,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 A operação de edição de PDF para "" começará em segundo plano. @@ -7842,7 +8059,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Erro ao executar a operação de divisão @@ -7850,27 +8067,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Impressão falhou. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Erro ao carregar o documento para impressão. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Ocorreu um erro ao carregar tiff: @@ -7882,19 +8099,11 @@ Nenhuma entrada encontrada. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Selecionar: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Editar: @@ -7902,7 +8111,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8123,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8135,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8147,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8159,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8167,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Campos personalizados @@ -7966,7 +8175,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 @@ -7974,7 +8183,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Definir valores @@ -7982,7 +8191,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Girar @@ -7990,7 +8199,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Juntar @@ -7998,7 +8207,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Incluir: @@ -8006,7 +8215,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Arquivos arquivados @@ -8014,7 +8223,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Arquivos originais @@ -8022,7 +8231,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Usar nome do arquivo formatado @@ -8030,7 +8239,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Erro ao executar a operação em massa @@ -8038,11 +8247,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8259,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" e "" @@ -8059,7 +8268,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' e "" @@ -8068,7 +8277,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirmar atribuição de etiqueta @@ -8076,7 +8285,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Essa operação irá adicionar a etiqueta "" em documento(s) selecionado(s). @@ -8084,7 +8293,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Essa operação irá adicionar as etiquetas em ao(s) documento(s) selecionado(s). @@ -8092,7 +8301,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Essa operação irá remover a etiqueta "" de documento(s) selecionado(s). @@ -8100,7 +8309,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Essa operação irá remover as etiquetas de do(s) documento(s) selecionado(s). @@ -8108,7 +8317,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Essa operação irá adicionar as etiquetas e remover as etiquetas de documento(s) selecionado(s). @@ -8116,7 +8325,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirmar atribuição de correspondente @@ -8124,7 +8333,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Essa operação irá atribuir o correspondente "" para documento(s) selecionado(s). @@ -8132,7 +8341,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Essa operação irá remover o correspondente de documento(s) selecionado(s). @@ -8140,7 +8349,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirmar atribuição de tipo de documento @@ -8148,7 +8357,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Essa operação irá atribuir o tipo de documento "" para documento(s) selecionado(s). @@ -8156,7 +8365,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Essa operação irá remover o tipo de documento de documento(s) selecionado(s). @@ -8164,7 +8373,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirmar atribuição de caminho de armazenamento @@ -8172,7 +8381,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Esta operação irá atribuir o caminho de armazenamento "" para documento(s) selecionado(s). @@ -8180,7 +8389,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Essa operação irá remover o caminho de armazenamento de documento(s) selecionado(s). @@ -8188,7 +8397,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirmar atribuição de campo personalizado @@ -8196,7 +8405,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Esta operação atribuirá os campos personalizados para documento(s) selecionado(s). @@ -8204,7 +8413,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Esta operação atribuirá os campos personalizados para documento(s) selecionado(s). @@ -8212,7 +8421,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Esta operação removerá os campos personalizados para documento(s) selecionado(s). @@ -8220,7 +8429,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Esta operação removerá os campos personalizados para documento(s) selecionado(s). @@ -8228,7 +8437,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Esta operação irá atribuir campos customizados e remover os campos customizados nos documentos selecionados. @@ -8236,7 +8445,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Mover documentos selecionados para a lixeira? @@ -8244,7 +8453,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Essa operação irá excluir permanentemente o arquivo documento(s) selecionado(s). @@ -8252,7 +8461,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Os arquivos serão re-gerados com as configurações atuais. @@ -8260,7 +8469,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Confirmar Rotação @@ -8268,7 +8477,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Essa operação irá girar permanentemente a versão original do(s) documento(s). @@ -8276,7 +8485,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Confirmar junção @@ -8284,7 +8493,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Essa operação irá juntar os documentos selecionados em um novo documento. @@ -8292,7 +8501,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 O documento juntado será colocado na fila para consumo. @@ -8300,7 +8509,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Campos personalizados atualizados. @@ -8308,7 +8517,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Erro ao atualizar campos personalizados. @@ -8346,7 +8555,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrar por etiqueta @@ -8482,7 +8691,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8703,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Selecionar nenhum @@ -8502,11 +8711,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Selecionar página @@ -8514,31 +8723,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Selecionar todos - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Mostrar + + src/app/data/matching-model.ts + 45 + + Nenhum Sort src/app/components/document-list/document-list.component.html - 48 + 68 Ordenar @@ -8546,7 +8767,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Visualizações @@ -8554,7 +8775,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Salvar "" @@ -8562,7 +8783,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Salvar como... @@ -8570,7 +8791,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Todas as visualizações salvas @@ -8578,7 +8799,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selecionado de um documento} other {Selecionado of documentos}} @@ -8586,7 +8807,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Um documento} other { documentos}} @@ -8594,7 +8815,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrado) @@ -8602,7 +8823,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8835,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Erro ao carregar os documentos @@ -8622,7 +8843,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Classificar por ASN @@ -8630,11 +8851,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8871,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Ordenar por correspondentes @@ -8658,7 +8879,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Listar por título @@ -8666,7 +8887,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Ordenar por proprietário @@ -8674,7 +8895,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8911,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Ordenar por notas @@ -8698,7 +8919,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Filtrar por tipo de documento @@ -8706,7 +8927,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Filtrar por caminho de armazenamento @@ -8714,7 +8935,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Ordenar por Data de Criação @@ -8722,7 +8943,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Ordenar por data de inclusão @@ -8730,7 +8951,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Classificar por número de páginas @@ -8738,7 +8959,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8979,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Compartilhado @@ -8766,7 +8987,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Ordenar por @@ -8774,7 +8995,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Editar documento @@ -8782,7 +9003,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Prévisualizar documento @@ -8790,7 +9011,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Redefinir filtros / seleção @@ -8798,7 +9019,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Abrir o primeiro documento [selected] @@ -8806,7 +9027,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Página anterior @@ -8814,7 +9035,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Próxima página @@ -8822,7 +9043,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Visualização "" salva com sucesso. @@ -8830,7 +9051,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Falha ao salvar a view "". @@ -8838,7 +9059,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Visualização "" criada com sucesso. @@ -8854,7 +9075,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Título & conteúdo @@ -8862,7 +9083,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Tipo de arquivo @@ -8870,7 +9091,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Mais parecido @@ -8878,7 +9099,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 igual a @@ -8886,7 +9107,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 está vazio @@ -8894,7 +9115,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 não está vazio @@ -8902,7 +9123,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 maior que @@ -8910,7 +9131,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 menor que @@ -8918,7 +9139,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondente: @@ -8926,7 +9147,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Sem correspondente @@ -8934,7 +9155,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Tipo de documento: @@ -8942,7 +9163,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Sem tipo de documento @@ -8950,7 +9171,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Caminho de armazenamento: @@ -8958,7 +9179,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Sem o caminho de armazenamento @@ -8966,7 +9187,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9195,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Sem etiquetas @@ -8982,7 +9203,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Consulta de campos personalizados @@ -8990,7 +9211,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Título: @@ -8998,7 +9219,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 NSA: @@ -9006,7 +9227,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Proprietário: @@ -9014,7 +9235,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 @@ -9022,7 +9243,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Sem um proprietário @@ -9158,7 +9379,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 correspondente @@ -9166,7 +9387,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 correspondentes @@ -9174,7 +9395,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Última utilização @@ -9182,7 +9403,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Você realmente deseja excluir o correspondente ""? @@ -9218,19 +9439,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filtrar Documentos () @@ -9278,7 +9499,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 tipo de documento @@ -9286,7 +9507,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 tipos de documento @@ -9294,7 +9515,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Você realmente deseja excluir o tipo de documento ""? @@ -9394,7 +9615,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9623,19 @@ Desativado + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Ver e-mails processados + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Nenhuma regra de e-mail definida. @@ -9414,7 +9643,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Erro ao recuperar contas de email @@ -9422,7 +9651,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Erro ao recuperar regras de email @@ -9430,7 +9659,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Autenticação OAuth2 bem-sucedida @@ -9438,7 +9667,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 A autenticação OAuth2 falhou, consulte os logs para obter detalhes @@ -9446,7 +9675,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Conta salva "". @@ -9454,7 +9683,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Erro ao salvar conta @@ -9462,7 +9691,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirmar exclusão da conta de e-mail @@ -9470,7 +9699,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Esta operação excluirá permanentemente esta conta de e-mail. @@ -9478,7 +9707,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Conta de e-mail excluída "" @@ -9486,7 +9715,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Erro ao excluir conta de e-mail "". @@ -9494,7 +9723,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processando conta de e-mail "" @@ -9502,7 +9731,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Erro ao processar a conta de e-mail "" @@ -9510,7 +9739,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Regra salva "". @@ -9518,7 +9747,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Erro ao salvar regra. @@ -9526,7 +9755,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Regra "" ativada. @@ -9534,7 +9763,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Regra "" desativada. @@ -9542,7 +9771,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Erro ao alterar a regra "". @@ -9550,7 +9779,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirmar exclusão da regra de e-mail @@ -9558,7 +9787,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Esta operação excluirá permanentemente esta regra de e-mail. @@ -9566,7 +9795,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Regra de e-mail excluída "" @@ -9574,7 +9803,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Erro ao excluir regra de e-mail "". @@ -9582,7 +9811,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissões Atualizadas @@ -9590,14 +9819,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + E-mails processados para + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Nenhuma mensagem de e-mail processada encontrada. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Recebido + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processado + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + E-mail(s) processado(s) excluído(s) + Filter by: @@ -9662,19 +9931,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Uma } other { total}} @@ -9682,7 +9951,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9959,11 @@ Automático - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Nenhum - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Criado com sucesso . @@ -9714,7 +9971,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Ocorreu um erro ao criar . @@ -9722,7 +9979,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Atualizado com sucesso "". @@ -9730,7 +9987,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Ocorreu um erro ao salvar . @@ -9738,7 +9995,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Documentos associados não serão excluídos. @@ -9746,7 +10003,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Erro ao excluir elemento @@ -9754,7 +10011,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissões atualizadas com sucesso @@ -9762,7 +10019,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Esta operação irá apagar permanentemente todos os objetos. @@ -9770,7 +10027,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objeto(s) excluído(s) com sucesso. @@ -9778,7 +10035,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Erro ao apagar objetos @@ -9866,7 +10123,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 caminho de armazenamento @@ -9874,7 +10131,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 caminhos de armazenamento @@ -9882,7 +10139,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Você realmente deseja excluir o caminho de armazenamento ""? @@ -9890,7 +10147,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 etiqueta @@ -9898,7 +10155,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 etiquetas @@ -10180,7 +10437,7 @@ src/app/data/custom-field.ts 55 - Long Text + Texto longo Search score diff --git a/src-ui/src/locale/messages.pt_PT.xlf b/src-ui/src/locale/messages.pt_PT.xlf index 76aef1825..17bff0737 100644 --- a/src-ui/src/locale/messages.pt_PT.xlf +++ b/src-ui/src/locale/messages.pt_PT.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Fechar @@ -13,16 +13,16 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader - Slide of + Deslizar de Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Anterior @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Seguinte @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mês anterior @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Mês seguinte @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Fechar @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Selecionar mês @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Horas @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Selecionar ano @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minutos @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Primeiro @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementar horas @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Anterior @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Diminuir horas @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Seguinte @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementar minutos @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Último @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Diminuir minutos @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Segundos @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementar segundos @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Diminuir segundos @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documentos @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Configurações @@ -496,7 +496,7 @@ src/app/components/manage/mail/mail.component.html 4 - Manage e-mail accounts and rules for automatically importing documents. + Gerir contas de e-mail e as regras para importar documentos. Workflows give you more control over the document pipeline. @@ -504,7 +504,7 @@ src/app/app.component.ts 224 - Workflows give you more control over the document pipeline. + Os workflows dão mais controlo sobre o processo de tratamento de documentos. File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process. @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Ativar @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Registos @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ A carregar... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + O que é isto? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Pesquisa avançada @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Erro ao obter os utilizadores. @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Erro ao obter os grupos. @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Ocorreu um erro ao gravar as configurações. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Tarefas de Ficheiro @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dispensar @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Resultado @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Descartar selecionado @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Descartar todos @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirmar o descartar de todos @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Descartar todas tarefas? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 em fila @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 iniciado @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completo @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 falhou @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Reciclagem @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Eliminar seleção @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirmar eliminação @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Utilizadores e Grupos @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 A palavra passe foi alterada, terá a sessão atual terminada daqui a nada. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Utilizador "" gravado. @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Erro ao gravar utilizador. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirmar exclusão da conta de utilizador @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Esta operação irá apagar esta conta de utilizador permanentemente. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Utilizador excluído "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Erro ao excluir utilizador "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Grupo "" guardado. @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Erro ao gravar grupo. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirma excluir grupo de utilizador @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Esta operação irá apagar este grupo de utilizadores permanentemente. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Grupo excluído "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Erro ao excluir grupo "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentação @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Visualizações @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Abrir documentos @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Fechar todos @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Gerir @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,27 +3122,27 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html 2 - Workflows + Fluxos de trabalho Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Email @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administração @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Customizações @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 Github @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 está disponível. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Clique para ver. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 O Paperless-ngx pode verificar automaticamente por atualizações @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Como é que isto funciona? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Atualização disponível @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Visualizações da barra lateral atualizadas @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Erro ao atualizar visualizações da barra lateral @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 An error occurred while saving update checking settings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3316,7 +3384,7 @@ src/app/components/app-frame/global-search/global-search.component.html 138 - Groups + Grupos Custom fields @@ -3324,7 +3392,7 @@ src/app/components/app-frame/global-search/global-search.component.html 145 - Custom fields + Campos personalizados Mail accounts @@ -3332,7 +3400,7 @@ src/app/components/app-frame/global-search/global-search.component.html 152 - Mail accounts + Contas de email Mail rules @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Limpar @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirmação @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Confirmar @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,19 +3666,19 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html 21 - Today + Hoje Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,43 +3714,43 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 - True + Verdadeiro False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 - False + Falso Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Todos @@ -3726,15 +3798,15 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 - Not + Não Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,9 +3814,9 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 - Add expression + Adicionar expressão Relative dates @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - agora - From @@ -3780,7 +3840,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.html 120 - From + De To @@ -3792,7 +3852,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.html 144 - To + Até Added @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,65 +3878,105 @@ Adicionado + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + agora + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 - Within 1 week + Dentro de 1 semana Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 - Within 1 month + Dentro de 1 mês Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 - Within 3 months + Dentro de 3 meses Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 - Within 1 year + Dentro de 1 ano This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 - This year + Este ano This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 - This month + Este mês Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts 29 - Yesterday + Ontem + + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritmo de correspondência @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Padrão de correspondência @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Não distinguir entre maiúsculas e minúsculas @@ -3964,7 +4064,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html 12 - Data type + Tipo de dados Data type cannot be changed after a field is created @@ -3980,21 +4080,13 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html 20 - Add option - - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here + Adicionar opção Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4224,7 +4316,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 19 - Order + Ordem Enabled @@ -4238,13 +4330,13 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html 41 - Enabled + Ativado Paperless will only process mails that match all of the criteria specified below. @@ -4408,7 +4500,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 59 - Assign owner from rule + Atribuir proprietário da regra Assign document type @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Definir ao tipo de documento através de @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Definir correspondente @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Erro @@ -4516,7 +4612,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 64 - System default + Predefinição do sistema Text, then HTML @@ -4524,7 +4620,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 68 - Text, then HTML + Texto, depois HTML HTML, then text @@ -4532,7 +4628,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 72 - HTML, then text + HTML, depois texto HTML only @@ -4540,7 +4636,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 76 - HTML only + Apenas HTML Text only @@ -4548,7 +4644,7 @@ src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 80 - Text only + Apenas Texto Move to specified folder @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Caminho @@ -4700,7 +4796,7 @@ src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html 32 - No document selected + Nenhum documento seleccionado Search for a document @@ -4708,7 +4804,7 @@ src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html 38 - Search for a document + Pesquisar por um documento No documents found @@ -4720,7 +4816,7 @@ src/app/components/common/input/document-link/document-link.component.ts 72 - No documents found + Não foram encontrados documentos Create new storage path @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Cor + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Etiqueta de caixa de entrada @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 As etiquetas de caixa de entrada são automaticamente adicionadas a todos os documentos consumidos. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Criar uma nova etiqueta @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Editar etiqueta @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4840,7 +4948,7 @@ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html 26 - Admin + Administrador Access logs, Django backend @@ -4848,7 +4956,7 @@ src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html 26 - Access logs, Django backend + Logs de acesso, Django backend Superuser @@ -4878,9 +4986,9 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 - Two-factor Authentication + Autenticação em dois passos Disable Two-factor Authentication @@ -4894,19 +5002,19 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 - Disable Two-factor Authentication + Desativar a autenticação em dois passos Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Criar nova conta de utilizador @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Editar conta de utilizador @@ -4922,19 +5030,19 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 - Totp deactivated + Totp desativado Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,23 +5122,23 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 - Offset days + Dias de desfasamento Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 - Positive values will trigger after the date, negative values before. + Valores positivos serão acionados após a data, valores negativos antes da data. Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,31 +5226,31 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 - Filter mail rule + Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,15 +5314,15 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 - Assign title + Atribuir título Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,15 +5330,15 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 - Assign tags + Atribuir etiquetas Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,15 +5354,15 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 - Assign owner + Atribuir responsável Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,15 +5594,15 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 - Web UI + Web UI Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,39 +5646,119 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 - Scheduled + Agendado Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 - Assignment + Atribuição Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 - Removal + Remoção Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 - Webhook + Webhook + + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Não atribuído @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5781,7 +5989,7 @@ src/app/components/common/input/url/url.component.html 7 - Remove + Remover Invalid date. @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Sugestões: @@ -5829,7 +6037,7 @@ src/app/components/common/input/document-link/document-link.component.html 50 - Remove link + Remover link Open link @@ -5841,7 +6049,7 @@ src/app/components/common/input/url/url.component.html 14 - Open link + Abrir link Not found @@ -5849,7 +6057,7 @@ src/app/components/common/input/document-link/document-link.component.html 51 - Not found + Não encontrado Search for documents @@ -5893,7 +6101,7 @@ src/app/components/common/input/file/file.component.html 15 - Upload + Carregar Show password @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Adicionar item @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Adicionar etiqueta @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtrar documentos com estas Etiquetas @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6178,7 +6390,7 @@ src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.html 46 - Shared by me + Partilhado por mim Unowned @@ -6246,7 +6458,7 @@ src/app/components/common/preview-popup/preview-popup.component.ts 52 - Open preview + Abrir pré-visualização Edit Profile @@ -6254,7 +6466,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html 3 - Edit Profile + Editar Perfil Confirm Email @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6318,7 +6530,7 @@ src/app/components/manage/workflows/workflows.component.html 71 - Copy + Copiar Regenerate auth token @@ -6336,13 +6548,13 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html 39 - Copied! + Copiado! Warning: changing the token cannot be undone @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6558,7 +6770,7 @@ src/app/components/common/share-links-dialog/share-links-dialog.component.html 32 - Share + Partilhar Share archive version @@ -6574,7 +6786,7 @@ src/app/components/common/share-links-dialog/share-links-dialog.component.html 52 - Expires + Expira 1 day @@ -6586,7 +6798,7 @@ src/app/components/common/share-links-dialog/share-links-dialog.component.ts 102 - 1 day + 1 dia 7 days @@ -6594,7 +6806,7 @@ src/app/components/common/share-links-dialog/share-links-dialog.component.ts 26 - 7 days + 7 dias 30 days @@ -6602,7 +6814,7 @@ src/app/components/common/share-links-dialog/share-links-dialog.component.ts 27 - 30 days + 30 dias Never @@ -6610,7 +6822,7 @@ src/app/components/common/share-links-dialog/share-links-dialog.component.ts 28 - Never + Nunca Share Links @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrar por correspondente @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtrar por tipo de documento @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtrar por caminho de armazenamento @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Sim @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Não @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Página @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Erro ao obter os metadados @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Erro ao obter sugestões. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Erro ao gravar documento @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Selecionar: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Editar: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Incluir: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" e "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' e "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirmar atribuição de etiquetas @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Esta operação irá adicionar a etiqueta "" ao(s) documento(s) selecionado(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Esta operação irá adicionar as etiquetas ao(s) documento(s) selecionado(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Esta operação irá remover a etiqueta "" do(s) documento(s) selecionado(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Esta operação irá remover as etiquetas do(s) documento(s) selecionado(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Esta operação irá adicionar as etiquetas e remover as etiquetas no(s) documento(s) selecionado(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirmar atribuição de correspondente @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Esta operação irá atribuir o correspondente ao(s) documento(s) selecionado(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Esta operação irá remover o correspondente do(s) documento(s) selecionado(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirmar atribuição de tipo de documentos @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 A operação irá atribuir o tipo de documento "" ao(s) documento(s) selecionado(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Esta operação irá remover o tipo de documento do(s) documento(s) selecionado(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Esta operação irá associar o caminho de armazenamento para documento(s) selecionado(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Esta operação irá remover o caminho de armazenamento de documento(s) selecionado(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrar por etiqueta @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Selecionar nenhum @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Selecionar página @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Selecionar todos - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + Nenhum Sort src/app/components/document-list/document-list.component.html - 48 + 68 Ordenar @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Visualizações @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Guardar "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Guardar como... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, one {} =1 {Selecionado de um documento} other {Selecionados de documentos}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, one {} =1 {Um documento} other { documentos}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrado) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Erro ao carregar documentos @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Ordenar por ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Ordenar por correspondente @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Ordenar por título @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Ordenar por dono @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Ordenar por notas @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Ordenar por tipo de documento @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Ordenar por caminho de armazenamento @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Ordenar por data de criação @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Ordenar por data de adição @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Editar documento @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Visualização "" guardado com sucesso. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Visualização "" criada com sucesso. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Título & conteúdo @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Semelhantes a @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 é igual a @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 está vazio @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 não está vazio @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 é maior que @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 é menor que @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Sem correspondente @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Sem tipo de documento @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Sem caminho de armazenamento @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Sem etiquetas @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Título: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 NSA: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Dono: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 correspondente @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 correspondentes @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Última utilização @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Tem a certeza que quer eliminar a correspondência ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 tipo de documento @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 tipos de documento @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Tem a certeza que quer apagar o tipo de documento ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Desativado + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Sem regras de email definidas. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Conta "" gravada. @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Erro ao gravar conta. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirme a eliminação da conta de correio eletrónico @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Esta operação irá apagar permanentemente esta conta de correio eletrónico. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Regra "" gravada. @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Erro ao gravar regra. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirmar eliminação da regra de correio eletrónico @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Esta operação irá eliminar permanentemente esta regra de correio eletrónico. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissões atualizadas @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Erro ao atualizar permissões + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {} =1 {Um } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automático - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Nenhum - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Criado com sucesso . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Ocorreu um erro ao criar . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Ocorreu um erro ao gravar . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 caminho de armazenamento @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 caminhos de armazenamento @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 etiqueta @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 etiquetas diff --git a/src-ui/src/locale/messages.ro_RO.xlf b/src-ui/src/locale/messages.ro_RO.xlf index d86f4c0b6..4d6f5b01f 100644 --- a/src-ui/src/locale/messages.ro_RO.xlf +++ b/src-ui/src/locale/messages.ro_RO.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Închide @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Anterior @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Următor @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Luna precedentă @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Luna următoare @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Închide @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Selectați luna @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ore @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Selectați anul @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minute @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Primul @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementare ore @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Anteriorul @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrementare oră @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Următor @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementare minute @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ultima @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrementare minute @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Secunde @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Incrementare secunde @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Decrementare secunde @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Documente @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Setări @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Activeaza @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Jurnale @@ -742,11 +742,35 @@ Uitați-vă la fișierele de log-uri pentru aplicație si verificarea email-ului. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Arată + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Se încarcă... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + What's this? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Căutare avansată @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 An error occurred while saving settings. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 File Tasks @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Dismiss @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Dismiss selected @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Dismiss all @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Confirm Dismiss All @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 queued @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 started @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 completed @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 failed @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Șterge selecția @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Confirmă ștergerea @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Utilizatori & Grupuri @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Parola a fost schimbată, vei fi deconectat momentan. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Utilizator salvat "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Eroare la salvarea utilizatorului. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirmă ștergerea contului @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Această operațiune va șterge permanent acest cont. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Error saving group. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirm delete user group @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 This operation will permanently delete this user group. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Documentație @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Vizualizări @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Deschide documente @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Închide tot @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Administrează @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administrare @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 este disponibilă. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Click pentru a vizualiza. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Sistemul poate verifica automat actualizările @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Cum funcţionează? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Actualizare disponibilă @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Vizualizări bară laterală actualizate @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Eroare la actualizarea vizualizărilor barei laterale @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 An error occurred while saving update checking settings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Curăță @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Confirmare @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Confirmă @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Tot @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - acum - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Adăugat + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + acum + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritm de potrivire @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Model de potrivire @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Ignoră majusculele @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Assign document type @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Assign correspondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Eroare @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Cale @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Culoare + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Eticheta inbox @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Etichetele inbox sunt atribuite automat documentelor consumate. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Crează o etichetă nouă @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Modifică o etichetă @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Poștă electronică @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Crează un nou cont de utilizator @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Editează contul de utilizator @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtru nume fișier @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Aplică la documentele care se potrivesc cu acest nume de fișier. Wildcards cum ar fi *.pdf sau *factura* sunt permise. Masca insensibilă. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtrare surse @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtrare cale - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Regulă filtrare e-mail @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Aplică la documentele consumate prin această regulă de e-mail. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nealocate @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Sugestii: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Adaugă element @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Adaugă etichetă @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documents with these Tags @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrează dupa corespondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filter by document type @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter by storage path @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Da @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nu @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Pagina @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Eroare la ștergerea documentului @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Selectează: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Editează: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Include: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" și "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' și "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirmați atribuirea etichetelor @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Va fi adăugată eticheta "" la document(e) selectat(e). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Vor fi adăugate etichetele la document(e) selectat(e). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Va fi eliminată eticheta "" din document(e) selectat(e). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Vor fi eliminate etichetele din document(e) selectat(e). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Vor fi adăugate etichetele și vor fi eliminate etichetele pentru document(e) selectat(e). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirmați atribuirea corespondentului @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Va fi adăugat corespondentul "" la document(e) selectat(e). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Va fi eliminat corespondentul din document(e) selectat(e). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirmați atribuirea tipului de document @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Va fi atribuit tipul "" pentru document(e) selectat(e). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Va fi eliminat tipul pentru document(e) selectat(e). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrează dupa etichetă @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Deselectează tot @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Selectează pagina @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Selectează tot - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Arată + + src/app/data/matching-model.ts + 45 + + None Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sortează @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Vizualizări @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Salvează "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Salvează ca... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Am selectat din 1 document} other {Am selectat din documente}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Un document} other { documente}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrat) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Error while loading documents @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sort by ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sort by title @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sort by owner @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sort by notes @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by document type @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sort by storage path @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sort by created date @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sort by added date @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Edit document @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Vizualizarea "" a fost salvată. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Vizualizarea "" a fost creată. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titlu si conținut @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Asemănătoare @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 equals @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 is empty @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 is not empty @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 greater than @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 less than @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Fără corespondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Fară tip @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Without storage path @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Fară etichete @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Titlu: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 Aviz prealabil de expediție: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Without an owner @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 corespondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 corespondenți @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Last used @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Sunteți sigur că doriți să ștergeți corespondentul ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 tip de document @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 tipuri de document @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Sunteți sigur că doriți să ștergeți tipul de document ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Error saving rule. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automat - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - None - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 storage path @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 storage paths @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 etichetă @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 etichete diff --git a/src-ui/src/locale/messages.ru_RU.xlf b/src-ui/src/locale/messages.ru_RU.xlf index 0135c2de1..6a02df3fa 100644 --- a/src-ui/src/locale/messages.ru_RU.xlf +++ b/src-ui/src/locale/messages.ru_RU.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Закрыть @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Предыдущий @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Следующий @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Предыдущий месяц @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Следующий месяц @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ЧЧ @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Закрыть @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Выберите месяц @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Часы @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Выберите год @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Минуты @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Первый @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Увеличить часы @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Предыдущий @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Уменьшить часы @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Следующий @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Увеличить минуты @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Последний @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Уменьшить минуты @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 СС @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Секунды @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Увеличить секунды @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Уменьшить секунды @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Документы @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Настройки @@ -524,7 +524,7 @@ src/app/app.component.ts 240 - . + Ознакомьтесь с настройками для веб-приложения. Thank you! 🙏 @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Включить @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Логи @@ -742,11 +742,35 @@ Просмотрите файлы журналов для приложения и для проверки электронной почты. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Показать + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + строк(-и) + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Загрузка... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Перейти в конец + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Что это такое? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Расширенный поиск @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Ошибка при загрузке пользователей @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Ошибка при загрузке групп @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Произошла ошибка при сохранении настроек. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Файловые задачи @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Отклонить @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Результат @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Отменить выбранное @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Отменить все @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Подтвердить отмену всех @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Отказаться от всех заданий? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Ошибка при отмене задач + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Ошибка при отмене задачи + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 в очереди @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 запущено @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 завершено @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 неудачно @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Корзина @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Удалить выбранные @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Подтвердите удаление @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Пользователи и группы @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Пароль был изменен, повторите вход в учетную запись. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Сохранён пользователь "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Ошибка при сохранении документа. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Подтвердите удаление учетной записи пользователя @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Эта операция окончательно удалит учетную запись пользователя. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Пользователь "" удален @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Ошибка при удалении пользователя "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Сохранена группа "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Ошибка сохранения группы. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Подтвердите удаление группы пользователей @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Эта операция окончательно удалит данную группу пользователей. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Группа "" удалена @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Ошибка при удалении группы "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Документация @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Представления @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Открыть документы @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Закрыть всё @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Управление @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Почта @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Администрирование @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Конфигурация @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 доступно. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Нажмите для просмотра. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx может автоматически проверять наличие обновлений @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Как это работает? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Доступно обновление @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Обновлена боковая панель @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Ошибка при обновлении боковой панели @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Произошла ошибка при сохранении настроек проверки обновлений. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Очистить @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Подтверждение @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Подтвердить @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Верно @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Ложное @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Поиск документов... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Все @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Не @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Добавить запрос @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Добавить выражение @@ -3758,18 +3830,6 @@ Относительные даты - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - сейчас - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Добавлено + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + сейчас + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 В течение 1 недели @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 В течение 1 месяца @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 В течении 3-х месяцев @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 В течение 1 года @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 В этом году @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 В этом месяце @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Вчера + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Предыдущая неделя + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Предыдущий месяц + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Предыдущий квартал + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Предыдущий год + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Алгоритм сопоставления @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Шаблон соответствия @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Без учёта регистра @@ -3982,19 +4082,11 @@ Добавить значение - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Предупреждение: существующие экземпляры этого поля сохранят их текущий индекс значений (например, вариант #1, #2, #3) после редактирования параметров здесь - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Валюта по умолчанию @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Трехбуквенный код валюты @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Использовать язык @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Назначить тип документа @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Назначить корреспондента @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Ошибка @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Путь @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Цвет + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Родитель + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Входящий теги @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Входящий тег будет автоматически назначен всем добавленным документам. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Создать новый тег @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Редактировать тег @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Электронная почта @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Двухфакторная аутентификация @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Отключить двухфакторную аутентификацию @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Создать новую учетную запись пользователя @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Редактировать учетную запись пользователя @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp деактивирован @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Ошибка деактивации Totp @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Тип триггера @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Задайте смещение запланированного триггера и какое поле даты использовать. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Дни смещения @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Положительные значения будут срабатывать после даты, а отрицательные - перед ней. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Относительно @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Пользовательское поле @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Пользовательское поле, чтобы использовать для даты. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Повторяющееся @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Триггер повторяется. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Повторяющиеся дни интервала @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Повторять триггер каждые n дней. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Триггер для документов, соответствующих всем фильтрам указанным ниже. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Фильтр имя файла @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Обрабатывать только документы, которые полностью совпадают с именем файла. Маски, например *.pdf или *счет*, разрешены. Не учитывает регистр. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Фильтр источников @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Фильтр пути - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Обрабатывать только документы, которые соответствуют данному пути. Маски, указанные как *, разрешены. Допускается регистр.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Фильтр почтовых правил @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Обрабатывать только документы, добавленные через это почтовое правило. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Алгоритм подбора содержимого @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Шаблон подбора содержимого - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Содержит любой из тегов + Расширенные фильтры - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Имеет корреспондента + Добавить фильтр - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Имеет тип документа + Расширенные фильтры рабочего процесса не определены. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Заполните настройки запросов к настраиваемым полям. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Тип действия @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Присвоить заголовок @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Может содержать некоторые заполнители, смотрите <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>документацию</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Назначить метки @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Назначить путь хранения @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Назначить пользовательские поля @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Назначить владельца @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Назначить права для просмотра @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Назначить права для редактирования @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Удалить теги @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Удалить всё @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Удалить корреспондентов @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Удалить типы документов @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Удалить пути хранения @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Удалить пользовательские поля @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Удалить владельцев @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Удалить разрешения @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Просмотр разрешений @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Изменить разрешения @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Тема письма @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Текст письма @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Получатели письма @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Прикрепить документ @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 URL вебхука @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Использовать параметры для тела веб-хука @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Отправить webhook загрузку как JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Параметры вебхука @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Тело веб хука @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 HTTP-заголовки вебхука @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Включать документ @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Обработка из папки @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Загрузка API @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Получить почту @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Веб-интерфейс @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Пользовательское поле @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Обработка документа начата @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Документ добавлен @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Документ обновлен @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Запланировано @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Задание @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Удаление @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Вебхук + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Имеет любой из этих тегов + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Есть все эти теги + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Нет этих тегов + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Имеет корреспондента + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Нет корреспондентов + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Имеет тип документа + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Нет типов документов + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Имеет путь к хранилищу + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Нет путей хранения + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Создать новый процесс @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Редактирование рабочего процесса + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Адрес(-а) эл. почты @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Тема @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Сообщение @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Использовать архивную версию @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Послать письмо - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Документ E-mail + Некоторые почтовые серверы могут отклонить сообщения с большими вложениями. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Письмо отправлено + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Ошибка отправки документов на почту + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Не назначено @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Открыть фильтр @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Рекомендации: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Добавить элемент @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Добавить тег @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Удалить тег @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Фильтровать документы с этими этикетами @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Подробнее @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Отсканируйте QR-код вашим приложением-аутентификатором и затем введите код ниже @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Секретный ключ аутентификации @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Вы можете хранить этот секретный ключ и использовать его для переустановки вашего приложения аутентификации позже. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Код @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Коды восстановления не будут показаны снова, не забудьте сохранить их. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Скопировать коды @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Email должен совпадать @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Пароли должны совпадать @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Профиль успешно обновлен @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Ошибка при сохранении профиля @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Ошибка создания токена авторизации @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Ошибка при отключении стороннего сервиса @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Ошибка получения настроек TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP успешно активирован @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Ошибка активации TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP успешно деактивирован @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Ошибка деактивации TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6874,7 +7090,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + Подключение WebSocket OK @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + ХОРОШО Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Отфильтровать по корреспонденту @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Фильтр по типу документа @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Фильтр по пути хранения @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Да @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Нет @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Страница @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Обработать повторно @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Распечатать More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 Редактор PDF @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Ошибка при получении метаданных @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Ошибка при получении предложений. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Документ "" успешно сохранён. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Ошибка при сохранении документа "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Ошибка при сохранении документа @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Вы действительно хотите переместить документ "" в корзину? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Документы могут быть восстановлены до окончательного удаления. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Переместить в корзину @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Ошибка удаления документа @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Подтвердить повторную обработку @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Это действие перезапишет файл архива для этого документа. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Файл архива будет сгенерирован с текущими настройками. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Повторная обработка для "" начнется в фоновом режиме. Закройте и повторно откройте или обновите страницу с этим документом после завершения операции, чтобы увидеть новое содержимое. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Ошибка при выполнении операции @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Ошибка скачивания документа @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Вместить страницу @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 Редактирование PDF для "" начнется в фоновом режиме. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Ошибка при выполнении операции редактирования PDF @@ -7850,27 +8066,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Печать не удалась. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Ошибка загрузки документа для печати. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Произошла ошибка при загрузке tiff: @@ -7882,19 +8098,11 @@ Записей не найдено. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Выбрано: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Редактировать: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Пользовательские поля @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Фильтр пользовательских полей @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Установить значения @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Повернуть @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Объединить @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Включить: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Архивные файлы @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Исходные файлы @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Использовать форматированное имя файла @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Ошибка при выполнении массовой операции @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" и "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' и "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Подтвердить применяемый тег @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Эта операция добавит тег "" выбранным документам . @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Эта операция добавит теги к выбранному(ым) документу(ам). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Эта операция удалит теги "" с выбранных документов. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Эта операция удалит теги из выбранного(ых) документа(ов). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Эта операция добавит теги и удалит теги из выбранного(ых) документа(ов). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Подтвердите назначения корреспондента @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Эта операция назначит корреспондента "" выбранным документам. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Эта операция удалит корреспондента из выбранных документов. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Подтвердите назначение типа документа @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Эта операция присвоит тип "" выбранным документам. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Эта операция удалит тип из выбранных документов. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Подтвердите назначение путь хранения @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Эта операция присвоит путь хранения "" к выбранному(ым) документу(ам). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Эта операция удалит путь хранения из выбранного(ых) документа(ов). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Подтвердить назначение пользовательского поля @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Эта операция присвоит пользовательское поле "" к выбранному(-ым) документу(-ам). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Эта операция присвоит пользовательские поля к выбранному(-ым) документу(-ам). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Эта операция удалит пользовательское поле "" из выбранного(-ых) документа(-ов). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Эта операция удалит пользовательские поля из выбранного(-ых) документа(-ов). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Эта операция присвоит пользовательские поля и удалит пользовательские поля в выбранном(-ых) документе(-ах). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Поместить выбранный(-ых) документ(-а) в корзину? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Эта операция будет постоянно пересоздавать файлы архива для выбранного(-ых) документа(-ов). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Файлы архива будут пересозданы с текущими настройками. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Подтвердить вращение @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Эта операция повернёт оригинал(-ы) документа(-ов) навсегда. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Подтвердить слияние @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Эта операция объединит выбранных документов в новый документ. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Объединенный документ будет добавлен в очередь для обработки. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Пользовательские поля обновлены. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Ошибка при обновлении пользовательских полей. @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Отфильтровать по тегу @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Ничего @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Выбрать страницу @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Выбрать всё - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Выбрать: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Показать + + src/app/data/matching-model.ts + 45 + + Отсутствует Sort src/app/components/document-list/document-list.component.html - 48 + 68 Сортировка @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Представления @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Сохранить "" @@ -8561,7 +8781,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Сохранить как... @@ -8569,7 +8789,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Все сохраненные представления @@ -8577,7 +8797,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Выделено документов: из 1} other {Выделено документов: из }} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Один документ} other { документа(ов)}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (отфильтровано) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,7 +8833,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Ошибка при загрузке документов @@ -8621,7 +8841,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Сортировать по ASN @@ -8629,11 +8849,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8649,7 +8869,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Сортировать по корреспонденту @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Сортировать по заголовку @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Сортировать по владельцу @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Сортировать по заметкам @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Сортировать по типу документа @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Сортировать по пути хранения @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Сортировать по дате создания @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Сортировать по дате добавления @@ -8729,7 +8949,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Сортировать по количеству страниц @@ -8737,7 +8957,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Общий доступ @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Сортировать по @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Изменить документ @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Предпросмотр документа @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Сбросить фильтры / выбор @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Открыть первый [выбранный] документ @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Предыдущая страница @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Следующая страница @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Представление "" успешно сохранено. @@ -8829,7 +9049,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Не удалось сохранить представление "". @@ -8837,7 +9057,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Представление "" успешно создано. @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Название и содержимое @@ -8861,7 +9081,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Тип файла @@ -8869,7 +9089,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Больше похожих @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 совпадает с @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 не заполнено @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 не является пустым @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 больше чем @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 меньше чем @@ -8917,7 +9137,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Корреспондент: @@ -8925,7 +9145,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Без корреспондента @@ -8933,7 +9153,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Тип документа: @@ -8941,7 +9161,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Без типа документа @@ -8949,7 +9169,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Путь хранения: @@ -8957,7 +9177,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Без пути хранения @@ -8965,7 +9185,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Тег: @@ -8973,7 +9193,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Без тегов @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Запрос пользовательских полей @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Название: @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 Архивный номер: @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Владелец: @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Владелец не в: @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Без владельца @@ -9157,7 +9377,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 корреспондент @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 корреспонденты @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Последний использованный @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Вы действительно хотите удалить этого корреспондента ""? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Фильтр документов () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 тип документа @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 типы документов @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Вы действительно хотите удалить этот тип документа: ""? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ Отключено + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Просмотреть обработанную почту + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Нет заданных почтовых правил. @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Ошибка при получении учетных записей почты @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Ошибка при получении почтовых правил @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Аутентификация OAuth2 прошла успешно @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 Ошибка аутентификации OAuth2, подробности в журналах @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Учётная запись "" сохранена. @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Ошибка при сохранении учетной записи. @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Подтвердите удаление учётной записи почты @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Это действие навсегда удалит эту учётную запись. @@ -9477,7 +9705,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Удалён почтовый аккаунт "" @@ -9485,7 +9713,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Ошибка при удалении почтового аккаунта "". @@ -9493,7 +9721,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Обработка почтового аккаунта "" @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Ошибка при обработке почтового аккаунта "" @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Сохранено правило "". @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Ошибка при сохранении правила. @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Правило "" включено. @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Правило "" отключено. @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Ошибка при переключении правила "". @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Подтвердите удаление почтового правила @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Это действие навсегда удалит это почтовое правило. @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Удалено почтовое правило "" @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Ошибка при удалении почтового правила "". @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Права доступа обновлены @@ -9589,14 +9817,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Ошибка обновления прав доступа + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Нет обработанных email сообщений. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Полученный + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Обработано + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Обработанная почта удалена + Filter by: @@ -9661,19 +9929,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {} few { всего } many { всего }=1 {Один } other { всего }} @@ -9681,7 +9949,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9957,11 @@ Автоматически - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Отсутствует - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Успешно создано . @@ -9713,7 +9969,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Произошла ошибка во время создания . @@ -9721,7 +9977,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Успешно обновлено: "". @@ -9729,7 +9985,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Произошла ошибка при сохранении . @@ -9737,7 +9993,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Связанные документы не будут удалены. @@ -9745,7 +10001,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Ошибка при удалении элемента @@ -9753,7 +10009,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Права доступа успешно обновлены @@ -9761,7 +10017,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Эта операция окончательно удалит все объекты. @@ -9769,7 +10025,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Объекты успешно удалены @@ -9777,7 +10033,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Ошибка при удалении объектов @@ -9865,7 +10121,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 путь к хранилищу @@ -9873,7 +10129,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 пути хранения @@ -9881,7 +10137,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Вы действительно хотите удалить путь до хранилища данных ""? @@ -9889,7 +10145,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 тег @@ -9897,7 +10153,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 теги @@ -10179,7 +10435,7 @@ src/app/data/custom-field.ts 55 - Long Text + Длинный текст Search score diff --git a/src-ui/src/locale/messages.sk_SK.xlf b/src-ui/src/locale/messages.sk_SK.xlf index 8409769dd..57a7ac9b0 100644 --- a/src-ui/src/locale/messages.sk_SK.xlf +++ b/src-ui/src/locale/messages.sk_SK.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Zavrieť @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Predchádzajúci @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Ďalší @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Predchádzajúci mesiac @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Nasledujúci mesiac @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zavrieť @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vyberte mesiac @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Hodín @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Vyberte rok @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minúty @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Prvý @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Navýšiť hodiny @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Predchádzajúci @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Znížiť hodiny @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ďalší @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Navýšiť minúty @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Posledný @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Znížiť minúty @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekundy @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Navýšiť sekundy @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Znížiť sekundy @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumenty @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Nastavenia @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Enable @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logy @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Načítava sa... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + What's this? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Rozšírené vyhľadávanie @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Pri ukladaní nastavení sa vyskytla chyba. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Súborové úlohy @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Zrušiť @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Odstrániť vybrané @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Odstrániť všetky @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Potvrdenie odstránenia @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 v poradí @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 prebieha @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 dokončené @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 neúspešné @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Kôš @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Odstrániť vybrané @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Potvrdiť vymazanie @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Používatelia a skupiny @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Heslo bolo zmenené, ihneď prebehne odhlásenie. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Uložený používateľ . @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Chyba pri ukladaní používateľa. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Potvrdenie odstránenia účtu @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Táto operácia trvalo odstráni používateľský účet. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Uložená skupina . @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Chyba pri ukladaní skupiny. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Potvrdenie odstránenia skupiny @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Táto operácia trvalo odstráni skupinu. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentácia @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Uložené zobrazenia @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Otvorené dokumenty @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Zavrieť všetky @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Spravovať @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 E-mail @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administrácia @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfigurácia @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 je dostupný. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klikni pre zobrazenie. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx môže automaticky kontrolovať aktualizácie @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Ako to funguje? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Aktualizácia je k dispozícii @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Pri ukladaní nastavení vyhľadávania aktualizácií sa vyskytla chyba. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Vymazať @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Potvrdenie @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Potvrdiť @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Všetko @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - teraz - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Pridané + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + teraz + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritmus porovnávania @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Vzor porovnania @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Nerozlišuje veľké a malé písmená @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Priradiť typ dokumentu @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Priradiť odosielateľa @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Chyba @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Cesta @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Farba + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Štítok schránky @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Štítky schránky sú všetkým spracovaným dokumentom priradené automaticky. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Vytvoriť nový štítok @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Upraviť štítok @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-mail @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Vytvoriť nový účet používateľa @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Upraviť účet používateľa @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Odstrániť typy dokumentov @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Odstrániť cesty k úložisku @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nepriradené @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Návrhy: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Pridať položku @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Pridať štítok @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtrovať dokumenty s týmito štítkami @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrovať podľa odosielateľa @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtrovať podľa typu dokumentu @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtrovať podľa cesty k úložisku @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Áno @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nie @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Strana @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Znovu spracovať @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Chyba pri získavaní metadát @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Chyba pri získavaní odporúčaní. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Chyba pri ukladaní dokumentu @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Potvrdenie opakovaného spracovania @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Operácia opakovaného spracovania súboru „“ bude spustená na pozadí. Pre zobrazenie nového obsahu zatvorte a znova otvorte alebo načítajte tento dokument po dokončení operácie. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Vybrať: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Upraviť: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Zahrnúť: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" a "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' a "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Potvrdiť priradenie štítkov @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Táto akcia pridá štítok "" vybraným dokumentom. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Táto akcia pridá štítky vybraným dokumentom. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Táto akcia odstráni štítok z vybraným dokumentom. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Táto akcia odstráni štítky z vybraných dokumentov. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Táto akcia pridá štítky a odstráni štítky z vybraných dokumentov. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Potvrdiť priradenie odosielateľa @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Táto akcia priradí odosielateľa "" vybraných dokumentov. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Táto akcia odstráni odosielateľa z vybraných dokumentov. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Potvrdiť priradenie typu dokumentu @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Táto akcia priradí typ dokumentu "" vybranému dokumentu(-om). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Táto akcia odstráni typ dokumentu z vybraných dokumentov. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Potvrdiť cestu k úložisku @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Táto akcia priradí cestu k úložisku "" vybraným dokumentom. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Táto akcia odstráni cestu k úložisku z vybraných dokumentov. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrovať podľa štítku @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Nevybrať žiadne @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Vybrať stránku @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Vybrať všetko - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + Žiadny Sort src/app/components/document-list/document-list.component.html - 48 + 68 Zoradiť @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Zobrazenia @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Uložiť "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Uložiť ako... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Vybrané z jedného dokumentu} other {Vybrané z z dokumentov}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Jeden dokument} other { dokumenty}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrované) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Chyba počas načítavania dokumentov @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Zoradiť podľa ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Zoradiť podľa korešpondentov @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Zoradiť podľa názvu @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Zoradiť podľa vlastníka @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Zoradiť podľa poznámky @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Zoradiť podľa typu dokumentu @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Zoradiť podľa cesty k úložisku @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Zoradiť podľa dátumu vytvorenia @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Zoradiť podľa dátumu pridania @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Upraviť dokument @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Pohľad "" úspešne uložený. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Pohľad "" úspešne vytvorený. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Názov & obsah @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Podobné @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 rovná sa @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 je prázdny @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 nie je prázdny @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 väčšie ako @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 menšie ako @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Nepriradené @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Nepriradené @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Nepriradené @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Nepriradené @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Názov: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Vlastník: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Vlastník nie je: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Bez vlastníka @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 korešpondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 korešpondenti @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Naposledy použité @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Naozaj chcete vymazať korešpondenta""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 typ dokumentu @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 typy dokumentov @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Naozaj chcete vymazať typ dokumentu ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Nie sú definované e-mailové pravidlá. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Uložený účet . @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Chyba pri ukladaní účtu. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Potvrdenie odstránenia emailu @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Táto operácia trvalo odstráni tento emailový účet. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Spracovávanie účtu pošty „ @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Uložené pravidlo . @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Chyba pri ukladaní pravidla. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Potvrdenie odstránenia emailového pravidla @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Táto operácia trvalo odstráni toto emailové pravidlo. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Jeden } other { celkovo }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automaticky - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Žiadny - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Úspešne vytvorený . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Chyba pri vytváraní . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Chyba pri ukladaní . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 cesta k úložisku @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 cesty k úložisku @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Naozaj chcete odstrániť cestu k úložisku ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 štítok @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 štítky diff --git a/src-ui/src/locale/messages.sl_SI.xlf b/src-ui/src/locale/messages.sl_SI.xlf index e381da2d1..6443ebde9 100644 --- a/src-ui/src/locale/messages.sl_SI.xlf +++ b/src-ui/src/locale/messages.sl_SI.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Zapri @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Prejšnji @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Naslednji @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Prejšnji mesec @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Naslednji mesec @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zapri @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Izberi mesec @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ura @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Izberi leto @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuta @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Prvi @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Povečanje ur @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Prejšnji @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zmanjšanje ur @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Naslednja @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Povečanje minut @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zadnji @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zmanjšanje minut @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekunde @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Povečanje sekund @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zmanjšanje sekund @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumenti @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Nastavitve @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Omogoči @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Dnevniki @@ -742,11 +742,35 @@ Preglejte dnevniške datoteke za preverjanje aplikacije in e-pošte. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Prikaži + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + vrstice + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Nalaganje... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Skoči na konec + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Kaj je to? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Napredno iskanje @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Napaka pri pridobivanju uporabnikov @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Napaka pri pridobivanju skupin @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Prišlo je do napake ob shranjevanju nastavitev. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Datotečne naloge @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Opusti @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Rezultat @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Opusti izbrano @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Opusti vse @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Potrdi Opusti vse @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Opustite vsa opravila? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Napaka pri opuščanju opravil + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Napaka pri opustitvi opravila + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 čaka @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 začeto @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 končano @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 neuspešno @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Smetnjak @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Izbriši izbrane @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Potrdi brisanje @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Uporabniki & Skupine @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Geslo je bilo spremenjeno, kmalu boste za trenutek odjavljeni. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Shranjen uporabnik "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Napaka pri shranjevanju uporabnika. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Potrdi izbris uporabniškega računa @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Ta operacija bo trajno izbrisala ta uporabniški račun. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Uporabnik "" je izbrisan @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Napaka pri brisanju uporabnika "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Shranjena skupina "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Napaka pri shranjevanju skupine. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Potrdi izbris skupine @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Ta operacija bo trajno izbrisala to skupino. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Skupina "" je izbrisana @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Napaka pri brisanju skupine "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentacija @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Shranjeni pogledi @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Odpri dokumente @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Zapri vse @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Upravljaj @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Pošta @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administracija @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfiguracija @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 je na voljo. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klikni za ogled. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx lahko samodejno preveri za posodobitve @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Kako to deluje? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Posodobitev na voljo @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Posodobljeni pogledi v stranski vrstici @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Napaka pri posodabljanju pogledov v stranski vrstici @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Prišlo je do napake ob shranjevanju nastavitev za pregled posodobitev. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Počisti @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Potrditev @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Potrdi @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Resnično @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Neresnično @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Išči dokumente ... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Vse @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Ne @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Dodaj poizvedbo @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Dodaj izraz @@ -3758,18 +3830,6 @@ Relativni datumi - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - zdaj - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Dodano + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + zdaj + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 V 1 tednu @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 V 1 mesecu @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 V 3 mesecih @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 V 1 letu @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 To leto @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Ta mesec @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Včeraj + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Prejšnji teden + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Prejšnji mesec + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Prejšnje četrtletje + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Prejšnje leto + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritem ujemanja @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Vzorec ujemanja @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Brez razlikovanje velikosti črk @@ -3982,19 +4082,11 @@ Dodaj možnost - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Opozorilo: obstoječi primerki tega polja bodo po urejanju možnosti tukaj ohranili svoj trenutni indeks vrednosti (npr. možnost št. 1, št. 2, št. 3) - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Privzeta valuta @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-mestna koda valute @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Uporabi lokalizacijo @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Dodeli vrsto dokumenta @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Dodeli dopisnika @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Napaka @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Pot @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Barva + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Nadrejeno + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Oznaka nabiralnika @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Oznake nabiralnika se samodejno dodelijo vsem dodanim dokumentom. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Ustvari novo oznako @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Uredi oznako @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-pošta @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Dvojno preverjanje pristnosti @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Onemogočite dvojno preverjanje pristnosti @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Ustvari nov uporabniški račun @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Uredi uporabniški račun @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Topp deaktiviran @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Deaktivacija Totp ni uspela @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Vrstra sprožilca @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Nastavite načrtovani odmik sprožilca in katero datumsko polje želite uporabiti. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Izravnalni dnevi @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Pozitivne vrednosti se bodo sprožile po datumu, negativne vrednosti pa pred njim. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Glede na @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Polje po meri @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Polje po meri za uporabo za datum. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Ponavljajoče se @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Sprožilec se ponavlja. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Ponavljajoči se intervalni dnevi @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Sprožilec ponovite vsakih n dni. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Sprožilec za dokumente, ki ustrezajo vsem spodnjim kriterijem. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtriraj imena datotek @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Uporabi za dokumente, ki ustrezajo temu imenu datoteke. Dovoljeni so nadomestni znaki, kot sta *.pdf ali *račun*. Neobčutljivo na velikost črk. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtriraj vire @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtriraj pot - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Uporabi za dokumente, ki ustrezajo tej poti. Možna uporaba * nadomestnega znaka. Normalizirano glede na velike in male črke.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filtriraj e-poštna pravila @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Uporabi za dokumente, zajete prek tega e-poštnega pravila. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Algoritem za ujemanje vsebine @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Vzorec za ujemanje vsebine - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Vsebuje katero koli izmed oznak + Napredni filtri - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Vsebuje dopisnika + Dodaj filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Vsebuje vrsto dokumenta + Ni definiranih naprednih filtrov poteka dela. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Dokončajte konfiguracijo poizvedbe po polju po meri Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Tip akcije @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Dodeli naslov @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Lahko vključuje nekaj vzorčnih vrednosti, preverite <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>dokumentacijo</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Dodeli oznake @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Dodeli pot shrambe @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Dodeli polja po meri @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Določi lastnika @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Dodeli dovoljenje za vpoglede @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Dodeli dovoljenje za urejanje @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Odstrani oznake @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Odstrani vse @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Odstrani dopisnike @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Odstrani vrste dokumentov @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Odstrani poti do shrambe @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Odstrani polja po meri @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Odstrani lastnike @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Odstrani dovoljenja @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Ogled dovoljenj @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Uredi dovoljenja @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Zadeva e-pošte @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Telo e-pošte @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Prejemniki e-pošte @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Priloži dokument @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 URL spletnega kavlja @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Uporabite parametre za telo spletnega kavlja @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Pošlji koristni delež spletnega kavlja kot JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Parametri spletnega kavlja @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Telo spletnega kavlja @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Glave spletnega kavlja @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Vključi dokument @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Zajemalna mapa @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API prenos @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Pridobi e-pošto @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Spletni uporabniški vmesnik @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Polje po meri @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Obdelava pričeta @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Dokument dodan @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Dokument posodobljen @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Načrtovano @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Dodelitev @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Odstranitev @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Spletni kavelj + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Ima katero koli od teh oznak + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Ima vse te oznake + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Nima teh oznak + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Vsebuje dopisnika + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Nima dopisnikov + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Vsebuje vrsto dokumenta + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Nima vrst dokumentov + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Ima pot za shranjevanje + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Nima poti za shranjevanje + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Ujema se poizvedba polja po meri + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Ustvari nov proces @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Uredi proces + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Pošlji dokument po e-pošti} other {Pošlji dokumente }} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 E-poštni naslov(i) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Zadeva @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Sporočilo @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Uporabi arhivsko različico @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Pošlji e-pošto - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Dokument po e-pošti + Nekateri e-poštni strežniki lahko zavrnejo sporočila z velikimi prilogami. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 E-pošta poslana + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Napaka pri pošiljanju dokumentov po e-pošti + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Ni dodeljeno @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Odpri filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Predlogi: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Dodaj vnos @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Dodaj oznako @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Odstrani oznako @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtriraj dokumente s temi oznakami @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Preberite več @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Skenirajte kodo QR z aplikacijo za preverjanje pristnosti in nato vnesite spodnjo kodo @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Skrivnost overitelja @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 To skrivnost lahko shranite in jo uporabite za poznejšo ponovno namestitev aplikacije za preverjanje pristnosti. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Koda @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Kode za obnovitev se ne bodo več prikazale, zato jih shranite. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Kopiraj kode @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Elektronska naslova se morata ujemati @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Gesli se morata ujemati @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profil uspešno posodobljen @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Napaka pri shranjevanju profila @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Napaka pri generiranju avtorizacijskega žetona @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Napaka pri odstranjevanju računa družabnega omrežja @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Napaka pri pridobivanju nastavitev TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP je bil uspešno aktiviran @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Napaka pri aktiviranju TOTP-ja @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP je bil uspešno deaktiviran @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Napaka pri deaktiviranju TOTP-ja @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtriraj po dopisnikih @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtriraj po vrsti dokumenta @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtriraj po poti shrambe @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Da @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ne @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Stran @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Ponovno procesiraj @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Natisni More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 Urejevalnik PDF @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Napaka pri pridobivanju metapodatkov @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Napaka pri pridobivanju priporočil. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Dokument "" je bil uspešno shranjen. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Napaka pri shranjevanju dokumenta "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Napaka pri shranjevanju dokumenta @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Ali res želite dokument "" premakniti v smetnjak? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Dokumente je mogoče obnoviti pred dokončnim izbrisom. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Premakni v smetnjak @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Napaka pri brisanju dokumenta @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Potrdi vnovično procesiranje @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 To dejanje bo dokončno poustvarilo arhivsko datoteko za izbran dokument. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Arhivska datoteka bo poustvarjena s trenutnimi nastavitvami. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 V ozadju se bo začel postopek ponovne obdelave za »«. Po končanem postopku zaprite in ponovno odprite ali ponovno naložite ta dokument, da si ogledate novo vsebino. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Napaka pri izvajanju operacije @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Napaka pri prenosu dokumenta @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Prileganje strani @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 Urejanje PDF "" se bo začelo v ozadju. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Napaka pri urejanju PDF @@ -7850,27 +8066,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Tiskanje ni uspelo. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Napaka pri nalaganju dokumenta za tiskanje. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Pri nalaganju datoteke tiff je prišlo do napake: @@ -7882,19 +8098,11 @@ Ni najdenih vnosov. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Izberi: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Uredi: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Polja po meri @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filtriraj polja po meri @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Nastavi vrednosti @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Zavrti @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Združi @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Vključi: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Arhivirane datoteke @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Izvirne datoteke @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Uporaba formatiranega imena datoteke @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Napaka pri izvajanju obsežne operacije @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" in "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' in "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Potrdite dodelitev oznak @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Ta operacija bo dodala oznako "" izbranemu dokumentu . @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Ta operacija bo dodala oznake na izbrane dokumente. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Ta operacija bo odstranila oznako "" iz izbranega dokumenta(ov). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Ta operacija bo odstranila oznake iz izbranih dokumentov. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Ta operacija bo dodala oznake in odstranila oznake na izbranih dokumentih. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Potrdite dopisnika @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Ta operacija bo dodelila ustrezniega dopisnika "" izbranemu dokumentu(om). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Ta operacija bo odstranila dopisnika iz izbranih dokumentov. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Potrdite dodelitev vrste dokumenta @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Ta operacija bo dodelila vrsto dokumenta "" izbranim dokumentom. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Ta operacija bo odstranila vrsto dokumenta iz izbranih dokumentov. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Potrdite dodelitev oznak poti @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Ta operacija bo dodelila pot shranjevanja "" v izbran dokument/e. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Ta operacija bo odstranila pot shranjevanja iz izbranih dokumentov. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Potrdi dodelitev polja po meri @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 To dejanje bo dodalo polje na izbranih dokumentov. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 To dejanje bo dodalo polja na izbranih dokumentov. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 To dejanje bo odstranilo polje iz izbranih dokumentov. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 To dejanje bo odstranilo polja iz izbranih dokumentov. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 To dejanje bo dodalo polja ter izbrisalo polja na izbranih dokumentov. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Premakni izbranih dokumentov v smetnjak? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 To dejanje bo dokončno poustvarilo arhivske datoteke za izbranih dokumentov. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Arhivske datoteke bodo poustvarjene s trenutnimi nastavitvami. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Potrdi vrtenje @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 To dejanje bo dokončno zavrtelo izvirne različice dokumentov. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Potrdi združevanje @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 To dejanje bo združilo izbranih dokumentov v nov dokument. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Združeni dokumenti bodo postavljeni v čakalno vrsto za obdelavo. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Polja po meri so posodobljena. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Napaka pri posodabljanju polj po meri. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtriraj po oznakah @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Nič ne izberite @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Izberite stran @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Izberite vse - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Izberite: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Prikaži + + src/app/data/matching-model.ts + 45 + + Brez Sort src/app/components/document-list/document-list.component.html - 48 + 68 Razvrsti @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Pogledi @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Shrani "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Shrani kot... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Vsi shranjeni pogledi @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Izbrano enega dokumenta} other {Izbrano od dokumentov}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Dokument} other { dokumentov}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrirano) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Napaka pri nalaganju dokumentov @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Razvrsti po ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Razvrsti po dopisniku @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Razvrsti po naslovu @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Razvrsti po lastniku @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Razvrsti po opombah @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Razvrsti po vrsti dokumenta @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Razvrsti po poti shrambe @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Razvrsti po datumu nastanka @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Razvrsti po dodanem datumu @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Razvrsti po številu strani @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Deljeno @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Razvrsti po @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Uredi dokument @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Predogled dokumenta @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Ponastavi filtre / izbor @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Odpri prvi [izbran] dokument @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Prejšnja stran @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Naslednja stran @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Pogled »" je uspešno shranjen. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Shranjevanje pogleda "" ni uspelo. @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Pogled »" je bil uspešno ustvarjen. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Naslov & vsebina @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Vrsta datoteke @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Bolj podobno @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 je enako @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 je prazno @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 ni prazno @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 večje kot @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 manj kot @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Dopisnik: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Brez dopisnika @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Vrsta dokumenta: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Brez vrste dokumenta @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Pot shranjevanja: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Brez poti shrambe @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Oznaka: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Brez kakršne koli oznake @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Poizvedba po poljih po meri @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Naslov: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Lastnik: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Lastnika ni v: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Brez lastnika @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 dopisnik @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 dopisniki @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Nazadnje uporabljen @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Ali res želite izbrisati dopisnika ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filtriraj dokumente () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 vrsta dokumenta @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 vrste dokumentov @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Ali res želite izbrisati vrsto dokumenta ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Onemogočeno + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Ogled obdelane pošte + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 E-poštni pravila niso nastavljena. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Napaka pri pridobivanju e-poštnih računov @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Napaka pri pridobivanju e-poštnih pravil @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 overitev uspešna @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 overitev neuspešna, preverite dnevnik za podrobnosti @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Shranjen račun "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Napaka pri shranjevanju računa. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Potrdi izbris e-poštnega računa @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Ta operacija bo trajno izbrisala ta e-poštni račun. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Izbrisan e-poštni račun "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Napaka pri brisanju poštnega računa "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Obdelava poštnega računa "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Napaka pri obdelavi poštnega računa "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Shranjeno pravilo "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Napaka pri shranjevanju pravila. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Pravilo "" omogočeno. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Pravilo "" onemogočeno. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Napaka pri preklapljanju pravila "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Potrdi izbris e-poštnega pravila @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Ta operacija bo trajno izbrisala to e-poštno pravilo. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Izbrisano pravilo za pošto"" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Napaka pri brisanju pravila za pošto "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Dovoljenja posodobljena @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Napaka pri posodabljanju dovoljenj + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Obdelana pošta za + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Ni najdenih obdelanih e-poštnih sporočil. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Prejeto + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Obdelano + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Obdelana pošta je bila izbrisana + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Eden } other { skupno }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Samodejno - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Brez - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Uspešno ustvarjeno . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Prišlo je do napake med ustvarjanjem . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Datoteka "" je bila uspešno posodobljena. @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Prišlo je do napake med shranjevanjem . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Povezani dokumenti ne bodo izbrisani. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Napaka med brisanjem elementa @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Dovoljenja so bila uspešno posodobljena @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 To dejanje bo dokončno izbrisalo vse elemente. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Elementi uspešno izbrisani @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Napaka pri brisanju elementov @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 pot do shrambe @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 poti do shrambe @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Ali res želite izbrisati pot shranjevanja ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 oznaka @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 oznake @@ -10180,7 +10436,7 @@ src/app/data/custom-field.ts 55 - Long Text + Dolgo besedilo Search score diff --git a/src-ui/src/locale/messages.sr_CS.xlf b/src-ui/src/locale/messages.sr_CS.xlf index 1d61bda75..8e1777ae0 100644 --- a/src-ui/src/locale/messages.sr_CS.xlf +++ b/src-ui/src/locale/messages.sr_CS.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Zatvori @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Prethodni @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Sledeći @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Prethodni mesec @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Naredni mesec @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Zatvori @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Odaberi mesec @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Časovi @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Odaberi godinu @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuta @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Prvi @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Povećaj sate @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Prethodni @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Smanji sate @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sledeći @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Povećaj minute @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Poslednji @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Smanji minute @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekundi @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Povećaj sekunde @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Smanji sekunde @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokumenti @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Podešavanja @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Omogući @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logovi @@ -742,11 +742,35 @@ Pregledajte logove za aplikaciju i za proveru imejla. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Prikaži + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + linije + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Učitavanje... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Skoči na dno + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Šta je ovo? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Napredna pretraga @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Greška prilikom učitavanja korisnika @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Greška prilikom učitavanja grupa @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Došlo je do greške prilikom čuvanja podešavanja. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Obrada dokumenata @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Odbaci @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Rezultat @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Odbaci selektovano @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Odbaci sve @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Potvrdi odbacivanje svega @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Odbaci sve zadatke? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Greška pri odbacivanju zadataka + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Greška pri odbacivanju zadatka + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 čekanje @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 pokrenuto @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 završeno @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 neuspešno @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Otpad @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Izbriši odabrano @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Potvrdi brisanje @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Korisnici i Grupe @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Lozinka je promenjena, bićete odjavljeni trenutno. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Sačuvan korisnik "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Greška prilikom čuvanja korisnika. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Potvrdi brisanje korisničkog naloga @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Ova operacija će trajno obrisati ovaj korisnički nalog. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Korisnik "" obrisan @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Greška prilikom brisanja korisnika "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Sačuvana grupa "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Greška prilikom čuvanja grupe. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Potvrdi brisanje korisničke grupe @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Ova operacija će trajno obrisati ovu korisničku grupu. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Grupa "" obrisana @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Greška prilikom brisanja grupe "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentacija @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Sačuvani pregledi @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Otvorena dokumenta @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Zatvori svе @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Upravljanje @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Imejl @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administracija @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfiguracija @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 je dostupno. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klik za prеglеd. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx može automatski da proveri da li postoje ažuriranja @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Kako ovo radi? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Dostupno jе ažuriranjе @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Prikazi bočne trake su ažurirani @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Greška pri ažuriranju prikaza bočne trake @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Došlo je do greške prilikom čuvanja podešavanja. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Očisti @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Potvrda @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Potvrdi @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Tačno @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Netačno @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Pretraži dokumenta... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Sve @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Nije @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Dodaj upit @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Dodaj izraz @@ -3758,18 +3830,6 @@ Relativni datumi - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - sada - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Dodato + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + sada + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 U roku od 1 nedelje @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 U roku od mesec dana @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 U roku od tri meseca @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 U roku od godinu dana @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Ove godine @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Ovaj mesec @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Juče + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Prethodna nedelja + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Prethodni mesec + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Prethodni kvartal + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Prethodna godina + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Algoritam podudaranja @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Obrzac podudaranja @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Neosetljivo na mala i velika slova @@ -3982,19 +4082,11 @@ Dodaj opciju - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Upozorenje: postojeće instance ovog polja zadržaće svoj trenutni indeks vrednosti (npr. opcija #1, #2, #3) nakon uređivanja opcija ovde - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Podrazumevana valuta @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Troznakovni kod valute @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Koristi lokalne postavke @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Dodeli tip dokumenta @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Dodeli korespondenta @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Grеška @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Putanja @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Boja + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Roditelj + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Oznaka prijemnog sandučeta @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Oznake prijemnog sandučeta se automatski dodeljuju svim obrađenim dokumentima. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Kreiraj novu oznaku @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Izmeni oznaku @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Imejl @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Dvofaktorska autentifikacija @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Onemogući dvofaktorsku autentifikaciju @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Kreirajte novi korisnički nalog @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Izmeni korisnički nalog @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp je deaktiviran @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Deaktivacija Totp-a neuspešna @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Tip okidača @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Podesi zakazano odlaganje okidača i koje polje datuma koristiti. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Dani za pomeranje @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Pozitivne vrednosti će biti primenjene nakon datuma, a negativne vrednosti pre. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relativno u odnosu na @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Prilagođeno polje @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Prilagođeno polje za upotrebu datuma. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Ponavljajući @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Okidač je ponavljajući. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Interval ponavljanja u danima @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Ponavljajte okidač svakih n dana. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Pokreni za dokumenta koja se poklapaju sa svim filterima navedenim u nastavku. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filtriraj ime fajla @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Primeni na dokumente koji odgovaraju ovom imenu fajla. Dozvoljeni su specijalni znakovi kao što su *.pdf ili *faktura*. Neosetljivo na velika i mala slova. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filtriraj izvore @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtriraj putanju - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Primeni na dokumenta koja se poklapaju sa ovom putanjom. Specijalni znakovi * su dozvoljeni. Obrati pažnju na velika i mala slova.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filtriraj pravilo za imejl @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Primeni na dokumentima koji se obrađuju putem ovog pravila za imejl. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Algoritam za prepoznavanje sadržaja @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Obrazac za prepoznavanje sadržaja - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Poseduje bilo koju od ovih oznaka + Napredni filteri - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Poseduje korespondenta + Dodaj filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Poseduje tip dokumenta + Nisu definisani napredni filteri toka posla. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Dovršite konfiguraciju upita prilagođenog polja. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Tip radnje @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Dodeli naslov @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Može uključivati neke placeholders, pogledaj <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>dokumentaciju</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Dodeli oznake @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Dodeli putanju skladišta @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Dodeli dodatno polje @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Dodeli vlasnika @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Dodeli dozvolu za prikaz @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Dodeli dozvolu za izmenu @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Ukloni oznake @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Ukloni sve @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Ukloni korespondente @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Ukloni tipove dokumenta @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Ukloni putanju skladištenja @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Ukloni prilagođenja polja @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Ukloni vlasnike @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Ukloni dozvole @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Pregledaj dozvole @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Izmeni dozvole @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Naslov imejla @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Telo imejla @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Primaoca imejla @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Priloži dokument @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 URL webhook-a @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Koristi parametre za telo webhook-a @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Pošalji payload webhook-a kao JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Parametri webhook-a @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Telo webhook-a @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Zaglavlja webhook-a @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Uključi dokument @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Folder za obradu @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API otpremanje @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Preuzimanje imejlova @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Veb korisnički interfejs @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Prilagođeno polje @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Obrada započeta @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Dokument dodat @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Dokument ažuriran @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Zakazano @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Dodeljivanje @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Uklanjanje @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Veb zakačka + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Ima bilo koju od ovih oznaka + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Ima sve ove oznake + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Nema ove oznake + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Poseduje korespondenta + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Nema dopisnike + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Poseduje tip dokumenta + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Nema tipove dokumenata + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Ima putanju za skladištenje + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Nema putanje za skladištenje + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Podudara se sa upitom prilagođenog polja + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Kreiraj novi radni tok @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Izmeni radni tok + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {imejl dokument} other {imejl dokumenti}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Imejl adrese @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Naslov @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Poruka @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Koristi arhivsku verziju @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Pošalji imejl - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Imejl dokument + Neki imejl serveri mogu odbiti poruke sa velikim prilozima. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Imejl poslat + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Greška pri slanju dokumenata imejlom + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Nije dodeljen @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Otvori filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Sugestije: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Dodaj stavku @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Dodaj oznaku @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Ukloni oznaku @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtriraj dokumenta sa ovom oznakom @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Pročitaj više @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Skenirajte QR kod pomoću aplikacije za autentifikaciju, a zatim unesite kod ispod @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Tajna autentifikatora @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Možete sačuvati ovu tajnu i koristiti je za ponovnu instalaciju aplikacije za autentifikaciju kasnije. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Kod @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Kodovi za oporavak neće ponovo biti prikazani, obavezno ih sačuvajte. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Kopiraj kodove @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Imejlovi se moraju poklapati @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Lozinke se moraju poklapati @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profil je uspešno ažuriran @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Greška prilikom čuvanja profila @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Greška prilikom generisanja auth tokena @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Greška prilikom isključivanja naloga @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Greška pri preuzimanju TOTP podešavanja @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP je uspešno aktiviran @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Greška pri aktiviranju TOTP-a @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP je uspešno deaktiviran @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Greška pri deaktiviranju TOTP-a @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6874,7 +7090,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + WebSocket konekcija OK @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + OK Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtriraj po korespondentu @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtriraj po tipu dokumenta @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtriraj po putanji skladišta @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Da @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ne @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Strana @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Ponovo obradi @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + Štampaj More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF uređivač @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Greška pri preuzimanju metapodataka @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Greška pri preuzimanju predloga. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Dokument "" je sačuvan uspešno. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Greška prilikom čuvanja dokumenta "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Greška prilikom čuvanja dokumenta @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Da li zaista želite da premestite ovaj dokument "" u otpad? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Dokumenti se mogu obnoviti pre trajnog brisanja. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Premesti u otpad @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Greška prilikom brisanja dokumenta @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Potvrda ponovnog procesuiranja @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Ova akcija će trajno ponovo kreirati arhivski fajl za ovaj dokument. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Arhivski fajl će biti ponovo generisan sa trenutnim podešavanjima. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Operacija ponovne obrade za "" će početi u pozadini. Zatvorite i ponovo otvorite ili ponovo učitajte dokument nakon što operacija bude završena da biste videli novi sadržaj. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Greška prilikom izvršavanja operacije @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Greška prilikom preuzimanja dokumenta @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Prilagodi stranicu @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 Uređivanje PDF-a za „“ će početi u pozadini. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Greška pri izvršavanju operacije uređivanja PDF-a @@ -7850,27 +8066,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Štampanje nije uspelo. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Greška pri učitavanju dokumenta za štampanje. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Došlo je do greške prilikom učitavanja TIFF-a: @@ -7882,19 +8098,11 @@ Nema pronađenih unosa. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Izaberi: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Izmeni: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Dodatna polja @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filtriraj prilagođena polja @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Postavi vrednosti @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotiraj @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Spoji @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Uključi: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Arhivski fajlovi @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Originalni fajlovi @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Koristi formatirani naziv fajla @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Greška pri izvršavanju grupne operacije @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" i "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' i "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Potvrdi dodelu oznaka @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Ova operacija će dodati oznaku "" to na selektovan(a) dokument(a). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Ova operacija će dodati oznake na selektovan(e) dokument(e). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Ova radnja će obrisati oznaku "" iz selektovanih dokumenata. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Ova radnja će obrisati oznake iz selektovanih dokumenata. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Ova radnja će dodati oznake i ukloniti oznake na selektovanim dokumentima. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Potvrdi dodelu korespondenta @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Ova radnja će dodati korespondenta "" na selektovana dokumenta. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Ova radnja će obrisati korespondente sa selektovanih dokumenata. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Potvrdi dodelu tipa dokumenta @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Ova radnja će dodati tip dokumenta "" na selektovane dokumente. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Ova radnja će obrisati tip dokumenta sa selektovanih dokumenata. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Potvrdi dodelu putanje skladišta @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Ova radnja će dodati putanju skladišta "" na selektovane dokumente. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Ova radnja će obrisati putanju skladišta selektovanih dokumenata. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Potvrdi dodeljivanje prilagođenog polja @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Ova radnja će dodeliti prilagođena polja "" na odabranim dokumentima. @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Ova radnja će dodeliti prilagođena polja na odabrana dokumenta. @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Ova radnja će ukloniti prilagođeno polje "" iz odabranih dokumenata. @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Ova radnja će ukloniti prilagođeno polja iz odabranih dokumenata. @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Ova radnja će dodeliti prilagođena polja i ukloniti prilagođena polja na ovim odabranim dokumentima. @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Premesti odabrana dokumenta u otpad? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Ova radnja će trajno ponovo kreirati arhivske fajlove za odabranih dokumenata. @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Arhivski fajlovi će biti ponovo generisani sa trenutnim podešavanjima. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Potvrdi rotaciju @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Ova radnja će trajno rotirati originalnu verziju dokumenata. @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Potvrdi spajanje @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Ova radnje će spojiti u novi dokument. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Spojeni dokument će biti stavljen u red za obradu. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Prilagođeno polje je izmenjeno. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Greška pri izmeni prilagođenih polja. @@ -8347,7 +8555,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtriraj po oznaci @@ -8483,7 +8691,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8495,7 +8703,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Poništi sve @@ -8503,11 +8711,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Izaberi stranu @@ -8515,31 +8723,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Odaberi sve - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Odaberi: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Prikaži + + src/app/data/matching-model.ts + 45 + + Nijedan Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sortiraj @@ -8547,7 +8767,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Pregledi @@ -8555,7 +8775,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Sačuvaj "" @@ -8563,7 +8783,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Sačuvaj kao... @@ -8571,7 +8791,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Svi sačuvani prikazi @@ -8579,7 +8799,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selektovan od jednog dokumenta} other {Selektovano od dokumenata}} @@ -8587,7 +8807,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Jedan dokument} other { dokumenata}} @@ -8595,7 +8815,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrirano) @@ -8603,7 +8823,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8615,7 +8835,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Greška pri učitavanju dokumenata @@ -8623,7 +8843,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sortiraj po ASN @@ -8631,11 +8851,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8651,7 +8871,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sortiraj po korespondentu @@ -8659,7 +8879,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sortiraj po naslovu @@ -8667,7 +8887,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sortiraj po vlasniku @@ -8675,7 +8895,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8691,7 +8911,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sortiraj po beleškama @@ -8699,7 +8919,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sortiraj po tipu dokumenata @@ -8707,7 +8927,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sortiraj po putanji skladišta @@ -8715,7 +8935,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sortiraj po datumu kreiranja @@ -8723,7 +8943,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sortiraj po datumu dodavanja @@ -8731,7 +8951,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sortiraj po broju strana @@ -8739,7 +8959,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8759,7 +8979,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Deljeno @@ -8767,7 +8987,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Složi prema @@ -8775,7 +8995,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Uredi dokument @@ -8783,7 +9003,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Pregledaj dokument @@ -8791,7 +9011,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Resetuj filtere / selekciju @@ -8799,7 +9019,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Otvorite prvi [selected] dokument @@ -8807,7 +9027,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Prethodna stranica @@ -8815,7 +9035,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Sledeća stranica @@ -8823,7 +9043,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Prikaz "" je uspešno sačuvan. @@ -8831,7 +9051,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Nije moguće sačuvati prikaz "". @@ -8839,7 +9059,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Prikaz "" je uspešno kreiran. @@ -8855,7 +9075,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Naslov i sadržaj @@ -8863,7 +9083,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Vrsta fajla @@ -8871,7 +9091,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Slično @@ -8879,7 +9099,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 jednako @@ -8887,7 +9107,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 je prazan @@ -8895,7 +9115,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 nije prazan @@ -8903,7 +9123,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 veće od @@ -8911,7 +9131,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 manje od @@ -8919,7 +9139,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Korespondent: @@ -8927,7 +9147,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Bez korespondenta @@ -8935,7 +9155,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Vrsta dokumenta: @@ -8943,7 +9163,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Bez tipa dokumenta @@ -8951,7 +9171,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Putanja skladišta: @@ -8959,7 +9179,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Bez putanje skladišta @@ -8967,7 +9187,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Oznaka: @@ -8975,7 +9195,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Bez oznake @@ -8983,7 +9203,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Upit za prilagođeno polje @@ -8991,7 +9211,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Naslov: @@ -8999,7 +9219,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9007,7 +9227,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Vlasnik: @@ -9015,7 +9235,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Vlasnik nije: @@ -9023,7 +9243,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Bez vlasnika @@ -9159,7 +9379,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 korespondent @@ -9167,7 +9387,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 korespondenti @@ -9175,7 +9395,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Poslednje korišćenje @@ -9183,7 +9403,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Da li stvarno želite da obrišete ovog korespondenta ""? @@ -9219,19 +9439,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filtriraj dokumenta () @@ -9279,7 +9499,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 tip dokumenta @@ -9287,7 +9507,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 tipovi dokumenta @@ -9295,7 +9515,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Da li stvarno želite da obrišite ovaj tip dokumenta ""? @@ -9395,7 +9615,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9403,11 +9623,19 @@ Onemogućeno + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + Pogledajte obrađenu poštu + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Nema definisanih imejl pravila. @@ -9415,7 +9643,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Greška prilikom učitavanja imejl naloga @@ -9423,7 +9651,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Greška prilikom učitavanja imejl pravila @@ -9431,7 +9659,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Uspešna OAuth2 autentifikacija @@ -9439,7 +9667,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 autentifikacija nije uspela, pogledajte logove za detalje @@ -9447,7 +9675,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Sačuvan nalog "". @@ -9455,7 +9683,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Greška prilikom čuvanja naloga. @@ -9463,7 +9691,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Potvrdi brisanje imejl naloga @@ -9471,7 +9699,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Ova radnja će trajno obrisati ovaj imejl nalog. @@ -9479,7 +9707,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Obrisani imejl nalog "" @@ -9487,7 +9715,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Greška prilikom brisanja imejl naloga "". @@ -9495,7 +9723,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Obrada imejl naloga "" @@ -9503,7 +9731,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Greška prilikom obrade imejl naloga "" @@ -9511,7 +9739,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Sačuvano pravilo "". @@ -9519,7 +9747,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Greška prilikom čuvanja pravila. @@ -9527,7 +9755,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Pravilo "" omogućeno. @@ -9535,7 +9763,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Pravilo "" onemogućeno. @@ -9543,7 +9771,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Greška prilikom prebacivanja pravila "". @@ -9551,7 +9779,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Potvrdi brisanje imejl pravila @@ -9559,7 +9787,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Ova operacija će trajno obrisati ovo imejl pravilo. @@ -9567,7 +9795,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Obrisano imejl pravilo "" @@ -9575,7 +9803,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Greška prilikom brisanja imejl pravila "". @@ -9583,7 +9811,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Dozvole su ažurirane @@ -9591,14 +9819,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Greška prilikom izmene dozvola + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Обрађена пошта за + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + Nije pronađena nijedna obrađena imejl poruka. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Primljeno + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Obrađeno + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Obrađena pošta je obrisana + Filter by: @@ -9663,19 +9931,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Jedan } other { ukupno }} @@ -9683,7 +9951,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9691,23 +9959,11 @@ Automatski - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Nijedan - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Uspešno kreirano . @@ -9715,7 +9971,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Greška se pojavilia prilikom kreiranja . @@ -9723,7 +9979,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Uspešno ažuriranje za "". @@ -9731,7 +9987,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Greška se pojavilia prilikom čuvanja . @@ -9739,7 +9995,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Povezani dokumenti neće biti obrisani. @@ -9747,7 +10003,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Greška prilikom brisanja elementa @@ -9755,7 +10011,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Dozvole su uspešno ažurirane @@ -9763,7 +10019,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Ova operacija će trajno obrisati sve objekte. @@ -9771,7 +10027,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objekti su uspešno obrisani @@ -9779,7 +10035,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Greška prilikom brisanja objekata @@ -9867,7 +10123,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 putanja skladišta @@ -9875,7 +10131,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 putanja skladišta @@ -9883,7 +10139,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Da li stvarno želite da obrišete putanju skladišta ""? @@ -9891,7 +10147,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 oznaka @@ -9899,7 +10155,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 oznake @@ -10181,7 +10437,7 @@ src/app/data/custom-field.ts 55 - Long Text + Dugi tekst Search score diff --git a/src-ui/src/locale/messages.sv_SE.xlf b/src-ui/src/locale/messages.sv_SE.xlf index a396cd650..4c31d4932 100644 --- a/src-ui/src/locale/messages.sv_SE.xlf +++ b/src-ui/src/locale/messages.sv_SE.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Stäng @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Föregående @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Nästa @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Föregående månad @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Nästa månad @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Stäng @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Välj månad @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Timmar @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Välj år @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minuter @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Första @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Öka timmar @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Föregående @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minska timmar @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Nästa @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Öka minuter @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sista @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minska minuter @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sekunder @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Öka sekunder @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Minska sekunder @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Dokument @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Inställningar @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Aktivera @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Loggar @@ -742,11 +742,35 @@ Granska loggfilerna för programmet och för e-postkontroll. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Visa + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Laddar... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Vad är detta? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1176,7 +1216,7 @@ src/app/components/admin/settings/settings.component.html 202 - Only applies to the Paperless-ngx PDF viewer. + Gäller endast för Paperless-ngx PDF-läsaren. Automatically remove inbox tag(s) on save @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Avancerad sökning @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1384,7 +1424,7 @@ src/app/components/admin/settings/settings.component.html 273 - Default Owner + Standardägare Objects without an owner can be viewed and edited by all users @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Kunde inte hämta användare @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Kunde inte hämta grupper @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Ett fel inträffade när inställningarna skulle sparas. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Filuppgifter @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Avvisa @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Resultat @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Avfärda markerade @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Avfärda alla @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Bekräfta avfärda alla @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 köade @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 startade @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 slutförda @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 misslyckade @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Papperskorg @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Radera markerade @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Bekräfta borttagning @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Användare & Grupper @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Lösenordet har ändrats, du kommer att tillfälligt loggas ut. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Sparade användaren "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Kunde inte spara användaren. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Bekräfta borttagning av användarkonto @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Denna åtgärd kommer att ta bort detta användarkonto permanent. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Sparade gruppen "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Kunde inte spara gruppen. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Bekräfta borttagning av användargruppen @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Denna åtgärd kommer att ta bort denna användargrupp permanent. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2864,7 +2932,7 @@ src/app/components/app-frame/app-frame.component.html 20 - by Paperless-ngx + av Paperless-ngx Logged in as @@ -2880,7 +2948,7 @@ src/app/components/app-frame/app-frame.component.html 47 - My Profile + Min profil Logout @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokumentation @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Sparade vyer @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Öppna dokument @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Stäng alla @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Hantera @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,27 +3070,27 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 120 - Document Types + Dokumenttyper Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 E-post @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Administration @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Konfiguration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 är tillgänglig. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Klicka för att visa. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx kan automatiskt söka efter uppdateringar @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Hur fungerar detta? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Uppdatering tillgänglig @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Ett fel uppstod när uppdateringskontrollen skulle sparas. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Rensa @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Bekräftelse @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Bekräfta @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Sant @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Falskt @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Alla @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Ej @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - nu - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Tillagd + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + nu + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Matchande algoritm @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Matchande mönster @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Ej skiftlägeskänsligt @@ -3982,19 +4082,11 @@ Lägga till alternativ - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Standardvaluta @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-teckens valutakod @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Tilldela dokumenttyp @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Tilldela korrespondent @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Fel @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Sökväg @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Färg + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inkorgs tagg @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inkorgtaggar tilldelas automatiskt till alla konsumerade dokument. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Skapa ny tagg @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Redigera tag @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-post @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Tvåfaktorsautentisering @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Inaktivera tvåfaktorsautentisering @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Skapa nytt användarkonto @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Redigera användare @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Tilldela titel @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Tilldelar taggar @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Tilldela sökväg för lagring @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Tilldela anpassade fält @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Tilldela ägare @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Tilldela visningsrättigheter @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Tilldela redigeringsbehörigheter @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Ta bort taggar @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Ta bort allt @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Ta bort korrespondenter @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Ta bort dokumenttyper @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Ta bort lagringssökvägar @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Tilldela anpassade fält @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Ta bort ägare @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Ta bort behörigheter @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Visa behörigheter @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Redigera behörigheter @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API uppladdning @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Hämta mail @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Konsumtion påbörjad @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Dokument tillagt @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Dokument uppdaterat @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Borttagning @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Skapa nytt arbetsflöde @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Redigera arbetsflöde + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Inte tilldelad @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Förslag: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Lägg till objekt @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Lägg till tagg @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Ta bort tagg @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filtrera dokument med dessa Taggar @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Läs mer @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Kod @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Kopiera koder @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filtrera på korrespondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filtrera efter dokumenttyp @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filtrera efter lagringsplatser @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ja @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Nej @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Sida @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Behandla igen @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Fel vid hämtning av metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Fel vid hämtning av förslag. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Kunde inte spara dokumentet @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Error deleting document @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Välj: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Redigera: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotera @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Slå ihop @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Inkludera: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" och "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' " och "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Bekräfta tilldelning av taggar @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Denna åtgärd kommer att lägga till taggen "" till valda dokument. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Den här åtgärden kommer lägga till taggarna till de valda dokumenten. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Denna åtgärd kommer att ta bort taggen "" från valda dokument. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Den här åtgärden kommer ta bort taggarna från de valda dokumenten. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Den här åtgärden kommer lägga till taggarna och ta bort taggarna de valda dokumenten. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Bekräfta korrespondenttilldelning @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Den här åtgärden kommer att tilldela korrespondenten "" till valda dokument. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Den här åtgärden kommer att ta bort korrespondenten från valda dokument. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Bekräfta tilldelning av dokumenttyp @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Den här åtgärden kommer att tilldela dokumenttypen "" till valda dokument. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Den här åtgärden kommer att ta bort dokumenttypen från valda dokument. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Bekräfta tilldelning av lagringsplats @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Den här åtgärden kommer att tilldela lagringsplatsen "" till valda dokument. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Den här åtgärden kommer att ta bort lagringsplatsen från valda dokument. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Filtrera efter tagg @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Markera ingen @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Välj sida @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Välj alla - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Visa + + src/app/data/matching-model.ts + 45 + + Ingen Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sortera @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Vyer @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Spara "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Spara som... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, one {} =1 {Vald av ett dokument} other {Vald av dokument}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, one {} =1 {Ett dokument} other { dokument}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (filtrerad) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Kunde inte läsa in dokument @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sortera efter ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sortera efter korrespondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sortera efter titel @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sortera efter ägare @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sortera efter anteckningar @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sortera efter dokumenttyp @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sortera efter lagringsplats @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sortera efter skapelsedatum @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sortera efter tilläggningsdatum @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Redigera dokument @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Vy "" sparades. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Vy "" skapades. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Titel & innehåll @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Mer som @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 är lika med @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 är tom @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 är inte tom @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 större än @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 mindre än @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Utan korrespondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Utan dokumenttyp @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Utan lagringsplats @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Utan tagg @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Titel: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Ägare: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Ägare ej i: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Utan ägare @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 korrespondent @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 korrespondenter @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Senast använd @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Vill du verkligen ta bort korrespondenten ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 dokumenttyp @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 dokumenttyper @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Vill du verkligen ta bort dokumenttypen ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Inga e-postregler har angetts. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Kunde inte hämta e-postkonton @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Kunde inte hämta e-postregler @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Sparade användaren "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Kunde inte spara användaren. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Bekräfta borttagning av e-postkonto @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Denna åtgärd kommer att ta bort detta e-postkonto permanent. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Sparade regel "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Kunde inte spara regel. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Bekräfta borttagning av e-postregel @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Denna åtgärd kommer att ta bort denna e-postregel permanent. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, one {}=1 {En } other { totalt }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Automatisk - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Ingen - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Skapade . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Kunde inte skapa . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Kunde inte spara . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 lagringsplats @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 lagringsplatser @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Vill du verkligen ta bort lagringsplatsen ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 tagg @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 taggar diff --git a/src-ui/src/locale/messages.th_TH.xlf b/src-ui/src/locale/messages.th_TH.xlf index 3ac6f1d7f..88d8b1c76 100644 --- a/src-ui/src/locale/messages.th_TH.xlf +++ b/src-ui/src/locale/messages.th_TH.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 ปิด @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 ก่อนหน้า @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 ถัดไป @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 เดือนก่อนหน้า @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 เดือนถัดไป @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ชช @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ปิด @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 เลือกเดือน @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ชั่วโมง @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 นน @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 เลือกปี @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 นาที @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 แรก @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 เพิ่มชั่วโมง @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ก่อนหน้า @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ลดชั่วโมง @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ต่อไป @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 เพิ่มนาที @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ล่าสุด @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ลดนาที @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 วว @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 วินาที @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 เพิ่มวินาที @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ลดวินาที @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 เอกสาร @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 การตั้งค่า @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Enable @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Logs @@ -742,11 +742,35 @@ Review the log files for the application and for email checking. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Show + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ กำลังโหลด... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + นี่มันอะไร? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 ค้นหาขั้นสูง @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Error retrieving users @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Error retrieving groups @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 An error occurred while saving settings. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 รายการงาน @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 ปิด @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Result @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 ล้างการเลือก @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 ละทิ้งทั้งหมด @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 ยืนยันล้างทั้งหมด @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Dismiss all tasks? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 จัดคิวแล้ว @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 เริ่มต้นแล้ว @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 เสร็จสมบูรณ์ @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 ล้มเหลว @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Trash @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Delete selected @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 ยืนยันการลบ @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 ผู้ใช้งาน & กลุ่ม @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Password has been changed, you will be logged out momentarily. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Saved user "". @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 เกิดข้อผิดพลาดในการบันทึกผู้ใช้งาน @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Confirm delete user account @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 This operation will permanently delete this user account. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Saved group "". @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 เกิดข้อผิดพลาดระหว่างบันทึกกลุ่ม @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Confirm delete user group @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 This operation will permanently delete this user group. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 เอกสารอ้างอิง @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 การค้นที่เก็บไว้ @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 เปิดเอกสาร @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 ปิดทั้งหมด @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 จัดการ @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 เมล @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 การจัดการระบบ @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Configuration @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 ใช้งานได้ @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 คลิกเพื่อดู @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx can automatically check for updates @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 ระบบนี้ทำงานยังไง? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 มีการอัพเดท @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Sidebar views updated @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Error updating sidebar views @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 An error occurred while saving update checking settings. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + ล้าง @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 การยืนยัน @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 ยืนยัน @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 True @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 False @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Search docs... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 ทั้งหมด @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Not @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Add query @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Add expression @@ -3758,18 +3830,6 @@ Relative dates - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - ตอนนี้ - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ นำเข้า + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + ตอนนี้ + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Within 1 week @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Within 1 month @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Within 3 months @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Within 1 year @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 This year @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 This month @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Yesterday + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 วิธีการจำแนก @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 รูปแบบการจับคู่ @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 ไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ @@ -3982,19 +4082,11 @@ Add option - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Default Currency @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-character currency code @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Use locale @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 กำหนดประเภทเอกสาร @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 กำหนดผู้เขียน @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + ข้อผิดพลาด @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 พาธ @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 สี + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 แท็กกล่องแรกเข้า @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Inbox tags are automatically assigned to all consumed documents. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 สร้างแท็กใหม่ @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 แก้ไขแท็ก @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + อีเมล @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Create new user account @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 แก้ไขบัญชีผู้ใช้งาน @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp deactivated @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Trigger type @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Relative to @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Custom field to use for date. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Recurring @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Trigger for documents that match all filters specified below. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Filter filename @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Filter sources @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filter path - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Filter mail rule @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Apply to documents consumed via this mail rule. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Content matching algorithm @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Content matching pattern - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Has correspondent + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Action type @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Assign title @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Assign tags @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Assign storage path @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Assign custom fields @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Assign owner @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Assign view permissions @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Assign edit permissions @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Remove tags @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Remove all @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Remove correspondents @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Remove document types @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Remove storage paths @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Remove custom fields @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Remove owners @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Remove permissions @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 View permissions @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Edit permissions @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Email subject @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Email body @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Email recipients @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Attach document @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Use parameters for webhook body @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook headers @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Include document @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Consume Folder @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API Upload @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Mail Fetch @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web UI @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Custom Field @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Consumption Started @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Document Added @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Document Updated @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Scheduled @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Assignment @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Removal @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Has correspondent + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Has document type + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Create new workflow @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Edit workflow + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Email address(es) @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Subject @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Message @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Use archive version @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Send email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Email Document + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email sent + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned ไม่กำหนด @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Open filter @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 คำแนะนำ @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths เพิ่มรายการ @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 เพิ่มแท็ก @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Remove tag @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Filter documents with these Tags @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Read more @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Code @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Copy codes @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emails must match @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Passwords must match @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profile updated successfully @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Error saving profile @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Error generating auth token @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Error disconnecting social account @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Error fetching TOTP settings @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP activated successfully @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Error activating TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP deactivated successfully @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Error deactivating TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Filter by correspondent @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Filter by document type @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Filter by storage path @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 ใช่ @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 ไม่ @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 หน้า @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Reprocess @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Error retrieving metadata @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Error retrieving suggestions. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Error saving document @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Do you really want to move the document "" to the trash? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Documents can be restored prior to permanent deletion. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Move to trash @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 เกิดข้อผิดพลาดในการลบเอกสาร @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Reprocess confirm @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 This operation will permanently recreate the archive file for this document. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 The archive file will be re-generated with the current settings. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Error executing operation @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Error downloading document @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Page Fit @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ No entries found. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - เลือก: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 แก้ไข: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Custom fields @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Filter custom fields @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Set values @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Rotate @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Merge @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 รวม: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Archived files @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Original files @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Use formatted filename @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Error executing bulk operation @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" และ "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' และ "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Confirm tags assignment @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 This operation will add the tag "" to selected document(s). @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 This operation will add the tags to selected document(s). @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 This operation will remove the tag "" from selected document(s). @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 This operation will remove the tags from selected document(s). @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 This operation will add the tags and remove the tags on selected document(s). @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Confirm correspondent assignment @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 This operation will assign the correspondent "" to selected document(s). @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 This operation will remove the correspondent from selected document(s). @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Confirm document type assignment @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 This operation will assign the document type "" to selected document(s). @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 This operation will remove the document type from selected document(s). @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Confirm storage path assignment @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 This operation will assign the storage path "" to selected document(s). @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 This operation will remove the storage path from selected document(s). @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Confirm custom field assignment @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 This operation will assign the custom field "" to selected document(s). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 This operation will assign the custom fields to selected document(s). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 This operation will remove the custom field "" from selected document(s). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 This operation will remove the custom fields from selected document(s). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 This operation will assign the custom fields and remove the custom fields on selected document(s). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Move selected document(s) to the trash? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 This operation will permanently recreate the archive files for selected document(s). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 The archive files will be re-generated with the current settings. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Rotate confirm @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 This operation will permanently rotate the original version of document(s). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Merge confirm @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 This operation will merge selected documents into a new document. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Merged document will be queued for consumption. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 กรองตามแท็ก @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 ไม่เลือกเลย @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 เลือกหน้า @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 เลือกทั้งหมด - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + ไม่มี Sort src/app/components/document-list/document-list.component.html - 48 + 68 จัดเรียง @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 ดู @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Save "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 บันทึกเป็น... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 All saved views @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {One document} other { documents}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (กรองแล้ว) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Error while loading documents @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 เรียงตาม ASN @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sort by correspondent @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 เรียงลำดับตามชื่อ @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 เรียงตามเจ้าของ @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 เรียงตามหมายเหตุ @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sort by document type @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 เรียงตามพาธจัดเก็บ @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 เรียงตามวันที่สร้าง @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 เรียงตามวันที่เพิ่ม @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Shared @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 แก้ไขเอกสาร @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Preview document @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Reset filters / selection @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Open first [selected] document @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Previous page @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Next page @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 View "" saved successfully. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 View "" created successfully. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 ชื่อ & เนื้อหา @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 File type @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 อื่น ๆ ที่คล้ายกัน @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 เท่ากับ @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 ว่างเปล่า @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 ไม่ว่างเปล่า @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 มากกว่า @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 น้อยกว่า @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Without correspondent @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Without document type @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 ไม่มีพาธจัดเก็บ @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 ไม่มีแท็กใด ๆ @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Title: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Owner: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Owner not in: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 ไม่มีเจ้าของ @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 ผู้เขียน @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 ผู้เขียน @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 ใช้งานล่าสุด @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Do you really want to delete the correspondent ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 ประเภทเอกสาร @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 ประเภทเอกสาร @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Do you really want to delete the document type ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Disabled + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 No mail rules defined. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Error retrieving mail accounts @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Error retrieving mail rules @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 authentication success @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 authentication failed, see logs for details @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Saved account "". @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Error saving account. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Confirm delete mail account @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 This operation will permanently delete this mail account. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Saved rule "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 เกิดข้อผิดพลาดในการบันทึกกฎ @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Confirm delete mail rule @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 This operation will permanently delete this mail rule. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Permissions updated @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Error updating permissions + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {One } other { total }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ อัตโนมัติ - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - ไม่มี - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Successfully created . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Error occurred while creating . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Error occurred while saving . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Associated documents will not be deleted. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Error while deleting element @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Permissions updated successfully @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 This operation will permanently delete all objects. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Objects deleted successfully @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Error deleting objects @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 พาธจัดเก็บ @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 พาธจัดเก็บ @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Do you really want to delete the storage path ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 แท็ก @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 แท็ก diff --git a/src-ui/src/locale/messages.tr_TR.xlf b/src-ui/src/locale/messages.tr_TR.xlf index b3d59b2a4..6010c2617 100644 --- a/src-ui/src/locale/messages.tr_TR.xlf +++ b/src-ui/src/locale/messages.tr_TR.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Kapat @@ -13,16 +13,16 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader - / Slaytı + / Slaytı Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Önceki @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Sonraki @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Önceki ay @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Sonraki ay @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Kapat @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Ay seçin @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Saat @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Yıl seçin @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Dakika @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 İlk @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Saati arttır @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Önceki @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Saati azalt @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Sonraki @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Dakikayı arttır @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Son @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Dakikayı azalt @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Saniye @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Saniyeyi arttır @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Saniyeyi azalt @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -308,7 +308,7 @@ src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 58 - Belgeyi aç + Belge aç Could not add : @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Belgeler @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Ayarlar @@ -444,7 +444,7 @@ src/app/app.component.ts 178 - Kontrol paneli, “Gelen Kutusu” gibi kaydedilmiş görünümleri göstermek için kullanılabilir. > Görünümler, oluşturduktan sonra Yönet > Kaydedilmiş Görünümler altında bulunur. + Gösterge paneli, “Gelen Kutusu” gibi kaydedilmiş görünümleri göstermek için kullanılabilir. > Görünümler, oluşturduktan sonra Yönet > Kaydedilmiş Görünümler altında bulunur. Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms. @@ -484,7 +484,7 @@ src/app/app.component.ts 208 - Künyeler, muhataplar, belge türleri ve depolama yollarının tümü bu sayfalar kullanılarak yönetilebilir. Bunlar ayrıca belge düzenleme görünümünden de oluşturulabilirler. + Etiketler, muhataplar, belge türleri ve depolama dizinlerinin tümü bu sayfaları kullanılarak yönetilebilir. Ayrıca belge düzenleme görünümünden de oluşturulabilirler. Manage e-mail accounts and rules for automatically importing documents. @@ -572,7 +572,7 @@ src/app/components/admin/config/config.component.html 25 - Bu ayar hakkındaki belgeyi okuyun + Bu ayar hakkındaki dokümantasyonu okuyun Enable @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Etkinleştir @@ -596,7 +596,7 @@ src/app/components/document-detail/document-detail.component.html 374 - Gözardı et + Vazgeç Save @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Günlükler @@ -742,11 +742,35 @@ Uygulama ve e-posta kontrolü için günlük dosyalarını inceleyin. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Göster + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + satır + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Yükleniyor... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + En aşağı git + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -932,7 +968,7 @@ src/app/components/admin/settings/settings.component.html 68 - Tarih Gösterimi + Tarih gösterimi Date format @@ -1020,7 +1056,7 @@ src/app/components/admin/settings/settings.component.html 139 - Karanlık modunda küçük resimleri tersine çevir + Karanlık modda küçük resimlerin renklerini tersine çevir Theme Color @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Bu nedir? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1212,7 +1252,7 @@ src/app/components/admin/settings/settings.component.html 221 - Gelişmiş arama sonuçlarını dahil etmeyin + Gelişmiş arama sonuçlarını dahil etme Full search links to @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Gelişmiş arama @@ -1252,7 +1292,7 @@ src/app/components/admin/settings/settings.component.html 237 - Toplu düzenlemec + Toplu düzenleme Show confirmation dialogs @@ -1260,7 +1300,7 @@ src/app/components/admin/settings/settings.component.html 240 - Onaylama iletişim kutuları göster + Onaylama kutularını göster Apply on close @@ -1268,7 +1308,7 @@ src/app/components/admin/settings/settings.component.html 241 - Kapanışta uygula + Kapatırken uygula Notes @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1440,7 +1480,7 @@ src/app/components/common/input/permissions/permissions-form/permissions-form.component.html 57 - Kullanıcı: + Kullanıcılar: Groups: @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1556,7 +1596,7 @@ src/app/components/admin/settings/settings.component.html 351 - Kontrol panodaki bildirimleri bastır + Kontrol panelindeki bildirimleri sustur This will suppress all messages about document processing status on the dashboard. @@ -1564,7 +1604,7 @@ src/app/components/admin/settings/settings.component.html 351 - Bu, kontrol panodaki belge işleme durumuyla ilgili tüm iletileri bastırır. + Bu, kontrol panelindeki belge işleme durumuyla ilgili tüm iletileri sustur. Cancel @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Kullanıcıları getirirken hata oluştu @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Grupları getirirken hata oluştu @@ -1714,9 +1750,9 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 - Ayarlar kaydedilirken bir hata oluştu. + Ayarlar kaydedilirken bir hata meydana geldi. File Tasks @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Dosya Görevleri @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Yoksay @@ -2028,7 +2068,7 @@ src/app/components/admin/tasks/tasks.component.html 134 - {VAR_PLURAL, plural, =1 {Bir görev} other { toplam görevler}} + {VAR_PLURAL, plural, =1 {Bir görev} other { toplam görev}}  ( selected) @@ -2044,7 +2084,7 @@ src/app/components/admin/tasks/tasks.component.html 148,150 - Failed + Başarısız Complete @@ -2052,7 +2092,7 @@ src/app/components/admin/tasks/tasks.component.html 156,158 - Complete + Tamamlandı Started @@ -2060,7 +2100,7 @@ src/app/components/admin/tasks/tasks.component.html 164,166 - Started + Başladı Queued @@ -2068,13 +2108,13 @@ src/app/components/admin/tasks/tasks.component.html 172,174 - Queued + Sırada Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Sonuç @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Seçilenleri temizle @@ -2090,31 +2130,47 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 - Tümünü yoksay + Tümünü yok say Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 - İptal etmeyi onayla + Tümünü Susturmayı Onayla Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 - Tüm işlerini iptal et? + Tüm işleri yok say? + + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Görevleri yok sayarken bir hata meydana geldi + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Görevi yok sayarken bir hata meydana geldi queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 sıraya alındı @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 başladı @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 tamamlandı @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 başarısız @@ -2150,13 +2206,13 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 - Çöp kutusu + Çöp Kutusu Manage trashed documents that are pending deletion. @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Seçilenleri sil @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2372,7 +2440,7 @@ src/app/components/admin/trash/trash.component.html 94 - {VAR_PLURAL, plural, =1 {Çöpte bir belge var} other { çöpteki toplam belge}} + {VAR_PLURAL, plural, =1 {Çöpte bir belge var} other {Çöpte toplam belge var}} Confirm delete @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Silmeyi onayla @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2488,7 +2556,7 @@ src/app/components/admin/trash/trash.component.ts 131 - Belge(ler) silinirken hata oluştu + Belge(ler) silinirken bir hata meydana geldi Document "" restored @@ -2504,7 +2572,7 @@ src/app/components/admin/trash/trash.component.ts 155 - "" belgesi geri yüklenirlen hata oluştu + "" belgesi geri yüklenirken bir hata meydana geldi Document(s) restored @@ -2520,7 +2588,7 @@ src/app/components/admin/trash/trash.component.ts 173 - Belge(leri) geri yüklerken hata oluştu + Belge(leri) geri yüklenirken bir hata meydana geldi Users & Groups @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Kullanıcılar & Gruplar @@ -2544,7 +2612,7 @@ src/app/components/admin/users-groups/users-groups.component.html 4 - Grup yada kullanıcı oluştur, düzenle yada sil. + Grup yada kullanıcı; oluştur, düzenle yada sil. Users @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Parola değiştirildi, otomatik olarak çıkış yapılacak. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 "" kullanıcısı kaydedildi. @@ -2722,15 +2790,15 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 - Kullanıcı kaydedilirken hata oluştu. + Kullanıcı kaydedilirken bir hata meydana geldi. Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Kullanıcı silinmesini onaylayın @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Bu eylem kullanıcıyı kalıcı olarak silecek. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 "" kullanıcısı silindi @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 "" kullanıcısını silerken hata alındı. @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 "" grubu kaydedildi. @@ -2822,15 +2890,15 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 - Grup kaydedilirken hata oluştu. + Grup kaydedilirken bir hata meydana geldi. Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Kullanıcı grubunu silmeyi onayla @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Bu eylem kullanıcıyı kalıcı olarak silecek. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 "" grubu silindi @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 "" grubu silinirken hata alındı. @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Dokümantasyon @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Kaydedilen görünümler @@ -2922,19 +2990,19 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 - Belgeleri aç + Açık Belgeler Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Tümünü kapat @@ -2942,19 +3010,19 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 - Yönet + Yönetim Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,27 +3086,27 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 133 - Depolama Yolları + Depolama Dizinleri Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3048,17 +3116,17 @@ src/app/components/manage/custom-fields/custom-fields.component.html 2 - Özel alanlar + Özel Alanlar Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Posta @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Yönetici @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Yapılandırma @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 Github @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 kullanılabilir. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Görüntülemek için tıklayın. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx güncellemeleri otomatik olarak kontrol edebilir @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Bu nasıl çalışıyor? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Güncelleme mevcut @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Kenar çubuğu görünümleri güncellendi @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Kenar çubuğu görünümlerini güncellerken hata oluştu @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Güncelleme denetimi ayarları kaydedilirken bir hata oluştu. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3360,7 +3428,7 @@ src/app/components/app-frame/global-search/global-search.component.ts 249 - Successfully updated object. + Nesne başarıyla güncellendi. Error occurred saving object. @@ -3372,7 +3440,7 @@ src/app/components/app-frame/global-search/global-search.component.ts 252 - Error occurred saving object. + Nesneyi kaydederken bir hatayla karşılașıldı. Clear All @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Temizle @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Onayla @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Onayla @@ -3468,7 +3540,7 @@ src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html 22 - Use metadata from: + Şu kaynaklardan meta verileri kullan: Regenerate all metadata @@ -3476,7 +3548,7 @@ src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html 24 - Regenerate all metadata + Tüm metaverileri yeniden oluştur Try to include archive version in merge for non-PDF files @@ -3484,7 +3556,7 @@ src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html 32 - Try to include archive version in merge for non-PDF files + PDF olmayan dosyalar için birleştirme işlemine arşiv sürümünü dahil etmeye çalış Delete original documents after successful merge @@ -3492,7 +3564,7 @@ src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html 36 - Delete original documents after successful merge + Birleştirme işlemi başarıyla tamamlandıktan sonra orijinal belgeleri sil Note that only PDFs will be included. @@ -3500,7 +3572,7 @@ src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.html 39 - Note that only PDFs will be included. + Yalnızca PDF dosyaları dahil edilecektir. Note that only PDFs will be rotated. @@ -3508,7 +3580,7 @@ src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.html 25 - Note that only PDFs will be rotated. + Yalnızca PDF dosyaları döndürülecektir. View @@ -3568,13 +3640,13 @@ src/app/components/manage/custom-fields/custom-fields.component.ts 94 - Alan kaydedilirken hata oluştu. + Alan kaydedilirken bir hata meydana geldi. Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,43 +3714,43 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 - Doğru + Evet False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 - Yanlış + Hayır Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Belgelerde ara... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Tümü @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Değil @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Sorgu Ekle @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 İfade Ekle @@ -3758,18 +3830,6 @@ Göreceli tarihler - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - şimdi - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Eklendi + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + şimdi + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 1 hafta içinde @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 1 ay içinde @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 3 ay içinde @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 1 yıl içinde @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Bu yıl @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Bu ay @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Dün + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Geçen Hafta + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Geçtiğimiz ay + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Geçen çeyrek + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Geçen yıl + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Eşleştirme algoritması @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Eşleşme düzeni @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Büyük / küçük harf duyarsız @@ -3982,19 +4082,11 @@ Seçenek ekle - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Varsayılan Para Birimi @@ -4002,17 +4094,17 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 - 3-character currency code + 3-harfli para birimi kodu Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 - Use locale + Yerel kullan Create new custom field @@ -4020,7 +4112,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts 118 - Create new custom field + Yeni bir özel alan oluştur Edit custom field @@ -4028,7 +4120,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts 122 - Edit custom field + Özel alanı düzenle Create new document type @@ -4068,7 +4160,7 @@ src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts 36 - Create new user group + Yeni bir kullanıcı grubu oluştur Edit user group @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4318,7 +4410,7 @@ tüm krite src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 42 - Consumption scope + Tüketim kapsamı See docs for .eml processing requirements @@ -4326,7 +4418,7 @@ tüm krite src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 42 - See docs for .eml processing requirements + .eml işleme gereksinimleri için kullanma kılavuzuna bakınız Attachment type @@ -4350,7 +4442,7 @@ tüm krite src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 47 - Include only files matching + Yalnızca şu ile eşleşen dosyaları dahil et Optional. Wildcards e.g. *.pdf or *invoice* allowed. Can be comma-separated list. Case insensitive. @@ -4362,7 +4454,7 @@ tüm krite src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 48 - Optional. Wildcards e.g. *.pdf or *invoice* allowed. Can be comma-separated list. Case insensitive. + İsteğe bağlı. Joker karakterler, örneğin *.pdf veya *fatura* olarak kullanılabilir. Virgülle ayrılmış liste olabilir. Büyük/küçük harf duyarlı değildir. Exclude files matching @@ -4410,7 +4502,7 @@ tüm krite src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html 59 - Kural ile Sahip ata + Kuraldan sahip ata Assign document type @@ -4420,7 +4512,7 @@ tüm krite src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Dosya türü ata @@ -4440,7 +4532,7 @@ tüm krite src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Muhatap ata @@ -4452,7 +4544,7 @@ tüm krite src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4474,6 +4566,10 @@ tüm krite src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Hata @@ -4510,7 +4606,7 @@ tüm krite src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts 57 - Process message as .eml and attachments separately + Mesajı .eml olarak ve ekleri ayrı ayrı işle System default @@ -4664,9 +4760,9 @@ tüm krite src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 - Yol + Dizin See <a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'>the documentation</a>. @@ -4674,7 +4770,7 @@ tüm krite src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html 13 - İlgili belgeyi "<a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'>" incele</a>. + İlgili belgeyi <a target='_blank' href='https://docs.paperless-ngx.com/advanced_usage/#file-name-handling'>incele</a>. Preview @@ -4748,15 +4844,23 @@ tüm krite src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Renk + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Üst düğüm + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Gelen kutusu etiketi @@ -4764,7 +4868,7 @@ tüm krite Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Gelen kutusu etiketleri, otomatik olarak tüketilen bütin belgelere atanmaktadır. @@ -4772,7 +4876,7 @@ tüm krite Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Yeni etiket oluştur @@ -4780,7 +4884,7 @@ tüm krite Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Etiketi düzenle @@ -4792,7 +4896,7 @@ tüm krite src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4802,6 +4906,10 @@ tüm krite src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + E-posta @@ -4880,7 +4988,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Çift faktörlü Doğrulama @@ -4896,11 +5004,11 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Çift faktörlü Doğrulamayı kapat @@ -4908,7 +5016,7 @@ tüm krite Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Yeni bir kullanıcı hesabı oluştur @@ -4916,7 +5024,7 @@ tüm krite Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Kullanıcı hesabını düzenle @@ -4924,7 +5032,7 @@ tüm krite Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Çift faktör Deaktif @@ -4932,11 +5040,11 @@ tüm krite Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Çift faktör deaktivasyon hatası @@ -5000,7 +5108,7 @@ tüm krite Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Tetiklenme tipi @@ -5008,7 +5116,7 @@ tüm krite Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Zamanlanmış tetikleyici ofsetini ve hangi tarih alanının kullanılacağını ayarlayın. @@ -5016,7 +5124,7 @@ tüm krite Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Gün ofseti @@ -5024,23 +5132,23 @@ tüm krite Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 - Positive values will trigger after the date, negative values before. + Pozitif değerler tarihten sonra, negatif değerler tarihten önce tetiklenecektir. Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 - Relative to + Şunun akrabası Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Özel alan @@ -5048,7 +5156,7 @@ tüm krite Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Tarih için kullanılacak özel alan. @@ -5056,47 +5164,47 @@ tüm krite Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 - Recurring + Tekrarlanan Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 - Trigger is recurring. + Tetikleyici tekrar ediyor. Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 - Recurring interval days + Tekrarlayan aralık günleri Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 - Repeat the trigger every n days. + Tetiği her "n" günde bir tekrarlayın. Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 - Trigger for documents that match all filters specified below. + Aşağıda belirtilen tüm filtrelerle eşleşen belgeler için tetikleyici. Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Dosya adı filtrele @@ -5104,7 +5212,7 @@ tüm krite Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Bu dosya adıyla eşleşen belgelere uygulayın, *.pdf veya *fatura* gibi joker karakterlere de izin verilir. Büyük/küçük harf fark etmeksizin. @@ -5112,31 +5220,31 @@ tüm krite Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 - Filter sources + Kaynakları filtrele Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Filtre Yolu - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Posta kuralı filtrele @@ -5144,71 +5252,71 @@ tüm krite Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 - Apply to documents consumed via this mail rule. + Bu posta kuralı aracılığıyla kullanılan belgelere uygulayın. Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 - Content matching algorithm + İçerik eşleştirme algoritması Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 - Content matching pattern + İçerik eşleştirme modeli - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Has any of tags + Gelişmiş Filtreler - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Muhatabı var + Filtre ekle - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Has document type + Gelişmiş bir iş akışı filtresi tanımlanmamıştır. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Özel alan sorgu yapılandırmasını tamamlayın. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 - Action type + Eylem türü Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Başlık at @@ -5216,15 +5324,15 @@ tüm krite Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 - Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. + Bazı yer tutucular içerebilir, bkz. <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>dokümantasyon</a>. Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Etiketler ata @@ -5232,31 +5340,31 @@ tüm krite Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 - Assign storage path + Depolama dizini atayın Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 - Assign custom fields + Özel alanları atayın Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 - Sahip Ata + Sahip ata Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Yeni görüntüleme izni ata @@ -5264,7 +5372,7 @@ tüm krite Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Yeni değiştire izni ata @@ -5272,47 +5380,47 @@ tüm krite Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 - Remove tags + Etiketleri kaldır Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 - Remove all + Tümünü kaldır Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Muhatapları kaldır @@ -5320,63 +5428,63 @@ tüm krite Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 - Remove document types + Tüm belge tiplerini kaldır Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 - Remove storage paths + Tüm depolama dizinlerini kaldır Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 - Remove custom fields + Özel alanları kaldır Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 - Remove owners + Tüm sahipleri kaldır Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 - Remove permissions + İzinleri kaldır View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 - View permissions + İzinleri görüntüle Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 - Edit permissions + İzinleri düzenle Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 E-posta konusu @@ -5384,7 +5492,7 @@ tüm krite Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 E-posta gövdesi @@ -5392,7 +5500,7 @@ tüm krite Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 E-posta alıcıları @@ -5400,7 +5508,7 @@ tüm krite Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Belge ekle @@ -5408,7 +5516,7 @@ tüm krite Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook url @@ -5416,23 +5524,23 @@ tüm krite Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 - Use parameters for webhook body + Webhook gövdesi için parametreleri kullanın Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 - Send webhook payload as JSON + Webhook yükünü JSON olarak gönder Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook parametreleri @@ -5440,7 +5548,7 @@ tüm krite Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook gövdesi @@ -5448,7 +5556,7 @@ tüm krite Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook başlıkları @@ -5456,7 +5564,7 @@ tüm krite Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Belge içeriyor @@ -5464,7 +5572,7 @@ tüm krite Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 İşlenecek Klasör @@ -5472,7 +5580,7 @@ tüm krite API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API yükle @@ -5480,7 +5588,7 @@ tüm krite Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Posta Yükle @@ -5488,7 +5596,7 @@ tüm krite Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Web Arayüzü @@ -5496,7 +5604,7 @@ tüm krite Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5508,7 +5616,7 @@ tüm krite Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Özel Alan @@ -5516,15 +5624,15 @@ tüm krite Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 - İşleme başladı + Tüketim işlemi başladı Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Belge eklendi @@ -5532,7 +5640,7 @@ tüm krite Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Belge Güncellendi @@ -5540,7 +5648,7 @@ tüm krite Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Zamanlanmış @@ -5548,7 +5656,7 @@ tüm krite Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Atama @@ -5556,7 +5664,7 @@ tüm krite Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Kaldırma @@ -5564,15 +5672,95 @@ tüm krite Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Bu herhangi etiketlere sahip + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Bu tüm etiketlere sahip + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Bu etiketlere sahip değil + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Muhatabı var + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Muhatablara sahip değil + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Belge türüne sahip + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Belge türlerine sahip değil + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Depolama dizinine sahip + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Depolama dizininlerine sahip değil + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Özel alan sorgusuyla eşleşir + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Yeni iş akışı oluştur @@ -5580,15 +5768,23 @@ tüm krite Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 İş akışı düzenle + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {1 Posta Belgesi} other { Posta Belgesi}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 E-posta adresleri @@ -5596,7 +5792,11 @@ tüm krite Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Konu @@ -5604,7 +5804,7 @@ tüm krite Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Ileti @@ -5612,41 +5812,49 @@ tüm krite Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 - Use archive version + Arşiv sürümünü kullan Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Eposta gönder - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Belgeyi postala + Bazı e-posta sunucuları büyük ekleri olan mesajları reddedebilir. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 E-posta gönderildi + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Belgeleri e-posta ile gönderirken bir hatayla karşılașıldı + Error emailing document src/app/components/common/email-document-dialog/email-document-dialog.component.ts 70 - Belgeyi postalarken hata oluştu + Belgeyi postalarken bir hata meydana geldi Include @@ -5712,7 +5920,7 @@ tüm krite Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Atanmadı @@ -5721,7 +5929,7 @@ tüm krite Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 filtresini aç @@ -5765,7 +5973,7 @@ tüm krite src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5801,11 +6009,11 @@ tüm krite src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Öneriler: @@ -5925,7 +6133,7 @@ tüm krite Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Öge ekle @@ -5938,11 +6146,11 @@ tüm krite src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5968,13 +6176,13 @@ tüm krite src/app/components/common/input/switch/switch.component.html 39 - Note: value has not yet been set and will not apply until explicitly changed + Not: Değer henüz belirlenmemiştir ve değiştirilene kadar geçerli olmayacaktır Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Etiket ekle @@ -5982,7 +6190,7 @@ tüm krite Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Etiket kaldır @@ -5990,7 +6198,7 @@ tüm krite Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Belgeleri bu etiketler ile filtrele @@ -6004,6 +6212,10 @@ tüm krite src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Daha fazla oku @@ -6076,7 +6288,7 @@ tüm krite src/app/components/common/pdf-editor/pdf-editor.component.html 44 - Add / remove document split here + Burada belge ayrıcı ekle/kaldır Split here @@ -6108,7 +6320,7 @@ tüm krite src/app/components/common/pdf-editor/pdf-editor.component.html 94 - Copy metadata + Meta veriyi kopyala Delete original @@ -6280,7 +6492,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html 33 - API Auth Token + API Yetkilendirme Tokeni Copy @@ -6294,7 +6506,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6306,11 +6518,11 @@ tüm krite src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6328,7 +6540,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html 47 - Regenerate auth token + Kimlik doğrulama tokenini yeniden oluştur Copied! @@ -6338,7 +6550,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6352,7 +6564,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html 56 - Warning: changing the token cannot be undone + Uyarı: Token değiştirilmesi geri alınamaz Connected social accounts @@ -6360,7 +6572,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html 62 - Connected social accounts + Bağlı sosyal hesaplar Set a password before disconnecting social account. @@ -6368,7 +6580,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html 66 - Set a password before disconnecting social account. + Sosyal medya hesabını kaldırmadan önce bir şifre belirleyin. Disconnect @@ -6384,7 +6596,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html 74 - Disconnect social account + sosyal hesabı kaldır Warning: disconnecting social accounts cannot be undone @@ -6392,7 +6604,7 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html 84 - Warning: disconnecting social accounts cannot be undone + Uyarı: sosyal hesapların sistemden kaldırılması geri alınamaz Connect new social account @@ -6400,61 +6612,61 @@ tüm krite src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html 89 - Connect new social account + Yeni sosyal hesap bağla Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 - Scan the QR code with your authenticator app and then enter the code below + Doğrulama uygulamanızla QR kodunu tarayın ve ardından aşağıya kodu girin Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 - Authenticator secret + Kimlik doğrulama sırrı You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 - You can store this secret and use it to reinstall your authenticator app at a later time. + Bu gizli bilgiyi saklayabilir ve daha sonra kimlik doğrulama uygulamanızı yeniden yüklemek için kullanabilirsiniz. Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 - Code + Kod Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 - Recovery codes will not be shown again, make sure to save them. + Kurtarma kodları bir daha gösterilmeyecektir, mutlaka kaydediniz. Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 - Copy codes + Kodları kopyala Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Emailler eşleşmeli @@ -6462,7 +6674,7 @@ tüm krite Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Şifreler eşleşmeli @@ -6470,7 +6682,7 @@ tüm krite Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Profil başarıyla güncellendi @@ -6478,73 +6690,73 @@ tüm krite Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 - Error saving profile + Profil kaydedilirken bir hata ile karşılaşıldı Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 - Error generating auth token + Yetkilendirme tokeni oluştururken bir hatayla karşılaşıldı Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 - Error disconnecting social account + Sosyal hesapları kaldırırken bir hata ile karşılaşıldı Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 - Error fetching TOTP settings + TOTP ayarları alınırken bir hata ile karşılaşıldı TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 - TOTP activated successfully + TOTP başarıyla etkinleştirildi Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 - Error activating TOTP + TOTP etkinleştirilirken bir hata ile karşılaşıldı TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 - TOTP deactivated successfully + TOTP başarıyla devre dışı bırakıldı Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 - Error deactivating TOTP + TOTP devre dışı bırakılırken bir hata ile karşılaşıldı No existing links @@ -6552,7 +6764,7 @@ tüm krite src/app/components/common/share-links-dialog/share-links-dialog.component.html 8,10 - No existing links + Herhangi bir mevcut link bulunmuyor Share @@ -6560,7 +6772,7 @@ tüm krite src/app/components/common/share-links-dialog/share-links-dialog.component.html 32 - Share + Paylaş Share archive version @@ -6568,7 +6780,7 @@ tüm krite src/app/components/common/share-links-dialog/share-links-dialog.component.html 48 - Share archive version + Arşiv sürümünü paylaş Expires @@ -6576,7 +6788,7 @@ tüm krite src/app/components/common/share-links-dialog/share-links-dialog.component.html 52 - Expires + Son Kullanım Tarihi 1 day @@ -6588,7 +6800,7 @@ tüm krite src/app/components/common/share-links-dialog/share-links-dialog.component.ts 102 - 1 day + 1 gün 7 days @@ -6596,7 +6808,7 @@ tüm krite src/app/components/common/share-links-dialog/share-links-dialog.component.ts 26 - 7 days + 7 gün 30 days @@ -6632,7 +6844,7 @@ tüm krite src/app/components/common/share-links-dialog/share-links-dialog.component.ts 83 - Linkleri getirirken hata oluştu + Linkler alınırken bir hata meydana geldi days @@ -6648,7 +6860,7 @@ tüm krite src/app/components/common/share-links-dialog/share-links-dialog.component.ts 131 - Linki silerken hata oluştu + Linki silerken bir hata meydana geldi Error creating link @@ -6656,7 +6868,7 @@ tüm krite src/app/components/common/share-links-dialog/share-links-dialog.component.ts 159 - Linki oluşturma hatası + Link oluşturulurken bir hata meydana geldi Environment @@ -6736,6 +6948,10 @@ tüm krite src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6748,7 +6964,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 76 - Göç Durumu + Veritabanı İşlemleri Durumu Up to date @@ -6756,7 +6972,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 80 - Up to date + Güncel Latest Migration @@ -6764,7 +6980,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 85 - Latest Migration + En Son Uygulanan Veritabanı İşlemleri Pending Migrations @@ -6772,7 +6988,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 87 - Pending Migrations + Bekleyen Veritabanı İşlemleri Tasks Queue @@ -6780,7 +6996,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 105 - Tasks Queue + Görev Sırası Redis Status @@ -6796,7 +7012,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 127 - Celery Status + Celery'nin Durumu Health @@ -6804,7 +7020,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 153 - Health + Sağlık Search Index @@ -6812,7 +7028,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 157 - Search Index + Arama İndeksi Run Task @@ -6828,7 +7044,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 245 - Run Task + Görevi Çalıştır Last Updated @@ -6836,7 +7052,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 184 - Last Updated + Son Güncellenme Tarihi Classifier @@ -6844,7 +7060,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 189 - Classifier + Sınıflandırıcı Last Trained @@ -6852,7 +7068,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 218 - Last Trained + Son Eğitim Tarihi Sanity Checker @@ -6860,7 +7076,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 223 - Sanity Checker + Son Geçerlilik Kontrol Edilme Tarihi Last Run @@ -6868,7 +7084,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 252 - Last Run + Son Çalıştırma WebSocket Connection @@ -6876,7 +7092,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + Websocket Bağlantısı OK @@ -6884,7 +7100,7 @@ tüm krite src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + Tamam Copy Raw Error @@ -6892,7 +7108,7 @@ tüm krite src/app/components/common/toast/toast.component.html 43 - Copy Raw Error + Hatayı Olduğu Gibi Kopyala Hint: saved views can be created from the documents list @@ -6900,7 +7116,7 @@ tüm krite src/app/components/dashboard/dashboard.component.html 42 - Hint: saved views can be created from the documents list + İpucu: kaydedilmiş görünümler documents list 'den oluşturulabilir Hello , welcome to @@ -6908,7 +7124,7 @@ tüm krite src/app/components/dashboard/dashboard.component.ts 61 - Hello , welcome to + Merhaba , hoşgeldiniz Welcome to @@ -6916,7 +7132,7 @@ tüm krite src/app/components/dashboard/dashboard.component.ts 63 - Welcome to + Hoş Geldiniz Dashboard updated @@ -6924,7 +7140,7 @@ tüm krite src/app/components/dashboard/dashboard.component.ts 94 - Dashboard updated + Kontrol Paneli yenilendi Error updating dashboard @@ -6932,7 +7148,7 @@ tüm krite src/app/components/dashboard/dashboard.component.ts 97 - Error updating dashboard + Kontrol panelini yenilerken bir hatayla karşılașıldı Show all @@ -6954,9 +7170,9 @@ tüm krite src/app/components/document-list/document-list.component.html - 298 + 323 - Muhataba göre süz + Muhataba göre filtrele Filter by document type @@ -6970,9 +7186,9 @@ tüm krite src/app/components/document-list/document-list.component.html - 338 + 363 - Filter by document type + Belge türüne göre filtrele Filter by storage path @@ -6986,9 +7202,9 @@ tüm krite src/app/components/document-list/document-list.component.html - 345 + 370 - Filter by storage path + Depolama dizinine göre filtrele Filter by owner @@ -6996,7 +7212,7 @@ tüm krite src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html 74 - Filter by owner + Sahibine göre filtrele Yes @@ -7006,7 +7222,7 @@ tüm krite src/app/components/document-list/document-list.component.html - 366 + 391 Evet @@ -7018,7 +7234,7 @@ tüm krite src/app/components/document-list/document-list.component.html - 366 + 391 Hayır @@ -7028,7 +7244,7 @@ tüm krite src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.html 149 - No documents + Belge yok Statistics @@ -7044,7 +7260,7 @@ tüm krite src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 28 - Go to inbox + Gelen kutusuna git Documents in inbox @@ -7052,7 +7268,7 @@ tüm krite src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 29 - Documents in inbox + Gelen kutusundaki belgeler Go to documents @@ -7060,7 +7276,7 @@ tüm krite src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 33 - Go to documents + Belgelere git Total documents @@ -7068,7 +7284,7 @@ tüm krite src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 34 - Total documents + Toplam Belge Total characters @@ -7076,7 +7292,7 @@ tüm krite src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 38 - Total characters + Toplam Karakter Current ASN @@ -7084,7 +7300,7 @@ tüm krite src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html 43 - Current ASN + Mevcut ASN Other @@ -7100,7 +7316,7 @@ tüm krite src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 6 - Upload documents + Belge veya belgeler yükle or drop files anywhere @@ -7108,7 +7324,7 @@ tüm krite src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html 7 - or drop files anywhere + veya dosyaları herhangi bir yere bırakın Dismiss completed @@ -7151,7 +7367,7 @@ tüm krite src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7162,7 +7378,7 @@ tüm krite src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html 2 - Paperless-ngx is running! + Paperless-ngx çalışıyor! You're ready to start uploading documents! Explore the various features of this web app on your own, or start a quick tour using the button below. @@ -7170,7 +7386,7 @@ tüm krite src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html 3 - You're ready to start uploading documents! Explore the various features of this web app on your own, or start a quick tour using the button below. + Belge yüklemeye hazırsınız! Bu web uygulamasının çeşitli özelliklerini kendiniz keşfedin veya aşağıdaki düğmeyi kullanarak hızlı bir tura başlayın. More detail on how to use and configure Paperless-ngx is always available in the documentation. @@ -7178,7 +7394,7 @@ tüm krite src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html 4 - More detail on how to use and configure Paperless-ngx is always available in the documentation. + Paperless-ngx'in kullanımı ve yapılandırılması hakkında daha fazla bilgiye her zaman dokümantasyon adresinden ulaşabilirsiniz. Thanks for being a part of the Paperless-ngx community! @@ -7186,7 +7402,7 @@ tüm krite src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html 7 - Thanks for being a part of the Paperless-ngx community! + Paperless-ngx topluluğunun bir parçası olduğunuz için teşekkür ederiz! Start the tour @@ -7211,8 +7427,8 @@ tüm krite 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Sayfa @@ -7222,7 +7438,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 7,8 - of + 'dan/den - @@ -7230,7 +7446,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 11 - - + - + @@ -7238,7 +7454,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 19 - + + + Download original @@ -7256,9 +7472,9 @@ tüm krite src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 - Reprocess + Yeniden İşle Print @@ -7266,7 +7482,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 58 - Print + Yazdır More like this @@ -7288,9 +7504,9 @@ tüm krite src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 - PDF Editor + PDF Düzenleyici Send @@ -7298,7 +7514,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 84 - Send + Gönder Previous @@ -7324,11 +7540,11 @@ tüm krite src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7364,11 +7580,11 @@ tüm krite src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7392,11 +7608,11 @@ tüm krite src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7420,11 +7636,11 @@ tüm krite src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7562,7 +7778,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 321,324 - Notes + Notlar History @@ -7570,7 +7786,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 332 - History + Geçmiş Save & next @@ -7578,7 +7794,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 369 - Kaydet & sonraki + Kaydet ve sonrakine geç Save & close @@ -7586,7 +7802,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 372 - Save & close + Kaydet ve kapat Document loading... @@ -7594,7 +7810,7 @@ tüm krite src/app/components/document-detail/document-detail.component.html 382 - Document loading... + Belge Yükleniyor... Enter Password @@ -7610,7 +7826,7 @@ tüm krite src/app/components/document-detail/document-detail.component.ts 416,418 - An error occurred loading content: + İçerik yüklenirken bir hata ile karşılaşıldı: Document changes detected @@ -7618,7 +7834,7 @@ tüm krite src/app/components/document-detail/document-detail.component.ts 450 - Document changes detected + Belge değişiklikler algılandı The version of this document in your browser session appears older than the existing version. @@ -7626,7 +7842,7 @@ tüm krite src/app/components/document-detail/document-detail.component.ts 451 - The version of this document in your browser session appears older than the existing version. + Tarayıcı oturumunuzdaki bu belgenin sürümü, mevcut sürümden daha eski görünüyor. Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document. @@ -7634,7 +7850,7 @@ tüm krite src/app/components/document-detail/document-detail.component.ts 452 - Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document. + Belgeyi buraya kaydetmek, yapılan diğer değişikliklerin üzerine yazabilir. Mevcut sürümü geri yüklemek için değişikliklerinizi geri alın veya belgeyi kapatın. Ok @@ -7642,7 +7858,7 @@ tüm krite src/app/components/document-detail/document-detail.component.ts 454 - Ok + Tamam Next document @@ -7650,7 +7866,7 @@ tüm krite src/app/components/document-detail/document-detail.component.ts 580 - Next document + Sonraki belge Previous document @@ -7658,7 +7874,7 @@ tüm krite src/app/components/document-detail/document-detail.component.ts 590 - Previous document + Önceki belge Close document @@ -7678,7 +7894,7 @@ tüm krite src/app/components/document-detail/document-detail.component.ts 605 - Save document + Belgeyi kaydet Save and close / next @@ -7686,195 +7902,195 @@ tüm krite src/app/components/document-detail/document-detail.component.ts 614 - Save and close / next + Kaydet, kapat ve bir sonrakine geç Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 - Metaveri alınırken hata oluştu + Metaveri alınırken bir hata meydana geldi Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 - Önerileri getirirken hata oluştu. + Öneriler getirilirken bir hata meydana geldi. Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 - Document "" saved successfully. + "" belgesi başarıyla kaydedildi. Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 - Error saving document "" + Belgeyi kaydederken bir hata ile karşılaşıldı "" Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 - Error saving document + Belge kaydedilirken bir hata ile karşılaşıldı Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 - Do you really want to move the document "" to the trash? + belgesini gerçekten çöp kutusuna taşımak istiyor musunuz? Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 - Documents can be restored prior to permanent deletion. + Belgeler kalıcı olarak silinmeden önce geri yüklenebilir. Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 - Move to trash + Çöp kutusuna taşı Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 - Error deleting document + Belge silinirken bir hata meydana geldi Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 - Reprocess confirm + Yeniden işlemeyi onayla This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 - This operation will permanently recreate the archive file for this document. + Bu işlem, bu belge için arşiv dosyasını kalıcı olarak yeniden oluşturacaktır. The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 - The archive file will be re-generated with the current settings. + Arşiv dosyası mevcut ayarlarla yeniden oluşturulacaktır. Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 - Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. + "" için yeniden işleme işlemi arka planda başlayacaktır. İşlem tamamlandıktan sonra bu belgeyi kapatıp yeniden açtıktan veya yeniden yükledikten sonra yeni içeriği görebilirsiniz. Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 - Error executing operation + İşlemi gerçekleştirirken bir hata ile karşılaşıldı Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 - Error downloading document + Belge indirilirken bir hata meydana geldi Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 - Page Fit + Sayfa Sığdır PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 - PDF edit operation for "" will begin in the background. + "" için PDF düzenleme işlemleri arka planda başlayacak. Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 - Error executing PDF edit operation + PDF düzenleme işlemleri uygulanırken bir hata ile karşılaşıldı Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + Yazdırma başarısız oldu. Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + Belgeyi yazdırmaya hazırlarken bir hata ile karşılaşıldı. An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 - An error occurred loading tiff: + tiff'i yüklenirken bir hata meydana geldi No entries found. @@ -7882,21 +8098,13 @@ tüm krite src/app/components/document-history/document-history.component.html 10 - No entries found. - - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Seç: + Hiçbir kayıt bulunamadı. Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Düzenle: @@ -7904,7 +8112,7 @@ tüm krite Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7916,43 +8124,43 @@ tüm krite Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html 51 - Muhataba göre süz + Muhatabları filtrele Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html 62 - Belge türlerini göre filtrele + Belge türlerine göre filtrele Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html 73 - Filter storage paths + Depolama dizinlerine göre filtrele Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7960,91 +8168,91 @@ tüm krite src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 - Custom fields + Özel alanlar Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 - Filter custom fields + Özel alanları filtrele Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 - Set values + Değerleri ayarla Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 - Rotate + Döndür Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 - Merge + Birleştir Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 - Include: + Dahil et: Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 - Archived files + Arşivlenen dosyalar Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 - Original files + Orijinal dosyalar Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 - Use formatted filename + Formatlanmış dosya adını kullan Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 - Error executing bulk operation + Toplu işlemler çalıştırılırken bir hata ile karşılaşıldı "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8052,7 +8260,7 @@ tüm krite "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" ve "" @@ -8061,7 +8269,7 @@ tüm krite and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' ve "" @@ -8070,15 +8278,15 @@ tüm krite Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 - Etiket atanmayi doğrulayın + Etiket atanmasını onaylayın This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Bu işlem "" etiketini seçili belge(ye/lere) ekliyecektir. @@ -8086,15 +8294,15 @@ tüm krite This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 - This operation will add the tags to selected document(s). + Bu işlem etiketlerini seçili belge veya belgelere ekleyecektir. This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Bu işlem "" etiketini seçili belge(den/lerden) kaldıracaktır. @@ -8102,15 +8310,15 @@ tüm krite This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 - This operation will remove the tags from selected document(s). + Bu işlem etiketlerini seçili belge veya belgelerden kaldıracaktır. This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Bu işlem olan secili belge(ye/lere) etiketlerini ekliyecektir ve olan etiketlerini çıkartacaktır. @@ -8118,7 +8326,7 @@ tüm krite Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Muhatap atamayı onayla @@ -8126,7 +8334,7 @@ tüm krite This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Bu işlem, “” muhatabını seçili belgelere atayacaktır. @@ -8134,7 +8342,7 @@ tüm krite This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Bu işlem, muhatabı “” seçili belgelerden kaldıracaktır. @@ -8142,7 +8350,7 @@ tüm krite Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Belge türü atanmayı onaylayın @@ -8150,7 +8358,7 @@ tüm krite This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Bu işlem "" belge türünü seçili belge(ye/lere) atıyacaktır. @@ -8158,7 +8366,7 @@ tüm krite This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Bu işlem, belge türünü "" seçili belge(den/lerden) kaldıracaktır. @@ -8166,153 +8374,153 @@ tüm krite Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 - Confirm storage path assignment + Depolama dizinlerini atamayı onaylayın This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 - This operation will assign the storage path "" to selected document(s). + Bu işlem, depolama dizinini, seçilmiş belgeye atayacaktır. This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 - This operation will remove the storage path from selected document(s). + Bu işlem belgeden depolama dizinini kaldıracaktır. Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 - Confirm custom field assignment + Özel alan atamasını onaylayın This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 - This operation will assign the custom field "" to selected document(s). + Bu işlem, özel alanını, seçilmiş belgeye atayacaktır. This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 - This operation will assign the custom fields to selected document(s). + Bu işlem, özel alanlarını, seçilmiş belgeye atayacaktır. This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 - This operation will remove the custom field "" from selected document(s). + Bu işlem alanını belgeden kaldıracaktır. This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 - This operation will remove the custom fields from selected document(s). + Bu işlem alanlarını belgeden kaldıracaktır. This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 - This operation will assign the custom fields and remove the custom fields on selected document(s). + Bu işlem, alanlarını atayacak ve alanlarını seçili belgeden kaldıracaktır. Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 - Move selected document(s) to the trash? + Seçilmiş belgeyi çöp kutusuna taşımak istiyor musunuz? This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 - This operation will permanently recreate the archive files for selected document(s). + Bu işlem, seçilmiş belge için arşiv dosyasını kalıcı olarak yeniden oluşturacaktır. The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 - The archive files will be re-generated with the current settings. + Arşiv dosyaları mevcut ayarlarla yeniden oluşturulacaktır. Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 - Rotate confirm + Döndürmeyi onaylayın This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 - This operation will permanently rotate the original version of document(s). + Bu işlem belgede, orijinal sürümündeki sayfaları kalıcı olarak döndürecektir. Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 - Merge confirm + Birleştirmeyi onaylayın This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 - This operation will merge selected documents into a new document. + Bu işlem belgeyi yeni bir belgede birleştirecektir. Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 - Merged document will be queued for consumption. + Birleştirilen belge tüketim için sıraya alınacaktır. Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 - Custom fields updated. + Özel alanlar güncelleştirildi. Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 - Error updating custom fields. + Özel alanları güncellerken bir hatayla karşılaşıldı. {VAR_PLURAL, plural, =1 {Set custom fields for 1 document} other {Set custom fields for documents}} @@ -8320,7 +8528,7 @@ tüm krite src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html 3,7 - {VAR_PLURAL, plural, =1 {Set custom fields for 1 document} other {Set custom fields for documents}} + {VAR_PLURAL, plural, =1 {1 belge için özel alanlar ayarla} other { belge için özel alanlar ayarla}} Select custom fields @@ -8328,7 +8536,7 @@ tüm krite src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html 13 - Select custom fields + Özel alanları seçin {VAR_PLURAL, plural, =1 {This operation will also remove 1 custom field from the selected documents.} other {This operation will also @@ -8337,8 +8545,7 @@ tüm krite src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html 73,78 - {VAR_PLURAL, plural, =1 {This operation will also remove 1 custom field from the selected documents.} other {This operation will also - remove custom fields from the selected documents.}} + {VAR_PLURAL, plural, =1 {Bu işlem, seçilen belgelerden 1 özel alanı da kaldıracaktır.} other {Bu işlem, seçilen belgelerden özel alanı da kaldıracaktır.}} Filter by tag @@ -8348,7 +8555,7 @@ tüm krite src/app/components/document-list/document-list.component.html - 314 + 339 Etikete göre filtrele @@ -8358,7 +8565,7 @@ tüm krite src/app/components/document-list/document-card-large/document-card-large.component.html 91 - View notes + Notları görüntüle Created: @@ -8374,7 +8581,7 @@ tüm krite src/app/components/document-list/document-card-small/document-card-small.component.html 91,92 - Created: + Oluşturulmuş: Added: @@ -8418,7 +8625,7 @@ tüm krite src/app/components/document-list/document-card-small/document-card-small.component.html 106 - {VAR_PLURAL, plural, =1 {1 page} other { pages}} + {VAR_PLURAL, plural, =1 {1 sayfa} other { sayfa}} Shared @@ -8438,7 +8645,7 @@ tüm krite src/app/pipes/username.pipe.ts 35 - Shared + Paylaşıldı Score: @@ -8454,7 +8661,7 @@ tüm krite src/app/components/document-list/document-card-small/document-card-small.component.html 20 - Toggle tag filter + Etiket filtresini aç/kapat Toggle correspondent filter @@ -8462,7 +8669,7 @@ tüm krite src/app/components/document-list/document-card-small/document-card-small.component.html 43 - Muhatap süzgecini aç/kapat + Muhatap filtresini aç/kapat Toggle document type filter @@ -8470,7 +8677,7 @@ tüm krite src/app/components/document-list/document-card-small/document-card-small.component.html 59 - Toggle document type filter + Belge türü filtresini aç/kapat Toggle storage path filter @@ -8478,13 +8685,13 @@ tüm krite src/app/components/document-list/document-card-small/document-card-small.component.html 66 - Toggle storage path filter + Depolama dizini filtresini aç/kapat Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8496,7 +8703,7 @@ tüm krite Select none src/app/components/document-list/document-list.component.html - 9 + 11 Seçimi kaldır @@ -8504,11 +8711,11 @@ tüm krite Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Sayfayı seç @@ -8516,31 +8723,43 @@ tüm krite Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Tümünü seç - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Seç: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Show + + src/app/data/matching-model.ts + 45 + + Yok Sort src/app/components/document-list/document-list.component.html - 48 + 68 Sırala @@ -8548,7 +8767,7 @@ tüm krite Views src/app/components/document-list/document-list.component.html - 74 + 94 Görünümler @@ -8556,7 +8775,7 @@ tüm krite Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Kaydet: @@ -8564,7 +8783,7 @@ tüm krite Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Farklı kaydet… @@ -8572,23 +8791,23 @@ tüm krite All saved views src/app/components/document-list/document-list.component.html - 97 + 117 - All saved views + Tüm kaydedilen görünümler {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 - {VAR_PLURAL, plural, =1 {Seçili 1 belgeden} other {Seçili , belgeden}} + {VAR_PLURAL, plural, =1 {Bir belgeden seçilen } other { belgeden Seçilen }} {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {1 belge} other { belge}} @@ -8596,47 +8815,47 @@ tüm krite (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 - (süzüldü) + (filtrelendi) Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html 107 - Süzgeçleri sıfırla + Filtreleri sıfırla Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 - Error while loading documents + Belgeleri yüklerken bir hata ile karşılaşıldı Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 - Sort by ASN + ASN'ye göre sıralama ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8652,7 +8871,7 @@ tüm krite Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Muhataba göre sırala @@ -8660,23 +8879,23 @@ tüm krite Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 - Sort by title + Başlığa göre sırala Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 - Sort by owner + Sahibine göre sırala Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8686,61 +8905,61 @@ tüm krite src/app/data/document.ts 96 - Sahibi + Sahip Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 - Sort by notes + Notlara göre sırala Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 - Sort by document type + Belge türüne göre sırala Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 - Sort by storage path + Kayıt dizinine göre sırala Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 - Sort by created date + Oluşturma tarihine göre sırala Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 - Sort by added date + Sisteme eklendiği tarihe göre sırala Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 - Sort by number of pages + Sayfa sayısına göre sırala Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8754,29 +8973,29 @@ tüm krite src/app/data/paperless-config.ts 91 - Pages + Sayfalar Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 - Shared + Paylaşılmış Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 - Sort by + göre sırala Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Belgeyi düzenle @@ -8784,47 +9003,47 @@ tüm krite Preview document src/app/components/document-list/document-list.component.html - 307 + 332 - Preview document + Belgeyi ön izle Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 - Reset filters / selection + Filtreleri / seçimi sıfırla Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 - Open first [selected] document + İlk [selected] belgeyi aç Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 - Previous page + Önceki sayfa Next page src/app/components/document-list/document-list.component.ts - 350 + 352 - Next page + Sonraki sayfa View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 "" adlı görünüm başarıyla kaydedildi. @@ -8832,15 +9051,15 @@ tüm krite Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 - Failed to save view "". + "" görünümünü kaydederken bir hata ile karşılaşıldı. View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 adlı görünüm başarıyla oluşturuldu. @@ -8850,13 +9069,13 @@ tüm krite src/app/components/document-list/filter-editor/filter-editor.component.html 90 - Dates + Tarihler Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Başlık ve içerik @@ -8864,15 +9083,15 @@ tüm krite File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 - File type + Dosya tipi More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Benzeri gibi @@ -8880,7 +9099,7 @@ tüm krite equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 eşittir @@ -8888,7 +9107,7 @@ tüm krite is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 boş @@ -8896,7 +9115,7 @@ tüm krite is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 boş değil @@ -8904,23 +9123,23 @@ tüm krite greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 - greater than + den büyük less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 - less than + den küçük Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Muhatap: @@ -8928,7 +9147,7 @@ tüm krite Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Muhatapsız @@ -8936,15 +9155,15 @@ tüm krite Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 - Document type: + Belge türü: Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Belge türü olmayan @@ -8952,47 +9171,47 @@ tüm krite Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 - Storage path: + Depolama dizini: Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 - Without storage path + Depolama dizini olmadan Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 - Tag: + Etiket: Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 - Herhangi bir künye olmayan + Etiketsiz Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 - Custom fields query + Özel alan sorgusu Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Başlık: @@ -9000,7 +9219,7 @@ tüm krite ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9008,25 +9227,25 @@ tüm krite Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 - Owner: + Sahibi: Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 - Owner not in: + Sahibi içinde değil: Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 - Without an owner + Sahipsiz Save current view @@ -9058,7 +9277,7 @@ tüm krite src/app/components/manage/saved-views/saved-views.component.html 20 - Gösterge tablosunda göster + Kontrol panelinde göster Filter rules error occurred while saving this view @@ -9066,7 +9285,7 @@ tüm krite src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html 13 - Filter rules error occurred while saving this view + Bu görünümü kaydederken filtre kuralları ile ilgili bir hata meydana geldi The error returned was @@ -9074,7 +9293,7 @@ tüm krite src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html 14 - The error returned was + Hatanın gönderdiği Enter note @@ -9082,7 +9301,7 @@ tüm krite src/app/components/document-notes/document-notes.component.html 5 - Enter note + Not ekle Please enter a note. @@ -9090,7 +9309,7 @@ tüm krite src/app/components/document-notes/document-notes.component.html 6,8 - Please enter a note. + Lütfen bir not girin Add note @@ -9098,7 +9317,7 @@ tüm krite src/app/components/document-notes/document-notes.component.html 14 - Add note + Not ekle Delete note @@ -9110,7 +9329,7 @@ tüm krite src/app/components/document-notes/document-notes.component.html 27 - Delete note + Notu sil Error saving note @@ -9118,7 +9337,7 @@ tüm krite src/app/components/document-notes/document-notes.component.ts 81 - Error saving note + Not kaydedilirken bir hata oluştu Error deleting note @@ -9126,7 +9345,7 @@ tüm krite src/app/components/document-notes/document-notes.component.ts 95 - Error deleting note + Not silerken bir hata oluştu Drop files to begin upload @@ -9146,7 +9365,7 @@ tüm krite src/app/components/file-drop/file-drop.component.ts 146 - Initiating upload... + Yükleme başlatılıyor... Failed to read dropped items: @@ -9154,13 +9373,13 @@ tüm krite src/app/components/file-drop/file-drop.component.ts 142 - Failed to read dropped items: + Bırakılan öğeleri okurken bir hata meydana geldi: correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 muhatap @@ -9168,7 +9387,7 @@ tüm krite correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 muhataplar @@ -9176,7 +9395,7 @@ tüm krite Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Son kullanılma @@ -9184,7 +9403,7 @@ tüm krite Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 ” muhatabını silmeyi gerçekten istiyor musunuz? @@ -9194,7 +9413,7 @@ tüm krite src/app/components/manage/custom-fields/custom-fields.component.html 4 - Customize the data fields that can be attached to documents. + Belgelere eklenebilecek veri alanlarını özelleştirin. Add Field @@ -9202,7 +9421,7 @@ tüm krite src/app/components/manage/custom-fields/custom-fields.component.html 9 - Add Field + Alan Ekle Data Type @@ -9210,7 +9429,7 @@ tüm krite src/app/components/manage/custom-fields/custom-fields.component.html 18 - Data Type + Veri Tipi Filter Documents () @@ -9220,21 +9439,21 @@ tüm krite src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 - Filter Documents () + Belgeleri Filtrele () No fields defined. @@ -9242,7 +9461,7 @@ tüm krite src/app/components/manage/custom-fields/custom-fields.component.html 70 - No fields defined. + Herhangi bir alan tanımlanmadı. Confirm delete field @@ -9250,7 +9469,7 @@ tüm krite src/app/components/manage/custom-fields/custom-fields.component.ts 102 - Confirm delete field + Alanı silmeyi onayla This operation will permanently delete this field. @@ -9258,7 +9477,7 @@ tüm krite src/app/components/manage/custom-fields/custom-fields.component.ts 103 - This operation will permanently delete this field. + Bu işlem alanı kalıcı olarak silecektir. Deleted field "" @@ -9266,7 +9485,7 @@ tüm krite src/app/components/manage/custom-fields/custom-fields.component.ts 112 - Deleted field "" + "" alanı silindi Error deleting field "". @@ -9274,13 +9493,13 @@ tüm krite src/app/components/manage/custom-fields/custom-fields.component.ts 121 - Error deleting field "". + "" alanını silerken bir hata ile karşılaşıldı. document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 belge türü @@ -9288,7 +9507,7 @@ tüm krite document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 belge türleri @@ -9296,7 +9515,7 @@ tüm krite Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 "" belge türünü silmeyi gerçekten istiyor musunuz? @@ -9306,7 +9525,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 2 - Mail Settings + Posta Ayarları Mail accounts @@ -9314,7 +9533,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 12 - Mail accounts + Posta Hesapları Add Account @@ -9322,7 +9541,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 14 - Add Account + Hesap Ekle Connect Gmail Account @@ -9330,7 +9549,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 18 - Connect Gmail Account + Gmail Hesabını Bağla Connect Outlook Account @@ -9338,7 +9557,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 23 - Connect Outlook Account + Outlook Hesabını Bağla Server @@ -9346,7 +9565,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 31 - Server + Sunucu Process Mail @@ -9358,7 +9577,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 86 - Process Mail + Posta İşlemi No mail accounts defined. @@ -9366,7 +9585,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 95 - No mail accounts defined. + Tanımlanmış bir posta hesabı yok. Mail rules @@ -9374,7 +9593,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 103 - Mail rules + E-posta kuralları Add Rule @@ -9382,7 +9601,7 @@ tüm krite src/app/components/manage/mail/mail.component.html 105 - Add Rule + Kural Ekle Sort Order @@ -9390,215 +9609,263 @@ tüm krite src/app/components/manage/mail/mail.component.html 112 - Sort Order + Sıralama Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html 41 - Disabled + Devre dışı + + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + İşlenmiş Postaları Görüntüle No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 - No mail rules defined. + Tanımlanmış bir posta kuralı mevcut değil. Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 - Error retrieving mail accounts + Posta hesaplarından bilgi alırken bir hata meydana geldi Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 - Error retrieving mail rules + Posta kurallarını yüklerken bir hata meydana geldi OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 - OAuth2 authentication success + OAuth2 yetkilendirmesi başarılı OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 - OAuth2 authentication failed, see logs for details + OAuth2 yetkilendirmesi ile ilgili bir hata meydana geldi, detaylar için günlüklere göz atın Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 - Saved account "". + "" hesabı kaydedildi. Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 - Error saving account. + Hesabı kaydederken bir hata ile karşılaşıldı. Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 - Confirm delete mail account + Posta hesabının silinmesini onaylayın This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 - This operation will permanently delete this mail account. + Bu işlem, bu posta hesabını kalıcı olarak silecektir. Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 - Deleted mail account "" + "" posta hesabı silindi Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 - Error deleting mail account "". + "" posta hesabı silinirken bir hata meydana geldi. Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 - Processing mail account "" + "" posta hesabı işleniyor Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 - Error processing mail account "" + "" posta hesabı işlenirken bir hata meydana geldi Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 - Saved rule "". + "" kuralı kaydedildi. Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 - Error saving rule. + Kuralı kaydedilirken bir hata meydana geldi. Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 - Rule "" enabled. + "" kuralı aktifleştirildi. Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 - Rule "" disabled. + "" kuralı devre dışı bırakıldı. Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 - Error toggling rule "". + Kuralı açarken veya kapatırken bir hata meydana geldi "". Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 - Confirm delete mail rule + Posta hesabı kuralının silinmesini onaylayın This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 - This operation will permanently delete this mail rule. + Bu işlem, bu posta kuralını kalıcı olarak silecektir. Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 - Deleted mail rule "" + "" posta kuralı silindi Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 - Error deleting mail rule "". + "" posta kuralı silinirken bir hata meydana geldi. Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 - Permissions updated + İzinler güncellendi Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 - Error updating permissions + İzinler güncellenirken bir hata meydana geldi + + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + için postalar işlendi + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + İşlenmiş posta mesajı bulunamadı. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Teslim Alındı + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + İşlendi + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + İşlenmiş posta veya postalar silindi Filter by: @@ -9618,7 +9885,7 @@ tüm krite src/app/components/manage/management-list/management-list.component.html 20 - Şuna göre süz: + Şuna göre filtrele: Matching @@ -9664,27 +9931,27 @@ tüm krite {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 - {VAR_PLURAL, plural, =1 {One } other { total }} + {VAR_PLURAL, plural, =1 {Bir } other {Toplam }} Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9692,97 +9959,85 @@ tüm krite Otomatik - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Yok - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 - Successfully created . + başarıyla oluşturuldu. Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 - Error occurred while creating . + oluşturulurken bir hata meydana geldi. Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 - Successfully updated "". + "" başarıyla güncellendi. Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 - Error occurred while saving . + kaydederken bir hata meydana geldi. Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 - Associated documents will not be deleted. + İliştirilmiş belgeler silinmeyecektir. Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 - Error while deleting element + Öğeyi silerken bir hata meydana geldi Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 - Permissions updated successfully + İzinler başarıyla güncellendi This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 - This operation will permanently delete all objects. + Bu işlem tüm nesneleri kalıcı olarak silecektir. Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 - Objects deleted successfully + Nesneler başarıyla silindi Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 - Error deleting objects + Nesneleri silerken bir hata ile karşılaşıldı Customize the views of your documents. @@ -9790,7 +10045,7 @@ tüm krite src/app/components/manage/saved-views/saved-views.component.html 4 - Customize the views of your documents. + Belgelerinizin görünümünü özelleştirin. Documents page size @@ -9798,7 +10053,7 @@ tüm krite src/app/components/manage/saved-views/saved-views.component.html 41 - Documents page size + Belgelerin sayfa sayısı Display as @@ -9806,7 +10061,7 @@ tüm krite src/app/components/manage/saved-views/saved-views.component.html 44 - Display as + Olarak göster Table @@ -9814,7 +10069,7 @@ tüm krite src/app/components/manage/saved-views/saved-views.component.html 46 - Table + Tablo Small Cards @@ -9822,7 +10077,7 @@ tüm krite src/app/components/manage/saved-views/saved-views.component.html 47 - Small Cards + Küçük Kartlar Large Cards @@ -9830,7 +10085,7 @@ tüm krite src/app/components/manage/saved-views/saved-views.component.html 48 - Large Cards + Büyük Kartlar No saved views defined. @@ -9854,7 +10109,7 @@ tüm krite src/app/components/manage/saved-views/saved-views.component.ts 158 - Views saved successfully. + Görünümler başarıyla kaydedildi. Error while saving views. @@ -9862,13 +10117,13 @@ tüm krite src/app/components/manage/saved-views/saved-views.component.ts 163 - Error while saving views. + Görünümleri kaydederken bir hata ile karşılaşıldı. storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 depolama dizini @@ -9876,7 +10131,7 @@ tüm krite storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 depolama dizinleri @@ -9884,25 +10139,25 @@ tüm krite Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 - Do you really want to delete the storage path ""? + "" kayıt dizinini gerçekten silmek istiyor musunuz? tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 - künye + etiket tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 - künyeler + etiketler Do you really want to delete the tag ""? @@ -9910,7 +10165,7 @@ tüm krite src/app/components/manage/tag-list/tag-list.component.ts 60 - "" künyesini silmeyi gerçekten istiyor musunuz? + "" etiketini silmeyi gerçekten istiyor musunuz? Use workflows to customize the behavior of Paperless-ngx when events 'trigger' a workflow. @@ -9918,7 +10173,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.html 4 - Use workflows to customize the behavior of Paperless-ngx when events 'trigger' a workflow. + İş akışlarını kullanarak, olaylar bir iş akışını tetiklediğinde Paperless-ngx'in davranışını özelleştirin. Add Workflow @@ -9926,7 +10181,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.html 9 - Add Workflow + İş Akışı Ekleyin No workflows defined. @@ -9934,7 +10189,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.html 80 - No workflows defined. + Herhangi bir iş akışı tanımlanmamış. Saved workflow "". @@ -9942,7 +10197,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.ts 90 - Saved workflow "". + "" iş akışı kaydedildi. Error saving workflow. @@ -9950,7 +10205,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.ts 98 - Error saving workflow. + İş akışını kaydederken bir hata ile karşılaşıldı. Confirm delete workflow @@ -9958,7 +10213,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.ts 131 - Confirm delete workflow + İş akışını silmeyi onayla This operation will permanently delete this workflow. @@ -9966,7 +10221,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.ts 132 - This operation will permanently delete this workflow. + Bu işlem iş akışını kalıcı olarak silecektir. Deleted workflow "". @@ -9974,7 +10229,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.ts 142 - Deleted workflow "". + "" iş akışı silindi. Error deleting workflow "". @@ -9982,7 +10237,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.ts 149 - Error deleting workflow "". + iş akışını silerken bir hata ile karşılaşıldı. Enabled workflow "" @@ -9990,7 +10245,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.ts 162 - Enabled workflow "" + "" iş akışı aktifleştirildi Disabled workflow "" @@ -9998,7 +10253,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.ts 163 - Disabled workflow "" + "" iş akışı devre dışı bırakıldı Error toggling workflow "". @@ -10006,7 +10261,7 @@ tüm krite src/app/components/manage/workflows/workflows.component.ts 170 - Error toggling workflow "". + "" açılıp yada kapanırken bir hata ile karşılaşıldı. Not Found @@ -10014,7 +10269,7 @@ tüm krite src/app/components/not-found/not-found.component.html 6 - Not Found + Bulunamadı Go to Dashboard @@ -10022,7 +10277,7 @@ tüm krite src/app/components/not-found/not-found.component.html 9 - Go to Dashboard + Kontrol Paneline git Equal to @@ -10030,7 +10285,7 @@ tüm krite src/app/data/custom-field-query.ts 24 - Equal to + Eşittir In @@ -10038,7 +10293,7 @@ tüm krite src/app/data/custom-field-query.ts 25 - In + İçinde Is null @@ -10046,7 +10301,7 @@ tüm krite src/app/data/custom-field-query.ts 26 - Is null + Null'dur Exists @@ -10054,7 +10309,7 @@ tüm krite src/app/data/custom-field-query.ts 27 - Exists + Mevcut Contains @@ -10062,7 +10317,7 @@ tüm krite src/app/data/custom-field-query.ts 28 - Contains + İçeren Contains (case-insensitive) @@ -10070,7 +10325,7 @@ tüm krite src/app/data/custom-field-query.ts 29 - Contains (case-insensitive) + İçeren (Büyük-küçük harf duyarsız) Greater than @@ -10078,7 +10333,7 @@ tüm krite src/app/data/custom-field-query.ts 30 - Greater than + Den büyük Greater than or equal to @@ -10086,7 +10341,7 @@ tüm krite src/app/data/custom-field-query.ts 31 - Greater than or equal to + Büyüktür ya da eşittir Less than @@ -10094,7 +10349,7 @@ tüm krite src/app/data/custom-field-query.ts 32 - Less than + Den küçük Less than or equal to @@ -10102,7 +10357,7 @@ tüm krite src/app/data/custom-field-query.ts 33 - Less than or equal to + Küçüktür veya eşittir Range @@ -10110,7 +10365,7 @@ tüm krite src/app/data/custom-field-query.ts 34 - Range + Aralık Boolean @@ -10118,7 +10373,7 @@ tüm krite src/app/data/custom-field.ts 19 - Boolean + Evet/Hayır Date @@ -10126,7 +10381,7 @@ tüm krite src/app/data/custom-field.ts 23 - Date + Tarih Integer @@ -10134,7 +10389,7 @@ tüm krite src/app/data/custom-field.ts 27 - Integer + Tam sayı Number @@ -10142,7 +10397,7 @@ tüm krite src/app/data/custom-field.ts 31 - Number + Sayı Monetary @@ -10150,7 +10405,7 @@ tüm krite src/app/data/custom-field.ts 35 - Monetary + Parasal Text @@ -10158,7 +10413,7 @@ tüm krite src/app/data/custom-field.ts 39 - Text + Metin Url @@ -10166,7 +10421,7 @@ tüm krite src/app/data/custom-field.ts 43 - Url + Bağlantı Document Link @@ -10174,7 +10429,7 @@ tüm krite src/app/data/custom-field.ts 47 - Document Link + Belge Bağlantısı Long Text @@ -10182,7 +10437,7 @@ tüm krite src/app/data/custom-field.ts 55 - Long Text + Uzun Metin Search score @@ -10287,7 +10542,7 @@ tüm krite src/app/data/matching-model.ts 46 - None: Disable matching + Yok: Eşleştirmeyi devre dışı bırak General Settings @@ -10295,7 +10550,7 @@ tüm krite src/app/data/paperless-config.ts 50 - General Settings + Genel Ayarlar OCR Settings @@ -10303,7 +10558,7 @@ tüm krite src/app/data/paperless-config.ts 51 - OCR Settings + OCR Ayarları Barcode Settings @@ -10311,7 +10566,7 @@ tüm krite src/app/data/paperless-config.ts 52 - Barcode Settings + Barkod Ayarları Output Type @@ -10319,7 +10574,7 @@ tüm krite src/app/data/paperless-config.ts 76 - Output Type + Çıktı Türü Language @@ -10327,7 +10582,7 @@ tüm krite src/app/data/paperless-config.ts 84 - Language + Dil Mode @@ -10335,7 +10590,7 @@ tüm krite src/app/data/paperless-config.ts 98 - Mode + Mod Skip Archive File @@ -10343,7 +10598,7 @@ tüm krite src/app/data/paperless-config.ts 106 - Skip Archive File + Arşiv Dosyasını Atla Image DPI @@ -10351,7 +10606,7 @@ tüm krite src/app/data/paperless-config.ts 114 - Image DPI + Görüntü DPI Clean @@ -10359,7 +10614,7 @@ tüm krite src/app/data/paperless-config.ts 121 - Clean + Sıfırdan İşle Deskew @@ -10367,7 +10622,7 @@ tüm krite src/app/data/paperless-config.ts 129 - Deskew + Deskew Rotate Pages @@ -10375,7 +10630,7 @@ tüm krite src/app/data/paperless-config.ts 136 - Rotate Pages + Sayfaları Döndür Rotate Pages Threshold @@ -10383,7 +10638,7 @@ tüm krite src/app/data/paperless-config.ts 143 - Rotate Pages Threshold + Sayfalar Döndürmek İçin Gerekli Eşik Değeri Max Image Pixels @@ -10391,7 +10646,7 @@ tüm krite src/app/data/paperless-config.ts 150 - Max Image Pixels + Maksimum Görüntü Pikseli Color Conversion Strategy @@ -10399,7 +10654,7 @@ tüm krite src/app/data/paperless-config.ts 157 - Color Conversion Strategy + Renk Dönüştürme Stratejisi OCR Arguments @@ -10407,7 +10662,7 @@ tüm krite src/app/data/paperless-config.ts 165 - OCR Arguments + OCR Argümanları Application Logo @@ -10415,7 +10670,7 @@ tüm krite src/app/data/paperless-config.ts 172 - Application Logo + Sistemin Logosu Application Title @@ -10423,7 +10678,7 @@ tüm krite src/app/data/paperless-config.ts 179 - Application Title + Sistemin Başlığı Enable Barcodes @@ -10431,7 +10686,7 @@ tüm krite src/app/data/paperless-config.ts 186 - Enable Barcodes + Barkodları Etkinleştir Enable TIFF Support @@ -10439,7 +10694,7 @@ tüm krite src/app/data/paperless-config.ts 193 - Enable TIFF Support + TIFF Desteğini Etkinleştir Barcode String @@ -10447,7 +10702,7 @@ tüm krite src/app/data/paperless-config.ts 200 - Barcode String + Barkod Dizesi Retain Split Pages @@ -10455,7 +10710,7 @@ tüm krite src/app/data/paperless-config.ts 207 - Retain Split Pages + Bölünmüş Sayfaları Koru Enable ASN @@ -10463,7 +10718,7 @@ tüm krite src/app/data/paperless-config.ts 214 - Enable ASN + ASN'yi etkinleştir ASN Prefix @@ -10471,7 +10726,7 @@ tüm krite src/app/data/paperless-config.ts 221 - ASN Prefix + ASN Ön Eki Upscale @@ -10479,7 +10734,7 @@ tüm krite src/app/data/paperless-config.ts 228 - Upscale + Çözünürlüğü yükseltme DPI @@ -10487,7 +10742,7 @@ tüm krite src/app/data/paperless-config.ts 235 - DPI + DPI Max Pages @@ -10495,7 +10750,7 @@ tüm krite src/app/data/paperless-config.ts 242 - Max Pages + Maksimum Sayfa Sayısı Enable Tag Detection @@ -10503,7 +10758,7 @@ tüm krite src/app/data/paperless-config.ts 249 - Enable Tag Detection + Etiket Algılamayı Etkinleştir Tag Mapping @@ -10511,7 +10766,7 @@ tüm krite src/app/data/paperless-config.ts 256 - Tag Mapping + Etiket Eşlemesi Warning: You have unsaved changes to your document(s). @@ -10519,7 +10774,7 @@ tüm krite src/app/guards/dirty-doc.guard.ts 16 - Warning: You have unsaved changes to your document(s). + Uyarı: Belge(ler)inizde kaydedilmemiş değişiklikler var. Unsaved Changes @@ -10575,7 +10830,7 @@ tüm krite src/app/guards/dirty-saved-view.guard.ts 29 - You have unsaved changes to the saved view + Kaydedilmiş görünümde kaydedilmemiş değişiklikleriniz var Are you sure you want to close this saved view? @@ -10583,7 +10838,7 @@ tüm krite src/app/guards/dirty-saved-view.guard.ts 33 - Are you sure you want to close this saved view? + Bu kaydedilmiş görünümü kapatmak istediğinizden emin misiniz? Save and close @@ -10591,7 +10846,7 @@ tüm krite src/app/guards/dirty-saved-view.guard.ts 37 - Save and close + Kaydet ve kapat You don't have permissions to do that @@ -10599,7 +10854,7 @@ tüm krite src/app/guards/permissions.guard.ts 34 - You don't have permissions to do that + Bunu yapmak için gerekli izinlere sahip değilsiniz Last year @@ -10615,7 +10870,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 15 - %s years ago + %s yıl önce Last month @@ -10631,7 +10886,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 20 - %s months ago + %s ay önce Last week @@ -10639,7 +10894,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 24 - Last week + Geçen hafta %s weeks ago @@ -10647,7 +10902,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 25 - %s weeks ago + %s hafta önce %s days ago @@ -10655,7 +10910,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 30 - %s days ago + %s gün önce %s hour ago @@ -10663,7 +10918,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 34 - %s hour ago + %s saat önce %s hours ago @@ -10671,7 +10926,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 35 - %s hours ago + %s saat önce %s minute ago @@ -10679,7 +10934,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 39 - %s minute ago + %s dakika önce %s minutes ago @@ -10687,7 +10942,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 40 - %s minutes ago + %s dakika önce Just now @@ -10695,7 +10950,7 @@ tüm krite src/app/pipes/custom-date.pipe.ts 73 - Just now + Az önce (no title) @@ -10711,7 +10966,7 @@ tüm krite src/app/services/open-documents.service.ts 124 - You have unsaved changes to the document + Belgede kaydetmemiş değişiklikleriniz var Are you sure you want to close this document? @@ -10775,7 +11030,7 @@ tüm krite src/app/services/settings.service.ts 75 - Bulgarian + Bulgarca Catalan @@ -10855,7 +11110,7 @@ tüm krite src/app/services/settings.service.ts 135 - Hungarian + Macarca Italian @@ -10871,7 +11126,7 @@ tüm krite src/app/services/settings.service.ts 147 - Japanese + Japonca Korean @@ -10879,7 +11134,7 @@ tüm krite src/app/services/settings.service.ts 153 - Korean + Korece Luxembourgish @@ -10911,7 +11166,7 @@ tüm krite src/app/services/settings.service.ts 177 - Persian + Farsça Polish @@ -11007,7 +11262,7 @@ tüm krite src/app/services/settings.service.ts 249 - Vietnamese + Vietnamca Chinese Simplified @@ -11023,7 +11278,7 @@ tüm krite src/app/services/settings.service.ts 261 - Chinese Traditional + Geleneksel Çince ISO 8601 @@ -11039,7 +11294,7 @@ tüm krite src/app/services/settings.service.ts 603 - Successfully completed one-time migratration of settings to the database! + Ayarların veritabanına tek seferlik taşıma işlemi başarıyla tamamlandı! Unable to migrate settings to the database, please try saving manually. @@ -11047,7 +11302,7 @@ tüm krite src/app/services/settings.service.ts 604 - Unable to migrate settings to the database, please try saving manually. + Ayarları veritabanına taşıyamıyoruz, lütfen manuel olarak kaydetmeyi deneyin. You can restart the tour from the settings page. @@ -11055,7 +11310,7 @@ tüm krite src/app/services/settings.service.ts 677 - You can restart the tour from the settings page. + Ayarlar sayfasından turu yeniden başlatabilirsiniz. Connecting... @@ -11103,7 +11358,7 @@ tüm krite src/app/services/websocket-status.service.ts 25 - Document already exists. Note: existing document is in the trash. + Belge zaten mevcut. Not: Mevcut belge çöp kutusunda. Document with ASN already exists. @@ -11111,7 +11366,7 @@ tüm krite src/app/services/websocket-status.service.ts 26 - Document with ASN already exists. + ASN içeren belge zaten mevcut. Document with ASN already exists. Note: existing document is in the trash. @@ -11119,7 +11374,7 @@ tüm krite src/app/services/websocket-status.service.ts 27 - Document with ASN already exists. Note: existing document is in the trash. + ASN içeren belge zaten mevcut. Not: mevcut belge çöp kutusunda. File not found. @@ -11136,7 +11391,7 @@ tüm krite 29 Pre-Consume is a term that appears like that in the documentation as well and does not need a specific translation - Tüketim öncesi komut dosyası yok. + Tüketim öncesi komut dosyası mevcut değil. Error while executing pre-consume script. @@ -11145,7 +11400,7 @@ tüm krite 30 Pre-Consume is a term that appears like that in the documentation as well and does not need a specific translation - Tüketim öncesi komut dosyasını işlerken hata oluştu. + Tüketim öncesi komut dosyasını işlerken bir hata meydana geldi. Post-consume script does not exist. @@ -11154,7 +11409,7 @@ tüm krite 31 Post-Consume is a term that appears like that in the documentation as well and does not need a specific translation - Tüketim sonrası komut dosyası yok. + Tüketim sonrası komut dosyası mevcut değil. Error while executing post-consume script. @@ -11163,7 +11418,7 @@ tüm krite 32 Post-Consume is a term that appears like that in the documentation as well and does not need a specific translation - Tüketim sonrası komut dosyasını işlerken hata oluştu. + Tüketim sonrası komut dosyasını işlerken bir hata meydana geldi. Received new file. diff --git a/src-ui/src/locale/messages.uk_UA.xlf b/src-ui/src/locale/messages.uk_UA.xlf index feda5c473..b18b17aef 100644 --- a/src-ui/src/locale/messages.uk_UA.xlf +++ b/src-ui/src/locale/messages.uk_UA.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Закрити @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 Попередній @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 Наступний @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Попередній місяць @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 Наступний місяць @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ГГ @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Закрити @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Оберіть місяць @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Години @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 ММ @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Оберіть рік @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Хвилини @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Перший @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Збільшити години @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Попередній @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Зменшити години @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Наступний @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Збільшити хвилини @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Останній @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Зменшити хвилини @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 СС @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Секунди @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Збільшити секунди @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 Зменшити секунди @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Документи @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Налаштування @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Увімкнути @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Логи @@ -742,11 +742,35 @@ Переглянути файли журналу для програми та перевірки пошти. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + Показувати + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ Завантаження... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Що це? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Розширений пошук @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Помилка отримання користувачів @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Помилка отримання груп @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Сталися помилки при збереженні налаштувань. @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Обробка файлів @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Відхилити @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Результат @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Відхилити вибрані @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Відхилити все @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Підтвердити відхилення всіх @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Скасовувати усі завдань? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 в черзі @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 запущено @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 завершено @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 невдачі @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Смітник @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Видалити вибране @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Підтвердьте видалення @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Користувачі та групи @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Пароль змінено, ви миттєво вийдете з системи. @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Користувача "" збережено. @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Помилка при збереженні користувача. @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Підтвердьте видалення облікового запису @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Ця операція остаточно видалить даний обліковий запис. @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Deleted user "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Error deleting user "". @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Групу "" збережено. @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Помилка при збереженні групи. @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Підтвердьте видалення групи користувачів @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Ця операція остаточно видалить цю групу користувачів. @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Deleted group "" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Error deleting group "". @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Документація @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Збережені представлення @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Відкрити документи @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Закрити все @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Керування @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Ел. пошта @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Адміністрування @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Налаштування @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 є доступним для оновлення. @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Натисніть для перегляду. @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx може автоматично перевіряти наявність оновлень @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Як це працює? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Доступне оновлення @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Представлення бічної панелі оновлено @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Помилка оновлення представлень бічної панелі @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Сталася помилка при збереженні налаштувань для перевірки оновлень. @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Очистити @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Підтвердження @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Підтвердити @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 Вірно @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 Невірно @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Шукати в документації... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Всі @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Не @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Додати запит @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Додати вираз @@ -3758,18 +3830,6 @@ Відносні дати - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - зараз - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ Додано + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + зараз + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Протягом одного тижня @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Протягом одного місяця @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Протягом трьох місяців @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Протягом одного року @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Цього року @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Цього місяця @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ Вчора + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Алгоритм зіставлення @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Шаблон зіставлення @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Нечутливий до регістру @@ -3982,19 +4082,11 @@ Додати параметр - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Валюта за замовчуванням @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 3-символьний код валюти @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Використовувати мову @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Призначити тип документа @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Призначити кореспондента @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Помилка @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Шлях @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Колір + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Вхідний тег @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Вхідні теги автоматично призначаються усім обробленим документам. @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Створити новий тег @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Редагувати тег @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Ел. пошта @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Two-factor Authentication @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Disable Two-factor Authentication @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Створити новий обліковий запис користувача @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Редагувати обліковий запис @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 TOTP вимкнено @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp deactivation failed @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Тип тригера @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Set scheduled trigger offset and which date field to use. @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Offset days @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Positive values will trigger after the date, negative values before. @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Відносно @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Користувацьке поле @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Користувацьке поле для використання дати. @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Повторюваний @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Trigger is recurring. @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Recurring interval days @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Repeat the trigger every n days. @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Тригер для документів, які збігаються усі фільтри, зазначені нижче. @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Фільтрувати назви файлів @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Обробляти лише ті документи, які повністю відповідають назві файлу, якщо вказано. Шаблони, такі як *.pdf чи *invoice* дозволені. Без врахування регістру. @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Джерела фільтрації @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Шлях фільтра - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - Застосовувати до документів, які відповідають цьому шляху. Допускаються символи підставляння, позначені як *. Нормалізовано за регістром.</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Правило фільтрування пошти @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Застосувати до документів, що обслуговуються за допомогою цього правила пошти. @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Алгоритм розпізнавання вмісту @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Шаблон відповідності вмісту - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - Має деякі з тегів + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - Має кореспондента + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Має тип документа + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Тип дії @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Призначити назву @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Може містити деякі заповнювачі, дивись <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>документацію</a>. @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Призначити теги @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Призначити шлях до сховища @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Призначити користувацькі поля @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Призначити власника @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Призначити дозволи на перегляд @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Призначити права на редагування @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Вилучити позначки @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Видалити всі @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Видалити всіх кореспондентів @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Видалити всі типи документів @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Видалити всі шляхи зберігання @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Вилучити власне поле @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Видалити власників @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Вилучити дозволи @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Переглянути дозволи @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Редагувати дозволи @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Тема електронного листа @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Текст листа @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Одержувачі електронної пошти @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Вкласти документ @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 URL-адреса вебхука @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Використовувати параметри для тіла webhook @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Send webhook payload as JSON @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Параметри вебхука @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Тіло вебхука @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Заголовки веб-хуків @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Включити документ @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Використати теку @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API вивантаження @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Отримання пошти @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 Веб-інтерфейс @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Користувацьке поле @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Споживання розпочато @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Документ додано @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Документ оновлено @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Заплановано @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Призначення @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Видалення @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Вебхук + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + Має кореспондента + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Має тип документа + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Створити новий робочий процес @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Редагувати робочий процес + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Адреса(-и) електронної пошти @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Тема @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Повідомлення @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Використовувати архівну версію @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Надіслати листа - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - Надіслати документ електронною поштою + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Лист відправлено + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned Не призначено @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 Відкрити фільтр @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Пропозиції: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths Додати елемент @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Додати тег @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Видалити тег @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Фільтрувати документи за цими тегами @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Докладніше @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Scan the QR code with your authenticator app and then enter the code below @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Authenticator secret @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 You can store this secret and use it to reinstall your authenticator app at a later time. @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Код @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Recovery codes will not be shown again, make sure to save them. @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Скопіювати коди @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Адреси електронної пошти повинні збігатися @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Паролі повинні збігатися @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Обліковий запис успішно оновлено @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Помилка збереження профілю @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Помилка генерації токена авторизації @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Помилка від'єднання акаунта соціальної мережі @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Помилка отримання налаштувань TOTP @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP успішно активовано @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Помилка активації TOTP @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP успішно деактивовано @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Помилка деактивації TOTP @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Фільтр по кореспонденту @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Фільтрувати по типу документа @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Фільтрувати по шляху зберігання @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Так @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Ні @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Сторінка @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Переопрацювати @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Помилка отримання метаданих @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Помилка при отриманні пропозицій. @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Document "" saved successfully. @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Error saving document "" @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Помилка при збереженні документа @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Ви дійсно хочете перенести документ "" до смітника? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Документи можуть бути відновлені перед остаточним видаленням. @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Перемістити у смітник @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Помилка видалення документа @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Підтвердити повторну обробку @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Ця операція остаточно відновить архівний файл цього документа. @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Файл архіву буде повторно створений з поточними налаштуваннями. @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Помилка виконання операції @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Помилка завантаження документа @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Вмістити сторінку @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -7850,7 +8066,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -7858,7 +8074,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -7866,11 +8082,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 An error occurred loading tiff: @@ -7882,19 +8098,11 @@ Записів не знайдено. - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - Вибрати: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Редагувати: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Власні поля @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Фільтрувати спеціальні поля @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Встановити значення @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Повернути @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Об'єднати @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Включити: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Архівовані файли @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Оригінальні файли @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Використовувати відформатовану назву файлу @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Помилка виконання групової операції @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' "" і "" @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' і "" @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Підтвердити призначення тегів @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Ця операція додасть тег "" до вибраних файлів. @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Ця операція додасть теги до вибраних документів. @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Ця операція видалить тег "" з вибраних документів. @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Ця операція видалить теги "" з вибраних документів. @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Ця операція додасть теги "" і видалить теги з вибраних документів. @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Підтвердьте призначення кореспондента @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Ця операція призначить кореспондента "" до вибраних документів. @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Ця операція видалить кореспондента з вибраних документів. @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Підтвердьте призначення типу документа @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Ця операція призначить тип документа "" до вибраних документів. @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Ця операція видалить тип документа з вибраних документів. @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Підтвердьте призначення шляху сховища @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Ця операція призначить шлях зберігання "" до вибраних документів. @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Ця операція видалить шлях зберігання з вибраних документів. @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Підтвердити призначення користувацького поля @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Ця операція призначить користувацьке поле "" до обраного(их) документа(ів). @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Ця операція призначить користувацькі поля до обраного(их) документа(ів). @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Ця операція видалить користувацьке поле "" з обраного(их) документа(ів). @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Ця операція видалить користувацькі поля з обраного(их) документа(ів). @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Ця операція призначить користувацькі поля та видалить користувацькі поля на обраногому(их) документі(ах). @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Перемістити обраний(х) документ(ів) до смітника? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Ця операція остаточно відновить архівні файли для вибраного(их) документа(ів). @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Файли архіву будуть повторно згенеровані з поточними налаштуваннями. @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Підтвердження повороту @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Ця операція остаточно поверне оригінальну версію документа(ів). @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Підтвердити об’єднання @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Ця операція об’єднає вибраних документів у новий документ. @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Об'єднаний документ буде додано в чергу на одбір. @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Custom fields updated. @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Error updating custom fields. @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Фільтрувати по тегу @@ -8482,7 +8690,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Зняти виділення @@ -8502,11 +8710,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Вибрати сторінку @@ -8514,31 +8722,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Вибрати всі - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - Показувати + + src/app/data/matching-model.ts + 45 + + Немає Sort src/app/components/document-list/document-list.component.html - 48 + 68 Впорядкувати @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Представлення @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Зберегти "" @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Зберегти як... @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Усі збережені представлення @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Вибрано з 1 документа} other {Вибрано з документів}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Один документ} other { документів}} @@ -8594,7 +8814,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (фільтровано) @@ -8602,7 +8822,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8614,7 +8834,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Помилка при завантаженні документів @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Впорядкувати за АСН @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Впорядкувати за кореспондентом @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Впорядкувати за назвою @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Впорядкувати за власником @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Впорядкувати за нотатками @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Впорядкувати за типом документа @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Впорядкувати за шляхом зберігання @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Впорядкувати за датою створення @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Впорядкувати за датою додавання @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sort by number of pages @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Спільні @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sort by @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Редагувати документ @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Попередній перегляд документа @@ -8790,7 +9010,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Скинути фільтри / вибір @@ -8798,7 +9018,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Відкрити перший [selected] документ @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Попередня сторінка @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Наступна сторінка @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Представлення "" успішно збережено. @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Failed to save view "". @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Представлення "" успішно створено. @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Назва та вміст @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Тип файлу @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Більше схожих @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 дорівнює @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 не заповнено @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 заповнено @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 більше ніж @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 менше ніж @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Correspondent: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Без кореспондента @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Document type: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Без типу документа @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Storage path: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Без шляху зберігання @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Tag: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Без жодного тегу @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Custom fields query @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Назва: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 АСН: @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Власник: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Власник не в: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Без власника @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 кореспондент @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 кореспонденти @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Востаннє використано @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Ви дійсно хочете видалити кореспондента ""? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Filter Documents () @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 тип документа @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 типи документів @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Ви дійсно хочете видалити тип документа ""? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ Вимкнено + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Немає правил пошти. @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Помилка отримання поштових скриньок @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Помилка отримання правил пошти @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Успішна автентифікація OAuth2 @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 Помилка автентифікації OAuth2, перегляньте логи для деталей @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Поштову скриньку "" збережено. @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Помилка збереження облікового запису. @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Підтвердьте видалення поштової скриньки @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Ця операція остаточно видалить цю поштову скриньку. @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Deleted mail account "" @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Error deleting mail account "". @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Processing mail account "" @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Error processing mail account "" @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Збережено правило "". @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Помилка при збереженні правила. @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Rule "" enabled. @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Rule "" disabled. @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Error toggling rule "". @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Підтвердьте видалення правила пошти @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Ця операція остаточно видалить це правило пошти. @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Deleted mail rule "" @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Error deleting mail rule "". @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Права доступу оновлено @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Помилка оновлення прав доступу + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Один } other { всього }} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ Автоматично - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - Немає - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Успішно створено . @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Виникла помилка протягом створення . @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Successfully updated "". @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Виникла помилка під час збереження . @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Пов'язані документи не будуть видалені. @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Помилка видалення елемента @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Права доступу успішно оновлено @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Ця операція остаточно видалить всі об'єкти. @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Об'єкти успішно видалені @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Помилка видалення об'єктів @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 шлях зберігання @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 шляхи зберігання @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Ви дійсно хочете видалити шлях зберігання ""? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 тег @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 теги diff --git a/src-ui/src/locale/messages.vi_VN.xlf b/src-ui/src/locale/messages.vi_VN.xlf index 857716b19..ddf852ae3 100644 --- a/src-ui/src/locale/messages.vi_VN.xlf +++ b/src-ui/src/locale/messages.vi_VN.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 Đóng @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -27,7 +27,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 @@ -37,7 +37,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 @@ -47,11 +47,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 @@ -61,11 +61,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 @@ -75,7 +75,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -85,7 +85,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -95,11 +95,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -109,7 +109,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -119,7 +119,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -129,7 +129,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -139,7 +139,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -149,7 +149,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -159,11 +159,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -173,7 +173,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -183,7 +183,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -193,7 +193,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -203,7 +203,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -213,7 +213,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -223,7 +223,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -233,7 +233,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -243,7 +243,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -253,7 +253,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -263,7 +263,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -273,7 +273,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -283,7 +283,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -293,7 +293,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -303,7 +303,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -315,7 +315,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -324,7 +324,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -410,11 +410,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -430,17 +430,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -448,19 +448,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 Tài liệu @@ -482,11 +482,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 Cài đặt @@ -700,7 +700,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 Bật @@ -736,7 +736,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -760,7 +760,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -768,11 +768,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -862,11 +862,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 Nhật ký @@ -882,11 +882,37 @@ Xem lại log của ứng dụng và kiểm tra email. + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + + Trình diễn + + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + lines + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -900,11 +926,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -940,7 +966,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -956,7 +982,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -968,11 +994,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -1002,6 +1032,14 @@ Đang tải... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1263,6 +1301,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + Gì đây nhỉ? @@ -1295,11 +1337,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1471,7 +1513,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 Tìm kiếm nâng cao @@ -1515,7 +1557,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1563,7 +1605,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1579,11 +1621,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1669,19 +1711,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1707,19 +1749,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1751,11 +1793,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1847,7 +1889,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1855,7 +1897,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1879,7 +1921,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1887,7 +1929,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1895,11 +1937,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1945,7 +1983,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 Lỗi truy xuất người dùng @@ -1959,7 +1997,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 Lỗi truy xuất nhóm @@ -2003,7 +2041,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 Đã xảy ra lỗi khi lưu các thiết lập. @@ -2017,11 +2055,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 Tác vụ tệp @@ -2037,6 +2075,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -2075,7 +2117,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -2193,11 +2235,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -2259,7 +2301,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2271,7 +2313,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2319,7 +2361,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 Bỏ qua @@ -2427,7 +2469,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 Kết quả @@ -2437,7 +2479,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 Loại bỏ đã được chọn @@ -2447,7 +2489,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 Bỏ qua tất cả @@ -2457,7 +2499,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 Xác nhận loại bỏ tất cả @@ -2467,7 +2509,7 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 Huyt bỏ tất cả @@ -2475,11 +2517,27 @@ tác vụ? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + Error dismissing tasks + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + Error dismissing task + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 đã xếp lịch @@ -2489,7 +2547,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 đã bắt đầu @@ -2499,7 +2557,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 đã hoàn thành @@ -2509,7 +2567,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 đã thất bại @@ -2523,11 +2581,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 Thùng rác @@ -2559,6 +2617,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + Xóa các mục được chọn @@ -2648,7 +2714,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2664,7 +2734,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2684,11 +2754,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2708,39 +2778,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2782,11 +2852,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 Xác nhận xoá @@ -2814,11 +2884,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2826,15 +2896,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2952,11 +3022,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 Người dùng và Nhóm @@ -3068,43 +3138,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -3142,11 +3212,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 Mật khẩu đã đổi, bạn sẽ được logout sau đây @@ -3156,7 +3226,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 Đã lưu tài khoản " @@ -3168,7 +3238,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 Lỗi lưu tài khoản. @@ -3178,7 +3248,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 Xác nhận xóa tài khoản @@ -3188,7 +3258,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 Thao tác này sẽ xóa vĩnh viễn tài khoản @@ -3198,31 +3268,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -3230,15 +3300,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -3252,7 +3322,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 Người dùng đã xóa "" @@ -3262,7 +3332,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 Lỗi xóa người dùng "". @@ -3272,7 +3342,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 Đã lưu nhóm " @@ -3284,7 +3354,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 Lỗi khi xóa nhóm. @@ -3294,7 +3364,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 Xác nhận xóa nhóm @@ -3304,7 +3374,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 Thao tác này sẽ xóa vĩnh viễn nhóm. @@ -3314,7 +3384,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 Nhóm đã xóa "" @@ -3324,7 +3394,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 Lỗi xóa nhóm "". @@ -3379,11 +3449,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 Tài liệu tham khảo @@ -3393,11 +3463,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 Lượt xem đã lưu @@ -3407,7 +3477,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 Mở tài liệu @@ -3417,11 +3487,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 Đóng tất cả @@ -3431,7 +3501,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 Quản lý @@ -3441,11 +3511,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3459,11 +3529,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -3475,11 +3545,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3497,11 +3567,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3515,11 +3585,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3533,11 +3603,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3555,11 +3625,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3573,11 +3643,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 Thư @@ -3587,7 +3657,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 Quản trị @@ -3597,11 +3667,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 Cấu hình @@ -3611,7 +3681,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3621,7 +3691,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 đã có sẵn. @@ -3631,7 +3701,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 Nhấp để xem. @@ -3641,7 +3711,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx có thể tự động check update @@ -3651,7 +3721,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 Cách thức hoạt động? @@ -3661,7 +3731,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 Có bản cập nhật @@ -3671,7 +3741,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 Đã cập nhật các views sidebar @@ -3681,7 +3751,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 Lỗi cập nhật các views sidebar @@ -3691,7 +3761,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 Đã có lỗi khi lưu các thiết lập kiểm tra cập nhật. @@ -3767,7 +3837,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3965,6 +4035,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + Xóa @@ -3983,7 +4057,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 Xác nhận @@ -3993,7 +4067,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -4001,31 +4075,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 Xác nhận @@ -4175,7 +4249,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -4195,7 +4269,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -4209,7 +4283,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -4247,15 +4321,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 ĐÚNG VẬY @@ -4265,15 +4339,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 SAI @@ -4283,11 +4357,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 Tài liệu tìm kiếm ... @@ -4297,7 +4371,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -4311,7 +4385,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -4330,8 +4404,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 Tất cả @@ -4341,7 +4415,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 Không @@ -4351,7 +4425,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 Thêm truy vấn @@ -4361,7 +4435,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 Thêm biểu thức @@ -4379,20 +4453,6 @@ Ngày tương đối - - - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - - hiện tại @@ -4431,11 +4491,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -4447,13 +4507,23 @@ Đã thêm + + + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + + hiện tại Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 Trong vòng 1 tuần @@ -4463,7 +4533,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 Trong vòng 1 tháng @@ -4473,7 +4543,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 Trong vòng 3 tháng @@ -4483,7 +4553,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 Trong vòng 1 năm @@ -4493,7 +4563,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 Năm nay @@ -4503,7 +4573,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 Tháng này @@ -4513,7 +4583,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -4523,6 +4593,38 @@ Hôm qua + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + Previous week + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + Previous month + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + Previous quarter + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + Previous year + Matching algorithm @@ -4539,7 +4641,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 Thuật toán tìm kiếm @@ -4561,7 +4663,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 Mẫu phù hợp @@ -4583,11 +4685,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 Trường hợp bình thường @@ -4641,23 +4743,13 @@ Thêm tùy chọn - - - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - - Cảnh báo: Các trường hợp hiện tại của trường này sẽ giữ lại chỉ số giá trị hiện tại của họ (ví dụ: tùy chọn số 1, #2, #3) sau khi chỉnh sửa các tùy chọn tại đây Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Tiền tệ mặc định @@ -4667,7 +4759,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Mã tiền tệ 3 ký tự @@ -4677,7 +4769,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 Sử dụng địa phương @@ -4957,7 +5049,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -5179,7 +5271,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 Gán loại tài liệu @@ -5203,7 +5295,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 Gán biên tập viên @@ -5217,7 +5309,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -5239,6 +5331,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + Lỗi @@ -5475,7 +5571,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 Đường dẫn @@ -5577,17 +5673,25 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 Màu sắc + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + Parent + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Thẻ Hộp thư đến @@ -5597,7 +5701,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 Thẻ hộp thư đến được tự động gán cho tất cả tài liệu được sử dụng. @@ -5607,7 +5711,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 Tạo thẻ mới @@ -5617,7 +5721,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 Sửa thẻ @@ -5631,7 +5735,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -5641,6 +5745,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Thư điện tử @@ -5735,7 +5843,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 Xác thực hai yếu tố @@ -5753,11 +5861,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 Vô hiệu hóa xác thực hai yếu tố @@ -5767,7 +5875,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 Tạo mới tài khoản người dùng @@ -5777,7 +5885,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 Sửa tài khoản người dùng @@ -5787,7 +5895,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp đã bị vô hiệu hóa @@ -5797,11 +5905,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Hủy kích hoạt Totp không thành công @@ -5879,7 +5987,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 Loại kích hoạt @@ -5889,7 +5997,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 Thiết lập khoảng thời gian kích hoạt theo lịch và trường ngày nào sẽ được sử dụng. @@ -5899,7 +6007,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 Số ngày bù/trễ @@ -5909,7 +6017,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 Các giá trị dương sẽ kích hoạt sau ngày, giá trị âm trước. @@ -5919,7 +6027,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 Liên quan đến @@ -5929,7 +6037,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Trường tùy chỉnh @@ -5939,7 +6047,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 Trường tùy chỉnh để sử dụng cho ngày. @@ -5949,7 +6057,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Định kỳ @@ -5959,7 +6067,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 Kích hoạt lặp lại. @@ -5967,7 +6075,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Số ngày lặp lại theo khoảng thời gian @@ -5977,7 +6085,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 Lặp lại kích hoạt sau mỗi n ngày. @@ -5987,7 +6095,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 Kích hoạt cho các tài liệu mà Matchallfilters được chỉ định dưới đây. @@ -5997,7 +6105,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Lọc tên file @@ -6007,7 +6115,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 Áp dụng cho các tài liệu khớp với tên tệp này. Cho phép sử dụng các ký tự đại diện như *.pdf hoặc *invoice*. @@ -6017,7 +6125,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 Lọc nguồn @@ -6027,27 +6135,25 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 Lọc đường dẫn - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - - Áp dụng cho các tài liệu phù hợp với đường dẫn này. Các ký tự đại diện được chỉ định là * được cho phép. Trường hợp chuẩn hóa. </a> - + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Lọc mail rule @@ -6057,7 +6163,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 Áp dụng cho các văn bản áp dụng mail rule này @@ -6067,7 +6173,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 Thuật toán khớp nội dung @@ -6077,53 +6183,49 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 Mẫu khớp nội dung - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - - Có bất kỳ thẻ nào - + Advanced Filters - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - - Có người liên lạc - + Add filter - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - Có loại tài liệu + No advanced workflow filters defined. - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + Complete the custom field query configuration. Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 Loại hành động @@ -6131,7 +6233,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Gán tiêu đề @@ -6141,7 +6243,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 Có thể bao gồm một số người giữ chỗ, xem <a target = '_ blank' href ='https: //docs. paperless-ngx.com/usage/#workflows'> tài liệu </a>. @@ -6149,7 +6251,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 Gán thẻ @@ -6159,7 +6261,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 Gán đường dẫn lưu @@ -6169,7 +6271,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 Gán các trường tùy chỉnh @@ -6179,7 +6281,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 Gán người phụ trách @@ -6189,7 +6291,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 Gán quyền xem @@ -6199,7 +6301,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 Gán quyền sửa @@ -6209,7 +6311,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 Xóa thẻ @@ -6219,31 +6321,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 Loại bỏ tất cả @@ -6253,7 +6355,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 Loại bỏ các phóng viên @@ -6263,7 +6365,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 Xóa các loại tài liệu @@ -6273,7 +6375,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 Loại bỏ các đường dẫn lưu trữ @@ -6283,7 +6385,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 Xóa các trường tùy chỉnh @@ -6293,7 +6395,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 Loại bỏ chủ sở hữu @@ -6303,7 +6405,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 Loại bỏ quyền @@ -6313,7 +6415,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 Xem quyền @@ -6323,7 +6425,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 Chỉnh sửa quyền @@ -6333,7 +6435,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 Chủ đề email @@ -6343,7 +6445,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 Cơ quan email @@ -6353,7 +6455,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 Người nhận email @@ -6363,7 +6465,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 Đính kèm tài liệu @@ -6373,7 +6475,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 URL Webhook @@ -6383,7 +6485,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 Sử dụng các thông số cho cơ thể webhook @@ -6393,7 +6495,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 Gửi tải trọng webhook dưới dạng json @@ -6403,7 +6505,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook params @@ -6413,7 +6515,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Cơ thể webhook @@ -6423,7 +6525,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Tiêu đề webhook @@ -6433,7 +6535,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 Bao gồm tài liệu @@ -6443,7 +6545,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 Tiêu thụ thư mục @@ -6453,7 +6555,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Tải lên API @@ -6463,7 +6565,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 Gửi thư @@ -6473,7 +6575,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 UI web @@ -6483,7 +6585,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -6497,7 +6599,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 Trường tùy chỉnh @@ -6507,7 +6609,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 Tiêu thụ bắt đầu @@ -6517,7 +6619,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 Tài liệu được thêm vào @@ -6527,7 +6629,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 Cập nhật tài liệu @@ -6537,7 +6639,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 Dự kiến @@ -6547,7 +6649,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 Phân công @@ -6557,7 +6659,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 Loại bỏ @@ -6567,17 +6669,99 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + Has any of these tags + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + Has all of these tags + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + Does not have these tags + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + + Có người liên lạc + + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + Does not have correspondents + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + Có loại tài liệu + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + Does not have document types + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + Has storage path + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + Does not have storage paths + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + Matches custom field query + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 Tạo quy trình làm việc mới @@ -6587,17 +6771,25 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 Chỉnh sửa quy trình làm việc + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 Địa chỉ email (ES) @@ -6607,7 +6799,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 Chủ thể @@ -6617,7 +6813,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 Tin nhắn @@ -6627,7 +6823,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 Sử dụng phiên bản lưu trữ @@ -6637,32 +6833,38 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 Gửi email - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - - Tài liệu email - + Some email servers may reject messages with large attachments. Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 Email đã gửi + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + Error emailing documents + Error emailing document @@ -6747,7 +6949,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned @@ -6758,7 +6960,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 OpenFilter @@ -6806,7 +7008,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -6846,11 +7048,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 Đề xuất: @@ -6996,7 +7198,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths @@ -7011,11 +7213,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -7053,7 +7255,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 Thêm thẻ @@ -7063,7 +7265,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 Xóa thẻ @@ -7073,7 +7275,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 Lọc tài liệu với các thẻ này @@ -7089,6 +7291,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + Đọc thêm @@ -7421,7 +7627,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -7433,11 +7639,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -7469,7 +7675,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -7553,7 +7759,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 Quét mã QR bằng ứng dụng Authenticator của bạn và sau đó nhập mã bên dưới @@ -7563,7 +7769,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 Bí mật xác thực @@ -7573,7 +7779,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 Bạn có thể lưu trữ bí mật này và sử dụng nó để cài đặt lại ứng dụng Authenticator của bạn sau đó. @@ -7583,7 +7789,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 Mã số @@ -7593,7 +7799,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 Mã phục hồi sẽ không được hiển thị lại, đảm bảo lưu chúng. @@ -7603,7 +7809,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 Sao chép mã @@ -7613,7 +7819,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 Email phải phù hợp @@ -7623,7 +7829,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 Mật khẩu phải khớp @@ -7633,7 +7839,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 Hồ sơ cập nhật thành công @@ -7643,7 +7849,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 Hồ sơ lưu lỗi @@ -7653,7 +7859,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 Lỗi tạo mã thông báo auth @@ -7663,7 +7869,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 Lỗi ngắt kết nối tài khoản xã hội @@ -7673,7 +7879,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 Lỗi tìm nạp cài đặt TOTP @@ -7683,7 +7889,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP kích hoạt thành công @@ -7693,11 +7899,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 Lỗi kích hoạt TOTP @@ -7707,7 +7913,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP đã vô hiệu hóa thành công @@ -7717,11 +7923,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 Lỗi hủy kích hoạt TOTP @@ -7959,6 +8165,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -8223,7 +8433,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 Lọc theo Phóng viên @@ -8241,7 +8451,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 Lọc theo loại tài liệu @@ -8259,7 +8469,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 Lọc theo đường dẫn lưu trữ @@ -8283,7 +8493,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 Đúng @@ -8297,7 +8507,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 KHÔNG @@ -8465,7 +8675,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -8541,8 +8751,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 Trang @@ -8590,7 +8800,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 Xử lý lại @@ -8626,7 +8836,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF Editor @@ -8668,11 +8878,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -8714,11 +8924,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8744,11 +8954,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8774,11 +8984,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -9108,7 +9318,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 Lỗi truy xuất siêu dữ liệu @@ -9118,7 +9328,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 Lỗi truy xuất đề xuất. @@ -9128,11 +9338,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 Tài liệu "" Đã lưu thành công. @@ -9142,7 +9352,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 Tài liệu lưu lỗi "" @@ -9152,7 +9362,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 Tài liệu lưu lỗi @@ -9162,7 +9372,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 Bạn có thực sự muốn chuyển tài liệu "" sang thùng rác không? @@ -9172,11 +9382,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 Tài liệu có thể được khôi phục trước khi xóa vĩnh viễn. @@ -9186,11 +9396,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 Di chuyển đến thùng rác @@ -9200,7 +9410,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 Lỗi khi xóa tài liệu. @@ -9210,11 +9420,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 Tái xử lý xác nhận @@ -9224,7 +9434,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 Hoạt động này sẽ tái tạo vĩnh viễn tệp lưu trữ cho tài liệu này. @@ -9234,7 +9444,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 Tệp lưu trữ sẽ được tạo lại với các cài đặt hiện tại. @@ -9244,7 +9454,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 Tái xử lý hoạt động cho "" sẽ bắt đầu trong nền. Đóng và mở lại hoặc tải lại tài liệu này sau khi hoạt động hoàn thành để xem nội dung mới. @@ -9254,7 +9464,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 Lỗi thực hiện thao tác @@ -9264,7 +9474,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 Lỗi khi tải xuống tài liệu @@ -9274,7 +9484,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 Trang phù hợp @@ -9284,7 +9494,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 PDF edit operation for "" will begin in the background. @@ -9292,7 +9502,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 Error executing PDF edit operation @@ -9300,7 +9510,7 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 Print failed. @@ -9308,7 +9518,7 @@ Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 Error loading document for printing. @@ -9316,11 +9526,11 @@ An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 Đã xảy ra lỗi tải TIFF: @@ -9334,23 +9544,13 @@ Không tìm thấy mục. - - - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - - Chọn: Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 Sửa: @@ -9360,7 +9560,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -9374,7 +9574,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -9388,7 +9588,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -9402,7 +9602,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -9416,7 +9616,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -9424,7 +9624,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 Trường tùy chỉnh @@ -9434,7 +9634,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 Bộ lọc trường tùy chỉnh @@ -9444,7 +9644,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 Đặt giá trị @@ -9454,7 +9654,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 Quay @@ -9464,7 +9664,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 Hợp nhất @@ -9474,7 +9674,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 Bao gồm: @@ -9484,7 +9684,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 Các tập tin được lưu trữ @@ -9494,7 +9694,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 Tệp gốc @@ -9504,7 +9704,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 Sử dụng tên tệp định dạng @@ -9514,7 +9714,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 Lỗi khi thực hiện hoạt động hàng loạt @@ -9524,11 +9724,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 "" @@ -9536,7 +9736,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' @@ -9547,7 +9747,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' @@ -9558,7 +9758,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 Xác nhận việc gán thẻ @@ -9568,7 +9768,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 Hoạt động này sẽ thêm thẻ "" tài liệu được chọn. @@ -9578,7 +9778,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 Hoạt động này sẽ thêm (các) tài liệu Tagstoselected. @@ -9588,7 +9788,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 Hoạt động này sẽ xóa thẻ "" từ (các) tài liệu được chọn. @@ -9598,7 +9798,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 Hoạt động này sẽ xóa (các) tài liệu được chọn thẻ. @@ -9608,7 +9808,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 Hoạt động này sẽ thêm thẻ và xóa (các) tài liệu được chọn. @@ -9618,7 +9818,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 Xác nhận phân công phóng viên @@ -9628,7 +9828,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 Hoạt động này sẽ chỉ định (các) tài liệu được chọn từ "". @@ -9638,7 +9838,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 Hoạt động này sẽ loại bỏ (các) tài liệu được chọn ra. @@ -9648,7 +9848,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 Xác nhận phân công loại tài liệu @@ -9658,7 +9858,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 Hoạt động này sẽ chỉ định loại tài liệu "" Tài liệu được chọn. @@ -9668,7 +9868,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 Hoạt động này sẽ loại bỏ loại tài liệu khỏi (các) tài liệu được chọn. @@ -9678,7 +9878,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 Xác nhận phân công đường dẫn lưu trữ @@ -9688,7 +9888,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 Hoạt động này sẽ gán đường dẫn lưu trữ "" (các) tài liệu được chọn. @@ -9698,7 +9898,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 Hoạt động này sẽ loại bỏ đường dẫn lưu trữ khỏi (các) tài liệu được chọn. @@ -9708,7 +9908,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 Xác nhận phân công trường tùy chỉnh @@ -9718,7 +9918,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 Hoạt động này sẽ gán trường tùy chỉnh "" (các) tài liệu được chọn. @@ -9728,7 +9928,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 Hoạt động này sẽ gán (các) tài liệu FieldStoseled tùy chỉnh. @@ -9738,7 +9938,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 Hoạt động này sẽ xóa trường tùy chỉnh "" từ (các) tài liệu được chọn. @@ -9748,7 +9948,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 Hoạt động này sẽ xóa (các) tài liệu được chọn lọc tùy chỉnh. @@ -9758,7 +9958,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 Hoạt động này sẽ chỉ định các trường tùy chỉnh và xóa (các) tài liệu được chọn tùy chỉnh. @@ -9768,7 +9968,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 Tài liệu chuyển động đến thùng rác? @@ -9778,7 +9978,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 Hoạt động này sẽ tái tạo vĩnh viễn các tệp lưu trữ được bỏ qua (các) tài liệu. @@ -9788,7 +9988,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 Các tệp lưu trữ sẽ được tạo lại với các cài đặt hiện tại. @@ -9798,7 +9998,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 Xoay xác nhận @@ -9808,7 +10008,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 Hoạt động này sẽ quay vĩnh viễn phiên bản gốc của (các) (các) (các). @@ -9818,7 +10018,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 Hợp nhất xác nhận @@ -9828,7 +10028,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 Hoạt động này sẽ hợp nhất các tài liệu thành một tài liệu mới. @@ -9838,7 +10038,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 Tài liệu sáp nhập sẽ được xếp hàng để tiêu thụ. @@ -9848,7 +10048,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 Trường tùy chỉnh được cập nhật. @@ -9858,7 +10058,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 Lỗi cập nhật các trường tùy chỉnh. @@ -9900,7 +10100,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 Lọc theo thẻ @@ -10058,7 +10258,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -10072,7 +10272,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 Chọn Không @@ -10082,11 +10282,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 Chọn trang @@ -10096,35 +10296,47 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 Chọn tất cả - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + Select: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 + + + src/app/data/matching-model.ts + 45 - Trình diễn + Không có Sort src/app/components/document-list/document-list.component.html - 48 + 68 Loại @@ -10134,7 +10346,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 Lượt xem @@ -10144,7 +10356,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 Cứu "" @@ -10154,7 +10366,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 Tiết kiệm như ... @@ -10164,7 +10376,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 Tất cả các quan điểm đã lưu @@ -10174,7 +10386,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {Đã chọn của một tài liệu} other {Đã chọn của nhiều tài liệu}} @@ -10182,7 +10394,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {Một tài liệu} other { nhiều tài liệu}} @@ -10190,7 +10402,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (lọc) @@ -10200,7 +10412,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -10214,7 +10426,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 Lỗi khi tải tài liệu @@ -10224,7 +10436,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 Sắp xếp theo ASN @@ -10234,11 +10446,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -10256,7 +10468,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 Sắp xếp theo phóng viên @@ -10266,7 +10478,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 Sắp xếp theo tiêu đề @@ -10276,7 +10488,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 Sắp xếp theo chủ sở hữu @@ -10286,7 +10498,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -10304,7 +10516,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 Sắp xếp theo ghi chú @@ -10314,7 +10526,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 Sắp xếp theo loại tài liệu @@ -10324,7 +10536,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 Sắp xếp theo đường dẫn lưu trữ @@ -10334,7 +10546,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 Sắp xếp theo ngày được tạo @@ -10344,7 +10556,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 Sắp xếp theo ngày thêm @@ -10354,7 +10566,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 Sắp xếp theo số trang @@ -10364,7 +10576,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -10386,7 +10598,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 Chia sẻ @@ -10396,7 +10608,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 Sắp xếp theo @@ -10406,7 +10618,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 Chỉnh sửa tài liệu @@ -10416,7 +10628,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 Xem trước tài liệu @@ -10426,7 +10638,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 Đặt lại bộ lọc / lựa chọn @@ -10436,7 +10648,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 Mở tài liệu [Đã chọn] đầu tiên @@ -10446,7 +10658,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 Trang trước @@ -10456,7 +10668,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 Trang tiếp theo @@ -10466,7 +10678,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 Xem "" Đã lưu thành công. @@ -10476,7 +10688,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 Không thể lưu chế độ xem "". @@ -10486,7 +10698,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 Xem "" Tạo thành công. @@ -10506,7 +10718,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 Tiêu đề & Nội dung @@ -10516,7 +10728,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 Loại tệp @@ -10526,7 +10738,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 Giống như @@ -10536,7 +10748,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 bằng nhau @@ -10546,7 +10758,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 trống rỗng @@ -10556,7 +10768,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 không trống @@ -10566,7 +10778,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 lớn hơn @@ -10576,7 +10788,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 ít hơn @@ -10586,7 +10798,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 Phóng viên: @@ -10596,7 +10808,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 Không có phóng viên @@ -10606,7 +10818,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 Loại tài liệu: @@ -10616,7 +10828,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 Không có loại tài liệu @@ -10626,7 +10838,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 Đường dẫn lưu trữ: @@ -10636,7 +10848,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 Không có đường dẫn lưu trữ @@ -10646,7 +10858,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 Nhãn: @@ -10656,7 +10868,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 Mà không có bất kỳ thẻ @@ -10666,7 +10878,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 Truy vấn trường tùy chỉnh @@ -10676,7 +10888,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 Tiêu đề: @@ -10686,7 +10898,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 Asn: @@ -10696,7 +10908,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 Người sở hữu: @@ -10706,7 +10918,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 Chủ sở hữu không ở: @@ -10716,7 +10928,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 Mà không có chủ sở hữu @@ -10882,7 +11094,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 Phóng viên @@ -10892,7 +11104,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 phóng viên @@ -10902,7 +11114,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 Được sử dụng lần cuối @@ -10912,7 +11124,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 Bạn có thực sự muốn xóa phóng viên ""? @@ -10956,19 +11168,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 Tài liệu lọc () @@ -11028,7 +11240,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 Loại tài liệu @@ -11038,7 +11250,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 Các loại tài liệu @@ -11048,7 +11260,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 Bạn có thực sự muốn xóa loại tài liệu ""? @@ -11172,7 +11384,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -11182,11 +11394,19 @@ Tàn tật + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + View Processed Mail + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 Không có quy tắc thư được xác định. @@ -11196,7 +11416,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 Lỗi truy xuất tài khoản thư @@ -11206,7 +11426,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 Lỗi truy xuất các quy tắc thư @@ -11216,7 +11436,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 Xác thực OAuth2 Thành công @@ -11226,7 +11446,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 Xác thực OAuth2 không thành công, xem nhật ký để biết chi tiết @@ -11236,7 +11456,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 Tài khoản đã lưu "". @@ -11246,7 +11466,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 Tài khoản lưu lỗi. @@ -11256,7 +11476,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 Xác nhận xóa tài khoản thư @@ -11266,7 +11486,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 Hoạt động này sẽ xóa vĩnh viễn tài khoản thư này. @@ -11276,7 +11496,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 Tài khoản thư bị xóa "" @@ -11286,7 +11506,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 Lỗi xóa tài khoản thư "". @@ -11296,7 +11516,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 Xử lý tài khoản thư "" @@ -11306,7 +11526,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 Tài khoản thư xử lý lỗi "" @@ -11316,7 +11536,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 Quy tắc đã lưu "". @@ -11326,7 +11546,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 Quy tắc tiết kiệm lỗi. @@ -11336,7 +11556,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 Quy tắc "" Đã bật. @@ -11346,7 +11566,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 Quy tắc "" bị vô hiệu hóa. @@ -11356,7 +11576,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 Lỗi chuyển đổi quy tắc "". @@ -11366,7 +11586,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 Xác nhận xóa quy tắc thư @@ -11376,7 +11596,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 Hoạt động này sẽ xóa vĩnh viễn quy tắc thư này. @@ -11386,7 +11606,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 Quy tắc thư bị xóa "" @@ -11396,7 +11616,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 Lỗi xóa quy tắc thư "". @@ -11406,7 +11626,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 Quyền được cập nhật @@ -11416,16 +11636,56 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 Lỗi khi cập nhật quyền + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + Processed Mail for + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + No processed email messages found. + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + Received + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + Processed + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + Processed mail(s) deleted + Filter by: @@ -11496,19 +11756,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {Một } other { tổng }} @@ -11516,7 +11776,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -11524,27 +11784,13 @@ Tự động - - - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - - Không có Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 Được tạo thành công. @@ -11554,7 +11800,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 Lỗi xảy ra trong khi tạo. @@ -11564,7 +11810,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 Cập nhật thành công "". @@ -11574,7 +11820,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 Lỗi xảy ra trong khi lưu. @@ -11584,7 +11830,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 Các tài liệu liên quan sẽ không bị xóa. @@ -11594,7 +11840,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 Lỗi trong khi xóa phần tử @@ -11604,7 +11850,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 Quyền được cập nhật thành công @@ -11614,7 +11860,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 Hoạt động này sẽ xóa vĩnh viễn tất cả các đối tượng. @@ -11624,7 +11870,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 Đối tượng đã xóa thành công @@ -11634,7 +11880,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 Lỗi xóa các đối tượng @@ -11746,7 +11992,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 Đường dẫn lưu trữ @@ -11756,7 +12002,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 Đường dẫn lưu trữ @@ -11766,7 +12012,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 Bạn có thực sự muốn xóa đường dẫn lưu trữ ""? @@ -11776,7 +12022,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 nhãn @@ -11786,7 +12032,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 Tags diff --git a/src-ui/src/locale/messages.zh_CN.xlf b/src-ui/src/locale/messages.zh_CN.xlf index eb0e8e813..7e2fc436c 100644 --- a/src-ui/src/locale/messages.zh_CN.xlf +++ b/src-ui/src/locale/messages.zh_CN.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 关闭 @@ -13,16 +13,16 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader - 的幻灯片 + 幻灯片 / Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 上一个 @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 下一个 @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 上个月 @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 下个月 @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 关闭 @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 选择月份 @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 小时 @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 选择年份 @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 分钟 @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 第一页 @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 增加小时 @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 上一页 @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 减少小时 @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 下一页 @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 增加分钟 @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 最后一页 @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 减少分钟 @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 增加秒 @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 减少秒 @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 文档 @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 设置 @@ -540,7 +540,7 @@ src/app/app.component.ts 250 - 这里有<em>大量</em>的其他功能和信息我们没有涉及,但这应该能帮你开始。查看文档或访问GitHub上的项目来了解更多信息或报告问题。 + 这里还有<em>大量</em>我们未涉及的功能和信息,但这些应该足以让您入门。请查看文档或访问 GitHub 上的项目以了解更多信息或报告问题。 Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx! @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 启用 @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 日志 @@ -742,11 +742,35 @@ 检查应用程序和电子邮件检查日志文件。 + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + 显示列 + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ 加载中... + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + 跳转到底部 + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + 这是什么? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1120,7 +1160,7 @@ src/app/components/admin/settings/settings.component.html 179 - Show document counts in sidebar saved views + 在侧边栏保存视图中显示文档计数 Document editing @@ -1184,7 +1224,7 @@ src/app/components/admin/settings/settings.component.html 208 - 保存时自动删除收件箱标签 + 保存时自动删除收件箱标签(s) Show document thumbnail during loading @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 高级搜索 @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 获取用户时发生错误 @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 获取用户组时发生错误 @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 保存设置时发生错误。 @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 文件任务 @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 关闭 @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 结果 @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 取消选择 @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 取消所有 @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 确认取消所有 @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 取消所有的 任务吗? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + 关闭任务时出错 + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + 取消任务时出错 + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 排队中 @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 已开始 @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 已完成 @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 失败 @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 回收站 @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + 删除选择的文件 @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 确认删除 @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 用户 & 组 @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 密码已更改,您将会被立即注销。 @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 已保存用户 ""。 @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 保存用户时发生错误。 @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 确认删除用户帐户 @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 此操作将永久删除此用户帐户。 @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 已删除用户 "" @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 删除用户 " "时出错。 @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 已保存组 ""。 @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 保存用户组时发生错误。 @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 确认删除用户组 @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 此操作将永久删除此用户组。 @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 已删除群组"" @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 删除群组 " "时发生错误。 @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 帮助文档 @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 保存视图 @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 打开文档 @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 全部关闭 @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 管理 @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 邮件 @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 管理 @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 配置 @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 可用 @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 点击查看 @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx 可以自动检查更新 @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 这是如何运作的? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 有可用更新 @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 侧边栏视图已更新 @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 更新侧边栏视图时发生错误 @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 保存更新检查设置时发生错误。 @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + 清除 @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 确认 @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 确认 @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 搜索文档... @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 全部 @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 添加查询 @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 添加表达式 @@ -3758,18 +3830,6 @@ 相对日期 - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - 现在 - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ 已添加 + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + 现在 + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 1 周内 @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 1个月内 @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 3 个月内 @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 1 年内 @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 今年 @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 本月 @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ 昨天 + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + 上周 + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + 上个月 + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + 上个季度 + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + 上年 + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 匹配算法 @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 匹配模式 @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 忽略大小写 @@ -3982,19 +4082,11 @@ 添加选项 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - 警告:编辑选项后,此字段的现有实例将保留其当前值索引 (例如选项 #1, #2, #3) - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 默认币种 @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 三字符币种代码 @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 使用区域设置 @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 分配文档类型 @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 分配联系人 @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + 错误 @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 路径 @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 颜色 + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + 父级 + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 收件箱标签 @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 收件箱标签自动分配给所有已处理的文档。 @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 创建新标签 @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 编辑标签 @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + Email @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 多因素认证 (MFA) @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 禁用多因素认证 (MFA) @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 创建新用户 @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 编辑用户 @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 Totp 已停用 @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 Totp 停用失败 @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 触发类型 @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 设置计划的触发器偏移量以及使用哪个日期字段。 @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 偏移天数 @@ -5022,15 +5130,15 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 - Positive values will trigger after the date, negative values before. + 正值将在日期之后触发,负值则在日期之前触发。 Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 相对于 @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 自定义字段 @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 自定义日期字段。 @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 定期 @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 触发器循环中。 @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 循环间隔天数 @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 每n天重复触发器。 @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 触发匹配下面指定的 所有 过滤器的文档。 @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 筛选文件名 @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 应用于匹配此文件名的文档。允许使用通配符,如 *.pdf 或 *发票*。不区分大小写。 @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 筛选源 @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 筛选路径 - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - 应用于匹配此路径的文档。允许指定为*的通配符。不区分大小写。</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 筛选邮件规则 @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 应用于通过此邮件规则消费的文档。 @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 内容匹配算法 @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 内容匹配模式 - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - 有任何标签 + 高级筛选 - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - 已有联系人 + 添加筛选条件 - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - 有文档类型 + 未定义高级工作流筛选条件。 - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + 完成自定义字段查询配置。 Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 操作类型 @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 指定标题 @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 可以包含一些占位符,请参阅 <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>文档</a>。 @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 分配标签 @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 指定存储路径 @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 分配自定义字段 @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 分配用户 @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 分配查看权限 @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 分配编辑权限 @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 移除标签 @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 移除全部 @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 移除所有通讯员 @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 移除所有文档类型 @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 移除存储路径 @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 移除自定义字段 @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 移除所有者 @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 移除权限 @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 查看权限 @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 编辑权限 @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 邮件主题 @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 邮件正文 @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 邮件收件人 @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 附加文件 @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook 链接 @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 使用参数作为webhook负载 @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 以 JSON 格式发送网络钩子的有效负载 (webhook payload) @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook参数 @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook负载 @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook标头 @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 添加文档 @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 消费文件夹 @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 Api上传 @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 邮件获取 @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 网页界面 (Web UI) @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 自定义字段 @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 处理已开始 @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 文档已添加 @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 文档已更新 @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 已预约 @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 任务分配 @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 移除 @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + 包含任一这些标签 + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + 包含所有这些标签 + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + 不包含这些标签 + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + 已有联系人 + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + 不包含往来方 + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + 有文档类型 + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + 不包含文档类型 + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + 指定存储路径 + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + 匹配自定义字段查询 + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 创建新工作流 @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 编辑流程 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {邮件发送文档} other {邮件发送 个文档}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 电子邮件地址 @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 邮件标题 @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 消息 @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 使用归档版本 @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 发送邮件 - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - 邮件发送文档 + 某些邮件服务器可能会拒绝包含大型附件的邮件。 Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 邮件已发送 + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + 邮件发送文档时出错 + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned 未分配 @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 开启过滤 @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 建议: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths 添加项 @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 添加标签 @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 移除标签 @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 按标签过滤 @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + 了解更多 @@ -6010,7 +6222,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 9 - Select all pages + 选择所有页面 Deselect all pages @@ -6018,7 +6230,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 12 - Deselect all pages + 取消选择所有页面 Rotate selected pages counter-clockwise @@ -6026,7 +6238,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 17 - Rotate selected pages counter-clockwise + 逆时针旋选择的页面 Rotate selected pages clockwise @@ -6034,7 +6246,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 20 - Rotate selected pages clockwise + 顺时针旋转选择的页面 Delete selected pages @@ -6042,7 +6254,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 23 - Delete selected pages + 删除所选页面 Rotate page counter-clockwise @@ -6050,7 +6262,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 33 - Rotate page counter-clockwise + 逆时针旋转页面 Rotate page clockwise @@ -6058,7 +6270,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 36 - Rotate page clockwise + 顺时针旋转页面 Delete page @@ -6066,7 +6278,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 41 - Delete page + 删除页面 Add / remove document split here @@ -6074,7 +6286,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 44 - Add / remove document split here + 在此处添加/移除文档拆分 Split here @@ -6082,7 +6294,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 70 - Split here + 在此拆分 Create new document(s) @@ -6090,7 +6302,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 82 - Create new document(s) + 创建新文档 Update existing document @@ -6098,7 +6310,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 87 - Update existing document + 更新现有文档 Copy metadata @@ -6106,7 +6318,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 94 - Copy metadata + 复制元数据 Delete original @@ -6114,7 +6326,7 @@ src/app/components/common/pdf-editor/pdf-editor.component.html 98 - Delete original + 删除原始文件 Merge with existing permissions @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 用您的身份验证程序扫描二维码,然后在下方输入验证码 @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 身份验证器密钥 @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 您可以存储此密钥并用它来重新安装您的身份验证器应用程序。 @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 验证码 @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 恢复码将不会再次显示。请妥善保存。 @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 复制代码 @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 邮箱必须一致 @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 密码必须一致 @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 帐户信息更新成功 @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 保存帐户信息时发生错误 @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 生成验证令牌时发生错误 @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 断开社交账户时发生错误 @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 獲取TOTP 設定時出錯 @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP 啟動成功 @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 啟動TOTP時錯誤 @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP 停用成功 @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 停用TOTP時錯誤 @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6874,7 +7090,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + WebSocket 连接 OK @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + 确定 Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 按联系人过滤 @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 按文档类型筛选 @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 按存储路径筛选 @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget , @@ -7209,8 +7425,8 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 页码 @@ -7220,7 +7436,7 @@ src/app/components/document-detail/document-detail.component.html 7,8 - of + of - @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 重新处理 @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + 打印 More like this @@ -7286,9 +7502,9 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 - PDF Editor + PDF 编辑器 Send @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 获取元数据时发生错误 @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 获取建议时发生错误。 @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 文档 "" 保存成功。 @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 保存文档 时发生错误 @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 保存文档时发生错误 @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 您真的要将文档 "" 移动到回收站吗? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 文档可以在永久删除之前还原。 @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 移动到回收站 @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 删除文档时发生错误。 @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 确认重新处理 @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 此操作将永久重新创建此文档的归档文件。 @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 归档文件将使用当前设置重新生成。 @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 "" 的重新处理操作将在后台开始。 在操作完成后关闭并重新打开或重新加载此文档以查看新内容。 @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 执行操作时发生错误 @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 下载文档时出错 @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 适应页面 @@ -7834,43 +8050,43 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 - PDF edit operation for "" will begin in the background. + 对‘’的 PDF 编辑操作将在后台开始。 Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 - Error executing PDF edit operation + 执行 PDF 编辑操作出错 Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + 打印失败。 Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + 加载打印文档时出错。 An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 加载内容时发生错误: @@ -7882,19 +8098,11 @@ 未找到条目 - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - 选择: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 编辑: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 自定义字段 @@ -7966,15 +8174,15 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 - + 过滤自定义字段 Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 设置数值 @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 旋转 @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 合并 @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 包含: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 归档文件 @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 原始文件 @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 使用格式化文件名 @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 执行批量操作时发生错误 @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 确认标签分配 @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 此操作将把标签“”添加到 个选定的文档。 @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 此操作将添加标签 选定的文档。 @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 此操作将从 个选定的文档中移除标签“”。 @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 此操作将从 选定的文档中删除标签 @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 此操作将添加标签 并删除选定文档 上的标签 @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 确认联系人分配 @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 此操作将分配联系人 "" 到 个选定的文档。 @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 此操作将从 个选定文档中移除联系人。 @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 确认文件类型分配 @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 此操作将把文档类型 " 分配到 个选定的文档。 @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 此操作将从 个选定文档中删除文档类型。 @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 确认存储路径分配 @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 此操作将将存储路径" 分配给 选定的文档。 @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 此操作将从 选定文档中移除存储路径。 @@ -8188,15 +8396,15 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 - + 确认自定义字段分配 This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 @@ -8204,23 +8412,23 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 - + 此操作会将自定义字段“ ” 分配给 个所选文档。 This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 - + 此操作将从个所选文档中移除""自定义字段。 This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 @@ -8228,15 +8436,15 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 - + 此操作将为个所选文档分配自定义字段,并移除自定义字段。 Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 自定义字段已更新 @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 更新自定义字段时出错。 @@ -8345,7 +8553,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 按标签过滤 @@ -8371,7 +8579,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 91,92 - Created: + 项目:已创建 Added: @@ -8481,7 +8689,7 @@ Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8493,7 +8701,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 选择“无” @@ -8501,11 +8709,11 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 选择页面 @@ -8513,31 +8721,43 @@ Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 全选 - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + 选择: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - 显示列 + + src/app/data/matching-model.ts + 45 + + Sort src/app/components/document-list/document-list.component.html - 48 + 68 排序 @@ -8545,7 +8765,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 视图 @@ -8553,7 +8773,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 保存 @@ -8561,7 +8781,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 另存为... @@ -8569,7 +8789,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 所有保存的视图 @@ -8577,7 +8797,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {已选择 一个文档} other {已选择 文档}} @@ -8585,7 +8805,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {一个文档} other { 文档}} @@ -8593,7 +8813,7 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 (已过滤) @@ -8601,7 +8821,7 @@ Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -8613,7 +8833,7 @@ Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 加载文档时发生错误 @@ -8621,7 +8841,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 按ASN排序 @@ -8629,11 +8849,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8649,7 +8869,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 按联系人排序 @@ -8657,7 +8877,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 按标题排序 @@ -8665,7 +8885,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 通过所有者分类 @@ -8673,7 +8893,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8689,7 +8909,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 按注释排序 @@ -8697,7 +8917,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 按文档类型排序 @@ -8705,7 +8925,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 按存储路径排序 @@ -8713,7 +8933,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 按创建日期排序 @@ -8721,7 +8941,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 按所添加时间排序 @@ -8729,7 +8949,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 按页数排序 @@ -8737,7 +8957,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8757,7 +8977,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 已分享 @@ -8765,7 +8985,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 排序 @@ -8773,7 +8993,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 编辑文档 @@ -8781,7 +9001,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 预览文档 @@ -8789,7 +9009,7 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 重置筛选 / 选择 @@ -8797,7 +9017,7 @@ Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 打开第一个 [已选中] 文档 @@ -8805,7 +9025,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 上一頁 @@ -8813,7 +9033,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 下一頁 @@ -8821,7 +9041,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 视图保存成功。 @@ -8829,7 +9049,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 无法保存视图 ""。 @@ -8837,7 +9057,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 视图:创建成功。 @@ -8853,7 +9073,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 标题 & 内容 @@ -8861,7 +9081,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 文件类型 @@ -8869,7 +9089,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 更多 @@ -8877,7 +9097,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 等于 @@ -8885,7 +9105,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 为空 @@ -8893,7 +9113,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 不为空 @@ -8901,7 +9121,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 高于 @@ -8909,7 +9129,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 低于 @@ -8917,7 +9137,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 联系人: @@ -8925,7 +9145,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 没有联系人 @@ -8933,7 +9153,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 文档类型: @@ -8941,7 +9161,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 没有文档类型 @@ -8949,7 +9169,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 存储路径: @@ -8957,7 +9177,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 没有存储路径 @@ -8965,7 +9185,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 标签: @@ -8973,7 +9193,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 没有任何标签 @@ -8981,7 +9201,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 自定义字段查询 @@ -8989,7 +9209,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 标题: @@ -8997,7 +9217,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 ASN: @@ -9005,7 +9225,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 所有者: @@ -9013,7 +9233,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 所有者不在: @@ -9021,7 +9241,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 没有所有者 @@ -9151,13 +9371,13 @@ src/app/components/file-drop/file-drop.component.ts 142 - Failed to read dropped items: + 无法读取拖放的项目: correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 联系人 @@ -9165,7 +9385,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 联系人 @@ -9173,7 +9393,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 最后使用 @@ -9181,7 +9401,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 您真的想要删除联系人" "吗? @@ -9217,19 +9437,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 筛选文档 () @@ -9277,7 +9497,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 文档类型 @@ -9285,7 +9505,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 文档类型 @@ -9293,7 +9513,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 您真的想要删除文档类型" "吗? @@ -9393,7 +9613,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9401,11 +9621,19 @@ 已禁用 + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + 查看已处理邮件 + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 没有邮件规则定义。 @@ -9413,7 +9641,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 获取邮箱帐户时发生错误 @@ -9421,7 +9649,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 获取邮件规则时发生错误 @@ -9429,7 +9657,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 身份验证成功 @@ -9437,7 +9665,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 身份验证失败,查看日志以获取详细信息 @@ -9445,7 +9673,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 已保存帐户 ""。 @@ -9453,7 +9681,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 保存帐户时发生错误。 @@ -9461,7 +9689,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 确认删除邮箱帐户 @@ -9469,7 +9697,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 此操作将永久删除此邮箱帐户。 @@ -9477,7 +9705,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 已删除邮件帐户 "" @@ -9485,7 +9713,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 删除邮件帐户" "时出错。 @@ -9493,7 +9721,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 正在处理邮件账户 "" @@ -9501,7 +9729,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 处理邮件帐户 "" 时出错 @@ -9509,7 +9737,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 已保存规则 ""。 @@ -9517,7 +9745,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 保存规则时发生错误。 @@ -9525,7 +9753,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 规则 "" 已启用。 @@ -9533,7 +9761,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 规则 "" 已禁用。 @@ -9541,7 +9769,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 切换规则 " 时发生错误. @@ -9549,7 +9777,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 确认删除邮件规则 @@ -9557,7 +9785,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 此操作将永久删除此邮件规则。 @@ -9565,7 +9793,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 已删除邮件规则 "" @@ -9573,7 +9801,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 删除邮件规则 " "时出错。 @@ -9581,7 +9809,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 权限已更新 @@ -9589,14 +9817,55 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 更新权限时发生错误 + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + 已处理邮件: + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + 未找到处理过的电子邮件消息。 + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + 已接收 + + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + 已处理 + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + 已处理邮件(s)已删除 + Filter by: @@ -9661,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {一个 } other { 总计 }} @@ -9681,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9689,23 +9958,11 @@ 自动 - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 成功创建 @@ -9713,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 创建 时发生错误。 @@ -9721,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 成功更新 @@ -9729,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 保存 时发生错误。 @@ -9737,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 已关联的文档将不会被删除。 @@ -9745,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 删除元素时发生错误 @@ -9753,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 权限更新成功 @@ -9761,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 此操作将永久删除所有对象。 @@ -9769,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 对象删除成功 @@ -9777,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 删除对象时发生错误 @@ -9865,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 保存路径 @@ -9873,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 保存路径 @@ -9881,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 您真的想要删除存储路径“ ”吗? @@ -9889,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 标签 @@ -9897,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 标签 @@ -10179,7 +10436,7 @@ src/app/data/custom-field.ts 55 - Long Text + 长文本 Search score @@ -10308,7 +10565,7 @@ src/app/data/paperless-config.ts 52 - Barcode Settings + 条形码设置 Output Type @@ -10428,7 +10685,7 @@ src/app/data/paperless-config.ts 186 - Enable Barcodes + 启用条形码 Enable TIFF Support @@ -10436,7 +10693,7 @@ src/app/data/paperless-config.ts 193 - Enable TIFF Support + 启用 TIFF 支持 Barcode String @@ -10444,7 +10701,7 @@ src/app/data/paperless-config.ts 200 - Barcode String + 条形码字符串 Retain Split Pages @@ -10452,7 +10709,7 @@ src/app/data/paperless-config.ts 207 - Retain Split Pages + 保留拆分后的页面 Enable ASN @@ -10460,7 +10717,7 @@ src/app/data/paperless-config.ts 214 - Enable ASN + 启用 ASN ASN Prefix @@ -10468,7 +10725,7 @@ src/app/data/paperless-config.ts 221 - ASN Prefix + ASN 前缀 Upscale @@ -10476,7 +10733,7 @@ src/app/data/paperless-config.ts 228 - Upscale + 放大 DPI @@ -10484,7 +10741,7 @@ src/app/data/paperless-config.ts 235 - DPI + DPI Max Pages @@ -10492,7 +10749,7 @@ src/app/data/paperless-config.ts 242 - Max Pages + 最大页数 Enable Tag Detection @@ -10500,7 +10757,7 @@ src/app/data/paperless-config.ts 249 - Enable Tag Detection + 启用标签检测 Tag Mapping @@ -10508,7 +10765,7 @@ src/app/data/paperless-config.ts 256 - Tag Mapping + 标签映射 Warning: You have unsaved changes to your document(s). @@ -10908,7 +11165,7 @@ src/app/services/settings.service.ts 177 - Persian + 波斯语 Polish diff --git a/src-ui/src/locale/messages.zh_TW.xlf b/src-ui/src/locale/messages.zh_TW.xlf index 8131eb6ca..55e107d44 100644 --- a/src-ui/src/locale/messages.zh_TW.xlf +++ b/src-ui/src/locale/messages.zh_TW.xlf @@ -5,7 +5,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/alert/alert.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/alert/alert.ts 50 關閉 @@ -13,7 +13,7 @@ Slide of - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 131,135 Currently selected slide number read by screen reader @@ -22,7 +22,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 157,159 上一個 @@ -30,7 +30,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/carousel/carousel.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/carousel/carousel.ts 198 下一個 @@ -38,11 +38,11 @@ Previous month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 83,85 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 上個月 @@ -50,11 +50,11 @@ Next month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/datepicker/datepicker-navigation.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/datepicker/datepicker-navigation.ts 112 下個月 @@ -62,7 +62,7 @@ HH - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 HH @@ -70,7 +70,7 @@ Close - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 關閉 @@ -78,11 +78,11 @@ Select month - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 選取月份 @@ -90,7 +90,7 @@ «« - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 «« @@ -98,7 +98,7 @@ Hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 小時 @@ -106,7 +106,7 @@ « - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 « @@ -114,7 +114,7 @@ MM - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 MM @@ -122,7 +122,7 @@ » - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 » @@ -130,11 +130,11 @@ Select year - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 選擇年份 @@ -142,7 +142,7 @@ Minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 分鐘 @@ -150,7 +150,7 @@ »» - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 »» @@ -158,7 +158,7 @@ First - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 第一頁 @@ -166,7 +166,7 @@ Increment hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 增加小時 @@ -174,7 +174,7 @@ Previous - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 上一頁 @@ -182,7 +182,7 @@ Decrement hours - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 減少小時 @@ -190,7 +190,7 @@ Next - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 下一頁 @@ -198,7 +198,7 @@ Increment minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 增加分鐘 @@ -206,7 +206,7 @@ Last - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 最後一頁 @@ -214,7 +214,7 @@ Decrement minutes - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 減少分鐘 @@ -222,7 +222,7 @@ SS - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 SS @@ -230,7 +230,7 @@ Seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -238,7 +238,7 @@ Increment seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 增加秒數 @@ -246,7 +246,7 @@ Decrement seconds - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 減少秒數 @@ -256,7 +256,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/ngb-config.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/ngb-config.ts 13 @@ -265,7 +265,7 @@ - node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.2.4_@angular+core@20.2.4_@angular+_db9461b4835bfc9061e01150e14e6256/node_modules/src/progressbar/progressbar.ts + node_modules/.pnpm/@ng-bootstrap+ng-bootstrap@19.0.1_@angular+common@20.3.15_@angular+core@20.3.15_@angula_40533c760dbaadbd90323f0d78d15fb8/node_modules/src/progressbar/progressbar.ts 41,42 @@ -334,11 +334,11 @@ src/app/components/app-frame/app-frame.component.html - 82 + 84 src/app/components/app-frame/app-frame.component.html - 84 + 86 src/app/components/dashboard/dashboard.component.html @@ -352,17 +352,17 @@ src/app/app.component.ts 152 - - src/app/components/app-frame/app-frame.component.html - 89 - src/app/components/app-frame/app-frame.component.html 91 + + src/app/components/app-frame/app-frame.component.html + 93 + src/app/components/document-list/document-list.component.ts - 190 + 192 src/app/components/manage/custom-fields/custom-fields.component.html @@ -370,19 +370,19 @@ src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 src/app/components/manage/management-list/management-list.component.html - 105 + 139 文件 @@ -402,11 +402,11 @@ src/app/components/app-frame/app-frame.component.html - 253 + 255 src/app/components/app-frame/app-frame.component.html - 255 + 257 設定 @@ -582,7 +582,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 123 + 125 啟用 @@ -614,7 +614,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 55 + 52 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -638,7 +638,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 29 + 31 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -646,11 +646,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 114 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 183 + 185 src/app/components/document-detail/document-detail.component.html @@ -726,11 +726,11 @@ src/app/components/app-frame/app-frame.component.html - 288 + 290 src/app/components/app-frame/app-frame.component.html - 291 + 293 事件記錄 @@ -742,11 +742,35 @@ 檢閱應用程式和電子郵件檢查的事件紀錄。 + + Show + + src/app/components/admin/logs/logs.component.html + 8 + + + src/app/components/document-list/document-list.component.html + 37 + + + src/app/components/manage/saved-views/saved-views.component.html + 52 + + 顯示 + + + lines + + src/app/components/admin/logs/logs.component.html + 17 + + + Auto refresh src/app/components/admin/logs/logs.component.html - 8 + 21 src/app/components/admin/tasks/tasks.component.html @@ -758,11 +782,11 @@ Loading... src/app/components/admin/logs/logs.component.html - 24 + 38 src/app/components/admin/logs/logs.component.html - 36 + 48 src/app/components/admin/tasks/tasks.component.html @@ -798,7 +822,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 126 + 128 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -814,7 +838,7 @@ src/app/components/document-list/document-list.component.html - 114 + 134 src/app/components/manage/custom-fields/custom-fields.component.html @@ -826,11 +850,15 @@ src/app/components/manage/mail/mail.component.html - 122 + 123 src/app/components/manage/mail/mail.component.html - 186 + 192 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 16 src/app/components/manage/management-list/management-list.component.html @@ -858,6 +886,14 @@ 讀取中⋯ + + Jump to bottom + + src/app/components/admin/logs/logs.component.html + 62 + + Jump to bottom + Options to customize appearance, notifications and more. Settings apply to the <strong>current user only</strong>. @@ -1068,6 +1104,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 4 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 3 + 這是什麼? @@ -1094,11 +1134,11 @@ src/app/components/app-frame/app-frame.component.html - 213 + 215 src/app/components/app-frame/app-frame.component.html - 215 + 217 src/app/components/manage/saved-views/saved-views.component.html @@ -1242,7 +1282,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 191 + 208 進階搜尋 @@ -1278,7 +1318,7 @@ src/app/components/document-list/document-list.component.html - 217 + 242 src/app/data/document.ts @@ -1322,7 +1362,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 97 + 78 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -1338,11 +1378,11 @@ src/app/components/manage/mail/mail.component.html - 148 + 154 src/app/components/manage/mail/mail.component.html - 160 + 166 src/app/components/manage/management-list/management-list.component.html @@ -1418,19 +1458,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 210 + 278 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 229 + 297 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 296 + 364 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 315 + 383 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1454,19 +1494,19 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 218 + 286 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 237 + 305 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 304 + 372 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 323 + 391 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1494,11 +1534,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 243 + 311 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 329 + 397 src/app/components/common/input/permissions/permissions-form/permissions-form.component.html @@ -1574,7 +1614,7 @@ src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 48 + 47 src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -1582,7 +1622,7 @@ src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 54 + 51 src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -1606,7 +1646,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 28 + 30 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html @@ -1614,7 +1654,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 113 + 115 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -1622,11 +1662,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 182 - - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 4 + 184 src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html @@ -1640,7 +1676,7 @@ src/app/components/manage/saved-views/saved-views.component.html 73 - 取消選取 + 取消 Use system language @@ -1666,7 +1702,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 56 + 75 取得使用者時發生錯誤 @@ -1678,7 +1714,7 @@ src/app/components/admin/users-groups/users-groups.component.ts - 68 + 89 取得群組時發生錯誤 @@ -1714,7 +1750,7 @@ src/app/components/app-frame/app-frame.component.ts - 167 + 180 儲存設定時發生錯誤。 @@ -1726,11 +1762,11 @@ src/app/components/app-frame/app-frame.component.html - 276 + 278 src/app/components/app-frame/app-frame.component.html - 278 + 280 檔案任務 @@ -1744,6 +1780,10 @@ src/app/components/admin/trash/trash.component.html 8 + + src/app/components/document-list/document-list.component.html + 153 + src/app/components/manage/management-list/management-list.component.html 4 @@ -1778,7 +1818,7 @@ src/app/components/admin/tasks/tasks.component.ts - 44 + 45 src/app/components/admin/trash/trash.component.html @@ -1894,11 +1934,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 88 + 94 src/app/components/document-list/document-list.component.html - 244 + 269 src/app/data/document.ts @@ -1954,7 +1994,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 103 + 87 src/app/components/manage/custom-fields/custom-fields.component.html @@ -1966,7 +2006,7 @@ src/app/components/manage/mail/mail.component.html - 115 + 116 src/app/components/manage/management-list/management-list.component.html @@ -2010,7 +2050,7 @@ src/app/components/admin/tasks/tasks.component.ts - 153 + 155 清除 @@ -2074,7 +2114,7 @@ Result src/app/components/admin/tasks/tasks.component.ts - 45 + 46 結果 @@ -2082,7 +2122,7 @@ Dismiss selected src/app/components/admin/tasks/tasks.component.ts - 108 + 110 清除所選取的 @@ -2090,7 +2130,7 @@ Dismiss all src/app/components/admin/tasks/tasks.component.ts - 109 + 111 全部清除 @@ -2098,7 +2138,7 @@ Confirm Dismiss All src/app/components/admin/tasks/tasks.component.ts - 150 + 152 確認全部清除 @@ -2106,15 +2146,31 @@ Dismiss all tasks? src/app/components/admin/tasks/tasks.component.ts - 151 + 153 要清除所有共 項任務嗎? + + Error dismissing tasks + + src/app/components/admin/tasks/tasks.component.ts + 161 + + 清除任務時發生錯誤 + + + Error dismissing task + + src/app/components/admin/tasks/tasks.component.ts + 170 + + 清除任務時發生錯誤 + queued src/app/components/admin/tasks/tasks.component.ts - 236 + 246 已排入佇列的 @@ -2122,7 +2178,7 @@ started src/app/components/admin/tasks/tasks.component.ts - 238 + 248 已開始的 @@ -2130,7 +2186,7 @@ completed src/app/components/admin/tasks/tasks.component.ts - 240 + 250 完成的 @@ -2138,7 +2194,7 @@ failed src/app/components/admin/tasks/tasks.component.ts - 242 + 252 失敗的 @@ -2150,11 +2206,11 @@ src/app/components/app-frame/app-frame.component.html - 236 + 238 src/app/components/app-frame/app-frame.component.html - 239 + 241 垃圾桶 @@ -2180,6 +2236,14 @@ src/app/components/admin/trash/trash.component.html 14 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 87 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 89 + 刪除所選取的 @@ -2258,7 +2322,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 87 + 89 + + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html + 242 src/app/components/common/permissions-select/permissions-select.component.html @@ -2274,7 +2342,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 157 + 145 src/app/components/manage/custom-fields/custom-fields.component.html @@ -2294,11 +2362,11 @@ src/app/components/manage/mail/mail.component.html - 149 + 155 src/app/components/manage/mail/mail.component.html - 163 + 169 src/app/components/manage/management-list/management-list.component.html @@ -2318,39 +2386,39 @@ src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 87 + 121 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.html - 99 + 133 src/app/components/manage/management-list/management-list.component.ts - 225 + 247 src/app/components/manage/saved-views/saved-views.component.html @@ -2386,11 +2454,11 @@ src/app/components/manage/management-list/management-list.component.ts - 221 + 243 src/app/components/manage/management-list/management-list.component.ts - 338 + 366 確認刪除 @@ -2414,11 +2482,11 @@ src/app/components/admin/users-groups/users-groups.component.ts - 123 + 145 src/app/components/admin/users-groups/users-groups.component.ts - 176 + 198 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2426,15 +2494,15 @@ src/app/components/manage/mail/mail.component.ts - 191 + 192 src/app/components/manage/mail/mail.component.ts - 292 + 293 src/app/components/manage/management-list/management-list.component.ts - 340 + 368 src/app/components/manage/workflows/workflows.component.ts @@ -2530,11 +2598,11 @@ src/app/components/app-frame/app-frame.component.html - 267 + 269 src/app/components/app-frame/app-frame.component.html - 269 + 271 使用者與群組 @@ -2634,43 +2702,43 @@ src/app/components/manage/mail/mail.component.html - 147 + 153 src/app/components/manage/mail/mail.component.html - 157 + 163 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 86 + 120 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/management-list/management-list.component.html - 96 + 130 src/app/components/manage/workflows/workflows.component.html @@ -2702,11 +2770,11 @@ Password has been changed, you will be logged out momentarily. src/app/components/admin/users-groups/users-groups.component.ts - 94 + 116 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 195 + 201 密碼已變更,將於稍後登出。 @@ -2714,7 +2782,7 @@ Saved user "". src/app/components/admin/users-groups/users-groups.component.ts - 103 + 125 已儲存使用者「」。 @@ -2722,7 +2790,7 @@ Error saving user. src/app/components/admin/users-groups/users-groups.component.ts - 113 + 135 儲存使用者時發生錯誤。 @@ -2730,7 +2798,7 @@ Confirm delete user account src/app/components/admin/users-groups/users-groups.component.ts - 121 + 143 確認刪除使用者帳號 @@ -2738,7 +2806,7 @@ This operation will permanently delete this user account. src/app/components/admin/users-groups/users-groups.component.ts - 122 + 144 將永久刪除此使用者帳號。 @@ -2746,31 +2814,31 @@ Proceed src/app/components/admin/users-groups/users-groups.component.ts - 125 + 147 src/app/components/admin/users-groups/users-groups.component.ts - 178 + 200 src/app/components/document-detail/document-detail.component.ts - 1025 + 1028 src/app/components/document-detail/document-detail.component.ts - 1390 + 1393 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 793 + 798 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 826 + 831 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 845 + 850 src/app/components/manage/custom-fields/custom-fields.component.ts @@ -2778,15 +2846,15 @@ src/app/components/manage/mail/mail.component.ts - 193 + 194 src/app/components/manage/mail/mail.component.ts - 294 + 295 src/app/components/manage/management-list/management-list.component.ts - 342 + 370 src/app/components/manage/workflows/workflows.component.ts @@ -2798,7 +2866,7 @@ Deleted user "" src/app/components/admin/users-groups/users-groups.component.ts - 131 + 153 已刪除使用者「 @@ -2806,7 +2874,7 @@ Error deleting user "". src/app/components/admin/users-groups/users-groups.component.ts - 138 + 160 刪除使用者「」時發生錯誤。 @@ -2814,7 +2882,7 @@ Saved group "". src/app/components/admin/users-groups/users-groups.component.ts - 158 + 180 已儲存群組「」。 @@ -2822,7 +2890,7 @@ Error saving group. src/app/components/admin/users-groups/users-groups.component.ts - 166 + 188 儲存群組時發生錯誤。 @@ -2830,7 +2898,7 @@ Confirm delete user group src/app/components/admin/users-groups/users-groups.component.ts - 174 + 196 確認刪除使用者群組 @@ -2838,7 +2906,7 @@ This operation will permanently delete this user group. src/app/components/admin/users-groups/users-groups.component.ts - 175 + 197 將永久刪除此使用者群組。 @@ -2846,7 +2914,7 @@ Deleted group "" src/app/components/admin/users-groups/users-groups.component.ts - 184 + 206 已刪除群組「 @@ -2854,7 +2922,7 @@ Error deleting group "". src/app/components/admin/users-groups/users-groups.component.ts - 191 + 213 刪除群組「」時發生錯誤。 @@ -2898,11 +2966,11 @@ src/app/components/app-frame/app-frame.component.html - 297 + 299 src/app/components/app-frame/app-frame.component.html - 300 + 302 說明文件 @@ -2910,11 +2978,11 @@ Saved views src/app/components/app-frame/app-frame.component.html - 99 + 101 src/app/components/app-frame/app-frame.component.html - 104 + 106 已儲存的檢視表 @@ -2922,7 +2990,7 @@ Open documents src/app/components/app-frame/app-frame.component.html - 139 + 141 開啟文件 @@ -2930,11 +2998,11 @@ Close all src/app/components/app-frame/app-frame.component.html - 159 + 161 src/app/components/app-frame/app-frame.component.html - 161 + 163 關閉全部 @@ -2942,7 +3010,7 @@ Manage src/app/components/app-frame/app-frame.component.html - 170 + 172 文件管理 @@ -2950,11 +3018,11 @@ Correspondents src/app/components/app-frame/app-frame.component.html - 176 + 178 src/app/components/app-frame/app-frame.component.html - 178 + 180 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -2966,11 +3034,11 @@ Tags src/app/components/app-frame/app-frame.component.html - 183 + 185 src/app/components/app-frame/app-frame.component.html - 186 + 188 src/app/components/common/input/tags/tags.component.ts @@ -2982,11 +3050,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 21 + 5 src/app/components/document-list/document-list.component.html - 199 + 224 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -3002,11 +3070,11 @@ Document Types src/app/components/app-frame/app-frame.component.html - 192 + 194 src/app/components/app-frame/app-frame.component.html - 194 + 196 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3018,11 +3086,11 @@ Storage Paths src/app/components/app-frame/app-frame.component.html - 199 + 201 src/app/components/app-frame/app-frame.component.html - 201 + 203 src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html @@ -3034,11 +3102,11 @@ Custom Fields src/app/components/app-frame/app-frame.component.html - 206 + 208 src/app/components/app-frame/app-frame.component.html - 208 + 210 src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html @@ -3054,11 +3122,11 @@ Workflows src/app/components/app-frame/app-frame.component.html - 222 + 224 src/app/components/app-frame/app-frame.component.html - 224 + 226 src/app/components/manage/workflows/workflows.component.html @@ -3070,11 +3138,11 @@ Mail src/app/components/app-frame/app-frame.component.html - 229 + 231 src/app/components/app-frame/app-frame.component.html - 232 + 234 郵件 @@ -3082,7 +3150,7 @@ Administration src/app/components/app-frame/app-frame.component.html - 247 + 249 系統管理 @@ -3090,11 +3158,11 @@ Configuration src/app/components/app-frame/app-frame.component.html - 260 + 262 src/app/components/app-frame/app-frame.component.html - 262 + 264 系統配置 @@ -3102,7 +3170,7 @@ GitHub src/app/components/app-frame/app-frame.component.html - 307 + 309 GitHub @@ -3110,7 +3178,7 @@ is available. src/app/components/app-frame/app-frame.component.html - 316,317 + 318,319 可供更新。 @@ -3118,7 +3186,7 @@ Click to view. src/app/components/app-frame/app-frame.component.html - 317 + 319 點擊以顯示。 @@ -3126,7 +3194,7 @@ Paperless-ngx can automatically check for updates src/app/components/app-frame/app-frame.component.html - 321 + 323 Paperless-ngx 可以自動檢查更新 @@ -3134,7 +3202,7 @@ How does this work? src/app/components/app-frame/app-frame.component.html - 328,330 + 330,332 這是怎麼運作的? @@ -3142,7 +3210,7 @@ Update available src/app/components/app-frame/app-frame.component.html - 341 + 343 有可用更新 @@ -3150,7 +3218,7 @@ Sidebar views updated src/app/components/app-frame/app-frame.component.ts - 251 + 264 側邊欄顯示方式已更新 @@ -3158,7 +3226,7 @@ Error updating sidebar views src/app/components/app-frame/app-frame.component.ts - 254 + 267 更新側邊欄顯示方式時發生錯誤 @@ -3166,7 +3234,7 @@ An error occurred while saving update checking settings. src/app/components/app-frame/app-frame.component.ts - 275 + 288 儲存檢查更新設定時發生錯誤。 @@ -3234,7 +3302,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 129 + 117 src/app/components/document-list/document-card-large/document-card-large.component.html @@ -3396,6 +3464,10 @@ src/app/components/common/clearable-badge/clearable-badge.component.html 2 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 85 + 清除 @@ -3410,7 +3482,7 @@ Confirmation src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 24 + 23 確認 @@ -3418,7 +3490,7 @@ Confirm src/app/components/common/confirm-dialog/confirm-dialog.component.ts - 36 + 35 src/app/components/common/permissions-dialog/permissions-dialog.component.html @@ -3426,31 +3498,31 @@ src/app/components/document-detail/document-detail.component.ts - 978 + 981 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 436 + 441 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 476 + 481 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 514 + 519 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 552 + 557 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 614 + 619 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 747 + 752 確認 @@ -3574,7 +3646,7 @@ Today src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 39 + 47 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3594,7 +3666,7 @@ src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 106 + 111 src/app/components/common/input/date/date.component.html @@ -3606,7 +3678,7 @@ Close src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 40 + 48 src/app/components/common/dates-dropdown/dates-dropdown.component.html @@ -3642,15 +3714,15 @@ True src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 47 + 55 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 86 + 95 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 92 + 101 @@ -3658,15 +3730,15 @@ False src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 48 + 56 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 87 + 96 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 93 + 102 @@ -3674,11 +3746,11 @@ Search docs... src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 61 + 70 src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 109 + 118 搜尋文件⋯ @@ -3686,7 +3758,7 @@ Any src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 141 + 150 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3698,7 +3770,7 @@ All src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 143 + 152 src/app/components/common/filterable-dropdown/filterable-dropdown.component.html @@ -3717,8 +3789,8 @@ 27 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 14 + src/app/components/document-list/document-list.component.html + 30 全部 @@ -3726,7 +3798,7 @@ Not src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 146 + 155 不是 @@ -3734,7 +3806,7 @@ Add query src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 165 + 174 新增查詢 @@ -3742,7 +3814,7 @@ Add expression src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.html - 168 + 177 新增表達式 @@ -3758,18 +3830,6 @@ 相對日期 - - now - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 29 - - - src/app/components/common/dates-dropdown/dates-dropdown.component.html - 105 - - 現在 - From @@ -3802,11 +3862,11 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 84 + 90 src/app/components/document-list/document-list.component.html - 253 + 278 src/app/data/document.ts @@ -3818,11 +3878,19 @@ 新增日期 + + now + + src/app/components/common/dates-dropdown/dates-dropdown.component.html + 169 + + 現在 + Within 1 week src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 76 + 81 1 週內 @@ -3830,7 +3898,7 @@ Within 1 month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 81 + 86 1 個月內 @@ -3838,7 +3906,7 @@ Within 3 months src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 86 + 91 3 個月內 @@ -3846,7 +3914,7 @@ Within 1 year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 91 + 96 1 年內 @@ -3854,7 +3922,7 @@ This year src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 96 + 101 今年 @@ -3862,7 +3930,7 @@ This month src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 101 + 106 本月 @@ -3870,7 +3938,7 @@ Yesterday src/app/components/common/dates-dropdown/dates-dropdown.component.ts - 111 + 116 src/app/pipes/custom-date.pipe.ts @@ -3878,6 +3946,38 @@ 昨天 + + Previous week + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 121 + + 上週 + + + Previous month + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 135 + + 上個月 + + + Previous quarter + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 141 + + 上一季 + + + Previous year + + src/app/components/common/dates-dropdown/dates-dropdown.component.ts + 155 + + 去年 + Matching algorithm @@ -3894,7 +3994,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 16 + 18 比對演算法 @@ -3914,7 +4014,7 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 18 + 20 比對模式 @@ -3934,11 +4034,11 @@ src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 19 + 21 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 171 + 173 不區分大小寫 @@ -3982,19 +4082,11 @@ 新增選項 - - Warning: existing instances of this field will retain their current value index (e.g. option #1, #2, #3) after editing the options here - - src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 42 - - 警告:編輯此處的選項後,該現有欄位的實例將保留目前的數值索引(例如:選項 #1、#2、#3) - Default Currency src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 預設貨幣 @@ -4002,7 +4094,7 @@ 3-character currency code src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 輸入貨幣代碼(三位字母) @@ -4010,7 +4102,7 @@ Use locale src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.html - 47 + 44 依地區設定 @@ -4238,7 +4330,7 @@ src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -4418,7 +4510,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 197 + 265 指派文件類型 @@ -4438,7 +4530,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 198 + 266 指派關聯方 @@ -4450,7 +4542,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 111 + 113 src/app/components/common/system-status-dialog/system-status-dialog.component.html @@ -4472,6 +4564,10 @@ src/app/components/common/toast/toast.component.html 30 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 36 + 錯誤 @@ -4662,7 +4758,7 @@ src/app/components/manage/storage-path-list/storage-path-list.component.ts - 50 + 49 路徑 @@ -4746,15 +4842,23 @@ src/app/components/manage/tag-list/tag-list.component.ts - 50 + 49 顏色 + + Parent + + src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html + 15 + + 父代項目 + Inbox tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 收件匣標籤 @@ -4762,7 +4866,7 @@ Inbox tags are automatically assigned to all consumed documents. src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html - 15 + 17 收件匣標籤會自動指派給所有已處理的文件。 @@ -4770,7 +4874,7 @@ Create new tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 46 + 51 建立新標籤 @@ -4778,7 +4882,7 @@ Edit tag src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts - 50 + 55 編輯標籤 @@ -4790,7 +4894,7 @@ src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 130 + 136 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html @@ -4800,6 +4904,10 @@ src/app/components/document-detail/document-detail.component.html 92 + + src/app/components/document-list/bulk-editor/bulk-editor.component.html + 101 + 電子郵件 @@ -4878,7 +4986,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 137 + 139 雙重驗證 @@ -4894,11 +5002,11 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 168 + 170 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 170 + 172 停用雙重驗證 @@ -4906,7 +5014,7 @@ Create new user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 70 + 72 建立新使用者帳號 @@ -4914,7 +5022,7 @@ Edit user account src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 74 + 76 編輯使用者帳號 @@ -4922,7 +5030,7 @@ Totp deactivated src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 130 + 132 TOTP 已停用 @@ -4930,11 +5038,11 @@ Totp deactivation failed src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 133 + 135 src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts - 138 + 140 TOTP 停用失敗 @@ -4998,7 +5106,7 @@ Trigger type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 121 + 123 觸發基準 @@ -5006,7 +5114,7 @@ Set scheduled trigger offset and which date field to use. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 123 + 125 設定排程觸發器的日期調整,以及要使用的日期欄位。 @@ -5014,7 +5122,7 @@ Offset days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 128 + 130 調整日期 @@ -5022,7 +5130,7 @@ Positive values will trigger after the date, negative values before. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 132 + 134 正數值將於日期「之後」觸發,負數值將於日期「之前」觸發。 @@ -5030,7 +5138,7 @@ Relative to src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 137 + 139 基於 @@ -5038,7 +5146,7 @@ Custom field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 自訂欄位 @@ -5046,7 +5154,7 @@ Custom field to use for date. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 141 + 143 用於調整日期的自訂欄位。 @@ -5054,7 +5162,7 @@ Recurring src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 重複執行 @@ -5062,7 +5170,7 @@ Trigger is recurring. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 147 + 149 重複執行觸發器。 @@ -5070,7 +5178,7 @@ Recurring interval days src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 重複執行間隔(天) @@ -5078,7 +5186,7 @@ Repeat the trigger every n days. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 151 + 153 每隔 n 天重複執行觸發器。 @@ -5086,7 +5194,7 @@ Trigger for documents that match all filters specified below. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 156 + 158 對符合下列所有篩選條件的文件觸發動作。 @@ -5094,7 +5202,7 @@ Filter filename src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 篩選檔案名稱 @@ -5102,7 +5210,7 @@ Apply to documents that match this filename. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 159 + 161 套用於符合此檔案名稱的文件。可使用萬用字元,如 *.pdf 或 *invoice*。不區分大小寫。 @@ -5110,7 +5218,7 @@ Filter sources src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 161 + 163 篩選來源 @@ -5118,23 +5226,23 @@ Filter path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 篩選路徑 - - Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized.</a> + + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 162 + 164 - 套用於符合此路徑的文件。可使用萬用字元,如 *。大小寫已正規化。</a> + Apply to documents that match this path. Wildcards specified as * are allowed. Case-normalized. Filter mail rule src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 篩選郵件規則 @@ -5142,7 +5250,7 @@ Apply to documents consumed via this mail rule. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 163 + 165 套用於以此郵件規則處理的文件。 @@ -5150,7 +5258,7 @@ Content matching algorithm src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 166 + 168 內容比對演算法 @@ -5158,47 +5266,47 @@ Content matching pattern src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 168 + 170 內容比對模式 - - Has any of tags + + Advanced Filters src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 177 + 183 - 具有任何標籤 + 進階篩選條件 - - Has correspondent + + Add filter src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 178 + 190 - 具有關聯方 + 新增篩選條件 - - Has document type + + No advanced workflow filters defined. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 179 + 195 - 具有文件類型 + 未定義進階工作流程篩選條件。 - - Has storage path + + Complete the custom field query configuration. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 180 + 224,226 - Has storage path + 完成自訂欄位查詢設定。 Action type src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 190 + 258 動作類型 @@ -5206,7 +5314,7 @@ Assign title src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 指派標題 @@ -5214,7 +5322,7 @@ Can include some placeholders, see <a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>documentation</a>. src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 195 + 263 可包含預留位置,詳見<a target='_blank' href='https://docs.paperless-ngx.com/usage/#workflows'>說明文件</a>。 @@ -5222,7 +5330,7 @@ Assign tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 196 + 264 指派標籤 @@ -5230,7 +5338,7 @@ Assign storage path src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 199 + 267 指派儲存路徑 @@ -5238,7 +5346,7 @@ Assign custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 200 + 268 指派自訂欄位 @@ -5246,7 +5354,7 @@ Assign owner src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 204 + 272 指派擁有者 @@ -5254,7 +5362,7 @@ Assign view permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 206 + 274 指派檢視權限 @@ -5262,7 +5370,7 @@ Assign edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 225 + 293 指派編輯權限 @@ -5270,7 +5378,7 @@ Remove tags src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 252 + 320 移除標籤 @@ -5278,31 +5386,31 @@ Remove all src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 253 + 321 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 259 + 327 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 265 + 333 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 271 + 339 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 277 + 345 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 284 + 352 src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 290 + 358 移除全部 @@ -5310,7 +5418,7 @@ Remove correspondents src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 258 + 326 移除關聯方 @@ -5318,7 +5426,7 @@ Remove document types src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 264 + 332 移除文件類型 @@ -5326,7 +5434,7 @@ Remove storage paths src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 270 + 338 移除儲存路徑 @@ -5334,7 +5442,7 @@ Remove custom fields src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 276 + 344 移除自訂欄位 @@ -5342,7 +5450,7 @@ Remove owners src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 283 + 351 移除擁有者 @@ -5350,7 +5458,7 @@ Remove permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 289 + 357 移除權限 @@ -5358,7 +5466,7 @@ View permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 292 + 360 檢視權限 @@ -5366,7 +5474,7 @@ Edit permissions src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 311 + 379 編輯權限 @@ -5374,7 +5482,7 @@ Email subject src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 339 + 407 電子郵件主旨 @@ -5382,7 +5490,7 @@ Email body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 340 + 408 電子郵件正文 @@ -5390,7 +5498,7 @@ Email recipients src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 341 + 409 電子郵件收件者 @@ -5398,7 +5506,7 @@ Attach document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 342 + 410 附加文件 @@ -5406,7 +5514,7 @@ Webhook url src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 350 + 418 Webhook URL @@ -5414,7 +5522,7 @@ Use parameters for webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 352 + 420 使用 Webhook Body 的參數 @@ -5422,7 +5530,7 @@ Send webhook payload as JSON src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 353 + 421 以 JSON 傳送 Webhook Payload @@ -5430,7 +5538,7 @@ Webhook params src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 356 + 424 Webhook 參數 @@ -5438,7 +5546,7 @@ Webhook body src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 358 + 426 Webhook Body @@ -5446,7 +5554,7 @@ Webhook headers src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 360 + 428 Webhook 標頭 @@ -5454,7 +5562,7 @@ Include document src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html - 361 + 429 包含文件 @@ -5462,7 +5570,7 @@ Consume Folder src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 65 + 71 處理資料夾 @@ -5470,7 +5578,7 @@ API Upload src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 69 + 75 API 上傳 @@ -5478,7 +5586,7 @@ Mail Fetch src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 73 + 79 郵件擷取 @@ -5486,7 +5594,7 @@ Web UI src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 77 + 83 網頁介面 @@ -5494,7 +5602,7 @@ Modified src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 92 + 98 src/app/data/document.ts @@ -5506,7 +5614,7 @@ Custom Field src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 96 + 102 自訂欄位 @@ -5514,7 +5622,7 @@ Consumption Started src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 103 + 109 文件開始處理時 @@ -5522,7 +5630,7 @@ Document Added src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 107 + 113 文件新增時 @@ -5530,7 +5638,7 @@ Document Updated src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 111 + 117 文件更新時 @@ -5538,7 +5646,7 @@ Scheduled src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 115 + 121 排程 @@ -5546,7 +5654,7 @@ Assignment src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 122 + 128 指派 @@ -5554,7 +5662,7 @@ Removal src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 126 + 132 移除 @@ -5562,15 +5670,95 @@ Webhook src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 134 + 140 Webhook + + Has any of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 203 + + 標籤包含 + + + Has all of these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 210 + + 標籤符合 + + + Does not have these tags + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 217 + + 標籤不包含 + + + Has correspondent + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 224 + + 具有關聯方 + + + Does not have correspondents + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 232 + + 關聯方不包含 + + + Has document type + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 240 + + 具有文件類型 + + + Does not have document types + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 248 + + 文件類型不包含 + + + Has storage path + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 256 + + 具有儲存路徑 + + + Does not have storage paths + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 264 + + 儲存路徑不包含 + + + Matches custom field query + + src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts + 272 + + 符合自訂欄位查詢 + Create new workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 235 + 474 建立新工作流程 @@ -5578,15 +5766,23 @@ Edit workflow src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts - 239 + 478 編輯工作流程 + + {VAR_PLURAL, plural, =1 {Email Document} other {Email Documents}} + + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 2,6 + + {VAR_PLURAL, plural, =1 {以郵件傳送一份文件} other {以郵件傳送 份文件}} + Email address(es) src/app/components/common/email-document-dialog/email-document-dialog.component.html - 7 + 11 電子郵件地址 @@ -5594,7 +5790,11 @@ Subject src/app/components/common/email-document-dialog/email-document-dialog.component.html - 11 + 15 + + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 32 主旨 @@ -5602,7 +5802,7 @@ Message src/app/components/common/email-document-dialog/email-document-dialog.component.html - 15 + 19 郵件內文 @@ -5610,7 +5810,7 @@ Use archive version src/app/components/common/email-document-dialog/email-document-dialog.component.html - 23 + 27 使用封存版本 @@ -5618,26 +5818,34 @@ Send email src/app/components/common/email-document-dialog/email-document-dialog.component.html - 29 + 33 傳送電子郵件 - - Email Document + + Some email servers may reject messages with large attachments. - src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 21 + src/app/components/common/email-document-dialog/email-document-dialog.component.html + 37 - 以電子郵件傳送文件 + 有些電子郵件伺服器可能會拒絕含有大型附件的郵件。 Email sent src/app/components/common/email-document-dialog/email-document-dialog.component.ts - 66 + 63 電子郵件已傳送 + + Error emailing documents + + src/app/components/common/email-document-dialog/email-document-dialog.component.ts + 69 + + 以電子郵件傳送文件時發生錯誤 + Error emailing document @@ -5710,7 +5918,7 @@ Not assigned src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 82 + 95 Filter drop down element to filter for documents with no correspondent/type/tag assigned 未被指派的 @@ -5719,7 +5927,7 @@ Open filter src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts - 555 + 767 開啟 篩選器 @@ -5763,7 +5971,7 @@ src/app/components/common/input/select/select.component.html - 9 + 10 src/app/components/common/input/switch/switch.component.html @@ -5799,11 +6007,11 @@ src/app/components/common/input/select/select.component.html - 58 + 61 src/app/components/common/input/tags/tags.component.html - 51 + 65 建議: @@ -5923,7 +6131,7 @@ Add item src/app/components/common/input/select/select.component.html - 23 + 25 Used for both types, correspondents, storage paths 新增項目 @@ -5936,11 +6144,11 @@ src/app/components/common/tag/tag.component.html - 10 + 20 src/app/components/common/tag/tag.component.html - 13 + 23 src/app/pipes/object-name.pipe.ts @@ -5972,7 +6180,7 @@ Add tag src/app/components/common/input/tags/tags.component.html - 15 + 17 新增標籤 @@ -5980,7 +6188,7 @@ Remove tag src/app/components/common/input/tags/tags.component.html - 20 + 23 移除標籤 @@ -5988,7 +6196,7 @@ Filter documents with these Tags src/app/components/common/input/tags/tags.component.html - 41 + 55 以這些標籤篩選文件 @@ -6002,6 +6210,10 @@ src/app/components/common/permissions-select/permissions-select.component.html 9 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 7 + 更多資訊 @@ -6292,7 +6504,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 155 + 157 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6304,11 +6516,11 @@ src/app/components/manage/mail/mail.component.html - 150 + 156 src/app/components/manage/mail/mail.component.html - 168 + 174 src/app/components/manage/workflows/workflows.component.html @@ -6336,7 +6548,7 @@ src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 162 + 164 src/app/components/common/share-links-dialog/share-links-dialog.component.html @@ -6404,7 +6616,7 @@ Scan the QR code with your authenticator app and then enter the code below src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 114 + 116 使用驗證器應用程式掃描 QR 碼,然後輸入下方的驗證碼 @@ -6412,7 +6624,7 @@ Authenticator secret src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 117 + 119 驗證器金鑰 @@ -6420,7 +6632,7 @@ You can store this secret and use it to reinstall your authenticator app at a later time. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 118 + 120 可保存此金鑰,以在日後重新安裝驗證器應用程式時使用。 @@ -6428,7 +6640,7 @@ Code src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 121 + 123 驗證碼 @@ -6436,7 +6648,7 @@ Recovery codes will not be shown again, make sure to save them. src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 140 + 142 復原碼將不會再次顯示。請妥善保存。 @@ -6444,7 +6656,7 @@ Copy codes src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.html - 158 + 160 拷貝復原碼 @@ -6452,7 +6664,7 @@ Emails must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 143 + 148 輸入的信箱必須完全相同 @@ -6460,7 +6672,7 @@ Passwords must match src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 171 + 176 輸入的密碼必須完全相同 @@ -6468,7 +6680,7 @@ Profile updated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 192 + 198 設定檔更新成功 @@ -6476,7 +6688,7 @@ Error saving profile src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 206 + 212 儲存設定檔時發生錯誤 @@ -6484,7 +6696,7 @@ Error generating auth token src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 223 + 230 產生驗證 Token 時發生錯誤 @@ -6492,7 +6704,7 @@ Error disconnecting social account src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 248 + 255 連接社群帳號時發生錯誤 @@ -6500,7 +6712,7 @@ Error fetching TOTP settings src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 267 + 274 擷取 TOTP 時發生錯誤 @@ -6508,7 +6720,7 @@ TOTP activated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 288 + 295 TOTP 啟用成功 @@ -6516,11 +6728,11 @@ Error activating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 290 + 297 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 296 + 303 啟用 TOTP 時發生錯誤 @@ -6528,7 +6740,7 @@ TOTP deactivated successfully src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 312 + 319 TOTP 停用成功 @@ -6536,11 +6748,11 @@ Error deactivating TOTP src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 314 + 321 src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts - 319 + 326 停用 TOTP 時發生錯誤 @@ -6734,6 +6946,10 @@ src/app/components/manage/mail/mail.component.html 114 + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 35 + src/app/components/manage/workflows/workflows.component.html 19 @@ -6874,7 +7090,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 257 - WebSocket Connection + WebSocket 連接 OK @@ -6882,7 +7098,7 @@ src/app/components/common/system-status-dialog/system-status-dialog.component.html 261 - OK + 確認 Copy Raw Error @@ -6952,7 +7168,7 @@ src/app/components/document-list/document-list.component.html - 298 + 323 以關聯方篩選 @@ -6968,7 +7184,7 @@ src/app/components/document-list/document-list.component.html - 338 + 363 以文件類型篩選 @@ -6984,7 +7200,7 @@ src/app/components/document-list/document-list.component.html - 345 + 370 以儲存路徑篩選 @@ -7004,7 +7220,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 @@ -7016,7 +7232,7 @@ src/app/components/document-list/document-list.component.html - 366 + 391 @@ -7149,7 +7365,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 381 + 386 this string is used to separate processing, failed and added on the file upload widget @@ -7209,10 +7425,10 @@ 5 - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 11 + src/app/components/document-list/document-list.component.html + 27 - 頁面 + 目前頁面 of @@ -7254,7 +7470,7 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 107 + 91 重新處理 @@ -7264,7 +7480,7 @@ src/app/components/document-detail/document-detail.component.html 58 - Print + 列印 More like this @@ -7286,7 +7502,7 @@ src/app/components/document-detail/document-detail.component.ts - 1389 + 1392 PDF 編輯器 @@ -7322,11 +7538,11 @@ src/app/components/document-list/document-list.component.html - 196 + 221 src/app/components/document-list/filter-editor/filter-editor.component.ts - 178 + 195 src/app/data/document.ts @@ -7362,11 +7578,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 35 + 19 src/app/components/document-list/document-list.component.html - 186 + 211 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7390,11 +7606,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 49 + 33 src/app/components/document-list/document-list.component.html - 226 + 251 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7418,11 +7634,11 @@ src/app/components/document-list/bulk-editor/bulk-editor.component.html - 63 + 47 src/app/components/document-list/document-list.component.html - 235 + 260 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7690,7 +7906,7 @@ Error retrieving metadata src/app/components/document-detail/document-detail.component.ts - 666 + 669 取得詮釋資料時發生錯誤 @@ -7698,7 +7914,7 @@ Error retrieving suggestions. src/app/components/document-detail/document-detail.component.ts - 695 + 698 取得建議時發生錯誤。 @@ -7706,11 +7922,11 @@ Document "" saved successfully. src/app/components/document-detail/document-detail.component.ts - 867 + 870 src/app/components/document-detail/document-detail.component.ts - 891 + 894 文件「」儲存成功。 @@ -7718,7 +7934,7 @@ Error saving document "" src/app/components/document-detail/document-detail.component.ts - 897 + 900 文件「」儲存時發生錯誤 @@ -7726,7 +7942,7 @@ Error saving document src/app/components/document-detail/document-detail.component.ts - 947 + 950 儲存文件時發生錯誤 @@ -7734,7 +7950,7 @@ Do you really want to move the document "" to the trash? src/app/components/document-detail/document-detail.component.ts - 979 + 982 確定要將文件「」移至垃圾桶? @@ -7742,11 +7958,11 @@ Documents can be restored prior to permanent deletion. src/app/components/document-detail/document-detail.component.ts - 980 + 983 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 749 + 754 文件在永久刪除前可被還原。 @@ -7754,11 +7970,11 @@ Move to trash src/app/components/document-detail/document-detail.component.ts - 982 + 985 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 751 + 756 移至垃圾桶 @@ -7766,7 +7982,7 @@ Error deleting document src/app/components/document-detail/document-detail.component.ts - 1001 + 1004 刪除文件時發生錯誤 @@ -7774,11 +7990,11 @@ Reprocess confirm src/app/components/document-detail/document-detail.component.ts - 1021 + 1024 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 789 + 794 確認重新處理 @@ -7786,7 +8002,7 @@ This operation will permanently recreate the archive file for this document. src/app/components/document-detail/document-detail.component.ts - 1022 + 1025 將永久重新建立此文件的封存檔案。 @@ -7794,7 +8010,7 @@ The archive file will be re-generated with the current settings. src/app/components/document-detail/document-detail.component.ts - 1023 + 1026 封存檔案將以目前設定重新產生。 @@ -7802,7 +8018,7 @@ Reprocess operation for "" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts - 1033 + 1036 」的重新處理將於背景開始執行。完成後,請關閉並重新打開或重新載入此文件以檢視更新內容。 @@ -7810,7 +8026,7 @@ Error executing operation src/app/components/document-detail/document-detail.component.ts - 1044 + 1047 執行作業時發生錯誤 @@ -7818,7 +8034,7 @@ Error downloading document src/app/components/document-detail/document-detail.component.ts - 1093 + 1096 下載文件時發生錯誤 @@ -7826,7 +8042,7 @@ Page Fit src/app/components/document-detail/document-detail.component.ts - 1170 + 1173 符合頁面大小 @@ -7834,7 +8050,7 @@ PDF edit operation for "" will begin in the background. src/app/components/document-detail/document-detail.component.ts - 1408 + 1411 」的 PDF 編輯將於背景開始執行。 @@ -7842,7 +8058,7 @@ Error executing PDF edit operation src/app/components/document-detail/document-detail.component.ts - 1420 + 1423 執行 PDF 編輯時時發生錯誤 @@ -7850,27 +8066,27 @@ Print failed. src/app/components/document-detail/document-detail.component.ts - 1452 + 1460 - Print failed. + 列印失敗。 Error loading document for printing. src/app/components/document-detail/document-detail.component.ts - 1460 + 1472 - Error loading document for printing. + 載入列印文件時發生錯誤 An error occurred loading tiff: src/app/components/document-detail/document-detail.component.ts - 1525 + 1537 src/app/components/document-detail/document-detail.component.ts - 1529 + 1541 讀取 TIFF 檔時發生錯誤: @@ -7882,19 +8098,11 @@ 找不到條目。 - - Select: - - src/app/components/document-list/bulk-editor/bulk-editor.component.html - 8 - - 選取: - Edit: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 19 + 3 編輯: @@ -7902,7 +8110,7 @@ Filter tags src/app/components/document-list/bulk-editor/bulk-editor.component.html - 22 + 6 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7914,7 +8122,7 @@ Filter correspondents src/app/components/document-list/bulk-editor/bulk-editor.component.html - 36 + 20 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7926,7 +8134,7 @@ Filter document types src/app/components/document-list/bulk-editor/bulk-editor.component.html - 50 + 34 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7938,7 +8146,7 @@ Filter storage paths src/app/components/document-list/bulk-editor/bulk-editor.component.html - 64 + 48 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7950,7 +8158,7 @@ Custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 77 + 61 src/app/components/document-list/filter-editor/filter-editor.component.html @@ -7958,7 +8166,7 @@ src/app/components/document-list/filter-editor/filter-editor.component.ts - 186 + 203 自訂欄位 @@ -7966,7 +8174,7 @@ Filter custom fields src/app/components/document-list/bulk-editor/bulk-editor.component.html - 78 + 62 篩選自訂欄位 @@ -7974,7 +8182,7 @@ Set values src/app/components/document-list/bulk-editor/bulk-editor.component.html - 86 + 70 設定數值 @@ -7982,7 +8190,7 @@ Rotate src/app/components/document-list/bulk-editor/bulk-editor.component.html - 110 + 94 旋轉 @@ -7990,7 +8198,7 @@ Merge src/app/components/document-list/bulk-editor/bulk-editor.component.html - 113 + 97 合併 @@ -7998,7 +8206,7 @@ Include: src/app/components/document-list/bulk-editor/bulk-editor.component.html - 135 + 123 包含: @@ -8006,7 +8214,7 @@ Archived files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 139 + 127 封存檔案 @@ -8014,7 +8222,7 @@ Original files src/app/components/document-list/bulk-editor/bulk-editor.component.html - 143 + 131 原始檔案 @@ -8022,7 +8230,7 @@ Use formatted filename src/app/components/document-list/bulk-editor/bulk-editor.component.html - 148 + 136 使用格式化檔案名稱 @@ -8030,7 +8238,7 @@ Error executing bulk operation src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 285 + 290 執行大量作業時發生錯誤 @@ -8038,11 +8246,11 @@ "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 373 + 378 src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 379 + 384 @@ -8050,7 +8258,7 @@ "" and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 375 + 380 This is for messages like 'modify "tag1" and "tag2"' 」和「 @@ -8059,7 +8267,7 @@ and "" src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 383,385 + 388,390 this is for messages like 'modify "tag1", "tag2" and "tag3"' 和「 @@ -8068,7 +8276,7 @@ Confirm tags assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 400 + 405 確認指派標籤 @@ -8076,7 +8284,7 @@ This operation will add the tag "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 406 + 411 將新增標籤「」至 個所選的文件。 @@ -8084,7 +8292,7 @@ This operation will add the tags to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 411,413 + 416,418 將新增標籤 個所選的文件。 @@ -8092,7 +8300,7 @@ This operation will remove the tag "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 419 + 424 將從 個所選的文件中移除標籤「」。 @@ -8100,7 +8308,7 @@ This operation will remove the tags from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 424,426 + 429,431 將從 個所選的文件中移除標籤 @@ -8108,7 +8316,7 @@ This operation will add the tags and remove the tags on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 428,432 + 433,437 將於 個所選的文件新增標籤 ,並移除標籤 @@ -8116,7 +8324,7 @@ Confirm correspondent assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 469 + 474 確認指派關聯方 @@ -8124,7 +8332,7 @@ This operation will assign the correspondent "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 471 + 476 將指派關聯方「」至 個所選的文件。 @@ -8132,7 +8340,7 @@ This operation will remove the correspondent from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 473 + 478 將從 個所選的文件移除關聯方。 @@ -8140,7 +8348,7 @@ Confirm document type assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 507 + 512 確認指派檔案類型 @@ -8148,7 +8356,7 @@ This operation will assign the document type "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 509 + 514 將指派文件類型「」給 個所選的文件。 @@ -8156,7 +8364,7 @@ This operation will remove the document type from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 511 + 516 將從 個所選取的文件移除文件類型。 @@ -8164,7 +8372,7 @@ Confirm storage path assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 545 + 550 確認指派儲存路徑 @@ -8172,7 +8380,7 @@ This operation will assign the storage path "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 547 + 552 將指派儲存路徑「」給 個所選的文件。 @@ -8180,7 +8388,7 @@ This operation will remove the storage path from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 549 + 554 將從 個所選的文件移除儲存路徑。 @@ -8188,7 +8396,7 @@ Confirm custom field assignment src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 578 + 583 確認指派自訂欄位 @@ -8196,7 +8404,7 @@ This operation will assign the custom field "" to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 584 + 589 將指派自訂欄位「」給 個所選的文件。 @@ -8204,7 +8412,7 @@ This operation will assign the custom fields to selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 589,591 + 594,596 將指派自訂欄位 個所選的文件。 @@ -8212,7 +8420,7 @@ This operation will remove the custom field "" from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 597 + 602 將從 個所選的文件移除自訂欄位「」。 @@ -8220,7 +8428,7 @@ This operation will remove the custom fields from selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 602,604 + 607,609 將從 個所選的文件移除自訂欄位 @@ -8228,7 +8436,7 @@ This operation will assign the custom fields and remove the custom fields on selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 606,610 + 611,615 將於 個所選的文件指派自訂欄位 ,並移除自訂欄位 @@ -8236,7 +8444,7 @@ Move selected document(s) to the trash? src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 748 + 753 要將 個所選的文件移至垃圾桶嗎? @@ -8244,7 +8452,7 @@ This operation will permanently recreate the archive files for selected document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 790 + 795 將為 個所選取的文件永久重新建立封存檔案。 @@ -8252,7 +8460,7 @@ The archive files will be re-generated with the current settings. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 791 + 796 封存檔案將以目前設定重新產生。 @@ -8260,7 +8468,7 @@ Rotate confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 823 + 828 確認旋轉 @@ -8268,7 +8476,7 @@ This operation will permanently rotate the original version of document(s). src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 824 + 829 將永久選轉 個所選文件的原始版本。 @@ -8276,7 +8484,7 @@ Merge confirm src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 843 + 848 合併確認 @@ -8284,7 +8492,7 @@ This operation will merge selected documents into a new document. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 844 + 849 個所選的文件合併成一個新文件。 @@ -8292,7 +8500,7 @@ Merged document will be queued for consumption. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 863 + 868 合併後的文件將排入處理佇列。 @@ -8300,7 +8508,7 @@ Custom fields updated. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 887 + 892 自訂欄位已更新。 @@ -8308,7 +8516,7 @@ Error updating custom fields. src/app/components/document-list/bulk-editor/bulk-editor.component.ts - 896 + 901 更新自訂欄位時發生錯誤。 @@ -8346,7 +8554,7 @@ src/app/components/document-list/document-list.component.html - 314 + 339 以標籤篩選 @@ -8452,7 +8660,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 20 - 開關標籤篩選器 + 開關標籤篩選條件 Toggle correspondent filter @@ -8460,7 +8668,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 43 - 開關關聯方篩選器 + 開關關聯方篩選條件 Toggle document type filter @@ -8468,7 +8676,7 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 59 - 開關文件類型篩選器 + 開關文件類型篩選條件 Toggle storage path filter @@ -8476,13 +8684,13 @@ src/app/components/document-list/document-card-small/document-card-small.component.html 66 - 開關儲存路徑篩選器 + 開關儲存路徑篩選條件 Select src/app/components/document-list/document-list.component.html - 6 + 5 src/app/data/custom-field.ts @@ -8494,7 +8702,7 @@ Select none src/app/components/document-list/document-list.component.html - 9 + 11 取消選取 @@ -8502,43 +8710,55 @@ Select page src/app/components/document-list/document-list.component.html - 10 + 12 src/app/components/document-list/document-list.component.ts - 313 + 315 - 選取頁面 + 選取目前頁面 Select all src/app/components/document-list/document-list.component.html - 11 + 13 src/app/components/document-list/document-list.component.ts - 306 + 308 選取全部 - - Show + + Select: src/app/components/document-list/document-list.component.html - 17 + 18 + + 選取: + + + None + + src/app/components/document-list/document-list.component.html + 23 - src/app/components/manage/saved-views/saved-views.component.html - 52 + src/app/components/manage/management-list/management-list.component.ts + 124 - 顯示 + + src/app/data/matching-model.ts + 45 + + Sort src/app/components/document-list/document-list.component.html - 48 + 68 排序 @@ -8546,7 +8766,7 @@ Views src/app/components/document-list/document-list.component.html - 74 + 94 檢視表 @@ -8554,7 +8774,7 @@ Save "" src/app/components/document-list/document-list.component.html - 93 + 113 儲存「 @@ -8562,7 +8782,7 @@ Save as... src/app/components/document-list/document-list.component.html - 96 + 116 儲存為⋯ @@ -8570,7 +8790,7 @@ All saved views src/app/components/document-list/document-list.component.html - 97 + 117 所有儲存的檢視表 @@ -8578,7 +8798,7 @@ {VAR_PLURAL, plural, =1 {Selected of one document} other {Selected of documents}} src/app/components/document-list/document-list.component.html - 117 + 137 {VAR_PLURAL, plural, =1 {已選取 /1 個文件} other {已選取 / 個文件}} @@ -8586,7 +8806,7 @@ {VAR_PLURAL, plural, =1 {One document} other { documents}} src/app/components/document-list/document-list.component.html - 121 + 141 {VAR_PLURAL, plural, =1 {一個文件} other { 個文件}} @@ -8594,27 +8814,27 @@ (filtered) src/app/components/document-list/document-list.component.html - 123 + 143 - (已套用篩選器) + (已套用篩選條件) Reset filters src/app/components/document-list/document-list.component.html - 128 + 148 src/app/components/document-list/filter-editor/filter-editor.component.html 107 - 重置篩選器 + 重置篩選條件 Error while loading documents src/app/components/document-list/document-list.component.html - 144 + 169 讀取文件時發生錯誤 @@ -8622,7 +8842,7 @@ Sort by ASN src/app/components/document-list/document-list.component.html - 173 + 198 以封存序號 (ASN) 排序 @@ -8630,11 +8850,11 @@ ASN src/app/components/document-list/document-list.component.html - 177 + 202 src/app/components/document-list/filter-editor/filter-editor.component.ts - 183 + 200 src/app/data/document.ts @@ -8650,7 +8870,7 @@ Sort by correspondent src/app/components/document-list/document-list.component.html - 182 + 207 以關聯方排序 @@ -8658,7 +8878,7 @@ Sort by title src/app/components/document-list/document-list.component.html - 191 + 216 以標題排序 @@ -8666,7 +8886,7 @@ Sort by owner src/app/components/document-list/document-list.component.html - 204 + 229 以擁有者排序 @@ -8674,7 +8894,7 @@ Owner src/app/components/document-list/document-list.component.html - 208 + 233 src/app/data/document.ts @@ -8690,7 +8910,7 @@ Sort by notes src/app/components/document-list/document-list.component.html - 213 + 238 以註解排序 @@ -8698,7 +8918,7 @@ Sort by document type src/app/components/document-list/document-list.component.html - 222 + 247 以文件類型排序 @@ -8706,7 +8926,7 @@ Sort by storage path src/app/components/document-list/document-list.component.html - 231 + 256 以儲存路徑排序 @@ -8714,7 +8934,7 @@ Sort by created date src/app/components/document-list/document-list.component.html - 240 + 265 以建立日期排序 @@ -8722,7 +8942,7 @@ Sort by added date src/app/components/document-list/document-list.component.html - 249 + 274 以新增日期排序 @@ -8730,7 +8950,7 @@ Sort by number of pages src/app/components/document-list/document-list.component.html - 258 + 283 以頁數排序 @@ -8738,7 +8958,7 @@ Pages src/app/components/document-list/document-list.component.html - 262 + 287 src/app/data/document.ts @@ -8758,7 +8978,7 @@ Shared src/app/components/document-list/document-list.component.html - 265,267 + 290,292 已共用 @@ -8766,7 +8986,7 @@ Sort by src/app/components/document-list/document-list.component.html - 272,273 + 297,298 排序 @@ -8774,7 +8994,7 @@ Edit document src/app/components/document-list/document-list.component.html - 306 + 331 編輯文件 @@ -8782,7 +9002,7 @@ Preview document src/app/components/document-list/document-list.component.html - 307 + 332 預覽文件 @@ -8790,15 +9010,15 @@ Reset filters / selection src/app/components/document-list/document-list.component.ts - 294 + 296 - 重置篩選器/選項 + 重置篩條件/選項 Open first [selected] document src/app/components/document-list/document-list.component.ts - 322 + 324 開啟前 [selected] 個文件 @@ -8806,7 +9026,7 @@ Previous page src/app/components/document-list/document-list.component.ts - 338 + 340 上一頁 @@ -8814,7 +9034,7 @@ Next page src/app/components/document-list/document-list.component.ts - 350 + 352 下一頁 @@ -8822,7 +9042,7 @@ View "" saved successfully. src/app/components/document-list/document-list.component.ts - 383 + 385 檢視表「」儲存成功。 @@ -8830,7 +9050,7 @@ Failed to save view "". src/app/components/document-list/document-list.component.ts - 389 + 391 檢視表「」儲存失敗。 @@ -8838,7 +9058,7 @@ View "" created successfully. src/app/components/document-list/document-list.component.ts - 435 + 437 檢視表「」建立成功。 @@ -8854,7 +9074,7 @@ Title & content src/app/components/document-list/filter-editor/filter-editor.component.ts - 181 + 198 標題與內容 @@ -8862,7 +9082,7 @@ File type src/app/components/document-list/filter-editor/filter-editor.component.ts - 188 + 205 檔案類型 @@ -8870,7 +9090,7 @@ More like src/app/components/document-list/filter-editor/filter-editor.component.ts - 197 + 214 相似於 @@ -8878,7 +9098,7 @@ equals src/app/components/document-list/filter-editor/filter-editor.component.ts - 203 + 220 等於 @@ -8886,7 +9106,7 @@ is empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 207 + 224 為空白 @@ -8894,7 +9114,7 @@ is not empty src/app/components/document-list/filter-editor/filter-editor.component.ts - 211 + 228 不為空白 @@ -8902,7 +9122,7 @@ greater than src/app/components/document-list/filter-editor/filter-editor.component.ts - 215 + 232 大於 @@ -8910,7 +9130,7 @@ less than src/app/components/document-list/filter-editor/filter-editor.component.ts - 219 + 236 小於 @@ -8918,7 +9138,7 @@ Correspondent: src/app/components/document-list/filter-editor/filter-editor.component.ts - 260,264 + 277,281 關聯方: @@ -8926,7 +9146,7 @@ Without correspondent src/app/components/document-list/filter-editor/filter-editor.component.ts - 266 + 283 沒有關聯方 @@ -8934,7 +9154,7 @@ Document type: src/app/components/document-list/filter-editor/filter-editor.component.ts - 272,276 + 289,293 文件類型: @@ -8942,7 +9162,7 @@ Without document type src/app/components/document-list/filter-editor/filter-editor.component.ts - 278 + 295 沒有文件類型 @@ -8950,7 +9170,7 @@ Storage path: src/app/components/document-list/filter-editor/filter-editor.component.ts - 284,288 + 301,305 儲存路徑: @@ -8958,7 +9178,7 @@ Without storage path src/app/components/document-list/filter-editor/filter-editor.component.ts - 290 + 307 沒有儲存路徑 @@ -8966,7 +9186,7 @@ Tag: src/app/components/document-list/filter-editor/filter-editor.component.ts - 294,296 + 311,313 標籤: @@ -8974,7 +9194,7 @@ Without any tag src/app/components/document-list/filter-editor/filter-editor.component.ts - 300 + 317 沒有任何標籤 @@ -8982,7 +9202,7 @@ Custom fields query src/app/components/document-list/filter-editor/filter-editor.component.ts - 304 + 321 自訂欄位查詢 @@ -8990,7 +9210,7 @@ Title: src/app/components/document-list/filter-editor/filter-editor.component.ts - 307 + 324 標題: @@ -8998,7 +9218,7 @@ ASN: src/app/components/document-list/filter-editor/filter-editor.component.ts - 310 + 327 封存序號 (ANS): @@ -9006,7 +9226,7 @@ Owner: src/app/components/document-list/filter-editor/filter-editor.component.ts - 313 + 330 擁有者: @@ -9014,7 +9234,7 @@ Owner not in: src/app/components/document-list/filter-editor/filter-editor.component.ts - 316 + 333 擁有者不包含: @@ -9022,7 +9242,7 @@ Without an owner src/app/components/document-list/filter-editor/filter-editor.component.ts - 319 + 336 沒有擁有者 @@ -9158,7 +9378,7 @@ correspondent src/app/components/manage/correspondent-list/correspondent-list.component.ts - 46 + 47 關聯方 @@ -9166,7 +9386,7 @@ correspondents src/app/components/manage/correspondent-list/correspondent-list.component.ts - 47 + 48 關聯方 @@ -9174,7 +9394,7 @@ Last used src/app/components/manage/correspondent-list/correspondent-list.component.ts - 52 + 53 最近使用日期 @@ -9182,7 +9402,7 @@ Do you really want to delete the correspondent ""? src/app/components/manage/correspondent-list/correspondent-list.component.ts - 77 + 78 確定要刪除關聯方「」嗎? @@ -9218,19 +9438,19 @@ src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 src/app/components/manage/management-list/management-list.component.html - 89 + 123 篩選文件( @@ -9278,7 +9498,7 @@ document type src/app/components/manage/document-type-list/document-type-list.component.ts - 42 + 43 文件類型 @@ -9286,7 +9506,7 @@ document types src/app/components/manage/document-type-list/document-type-list.component.ts - 43 + 44 文件類型 @@ -9294,7 +9514,7 @@ Do you really want to delete the document type ""? src/app/components/manage/document-type-list/document-type-list.component.ts - 48 + 49 確定要刪除文件類型「」嗎? @@ -9394,7 +9614,7 @@ Disabled src/app/components/manage/mail/mail.component.html - 136 + 137 src/app/components/manage/workflows/workflows.component.html @@ -9402,11 +9622,19 @@ 已停用 + + View Processed Mail + + src/app/components/manage/mail/mail.component.html + 143 + + 檢視已處理的郵件 + No mail rules defined. src/app/components/manage/mail/mail.component.html - 177 + 183 未定義任何郵件規則。 @@ -9414,7 +9642,7 @@ Error retrieving mail accounts src/app/components/manage/mail/mail.component.ts - 104 + 105 取得郵件帳號時發生錯誤 @@ -9422,7 +9650,7 @@ Error retrieving mail rules src/app/components/manage/mail/mail.component.ts - 126 + 127 取得郵件規則時發生錯誤 @@ -9430,7 +9658,7 @@ OAuth2 authentication success src/app/components/manage/mail/mail.component.ts - 134 + 135 OAuth2 驗證成功 @@ -9438,7 +9666,7 @@ OAuth2 authentication failed, see logs for details src/app/components/manage/mail/mail.component.ts - 145 + 146 OAuth2 驗證失敗,詳見事件紀錄了解詳情 @@ -9446,7 +9674,7 @@ Saved account "". src/app/components/manage/mail/mail.component.ts - 169 + 170 已儲存帳號「」。 @@ -9454,7 +9682,7 @@ Error saving account. src/app/components/manage/mail/mail.component.ts - 181 + 182 儲存帳號時發生錯誤。 @@ -9462,7 +9690,7 @@ Confirm delete mail account src/app/components/manage/mail/mail.component.ts - 189 + 190 確認刪除郵件帳號 @@ -9470,7 +9698,7 @@ This operation will permanently delete this mail account. src/app/components/manage/mail/mail.component.ts - 190 + 191 將永久刪除此郵件帳號。 @@ -9478,7 +9706,7 @@ Deleted mail account "" src/app/components/manage/mail/mail.component.ts - 200 + 201 刪除郵件帳號「 @@ -9486,7 +9714,7 @@ Error deleting mail account "". src/app/components/manage/mail/mail.component.ts - 211 + 212 刪除郵件帳號「」時發生錯誤。 @@ -9494,7 +9722,7 @@ Processing mail account "" src/app/components/manage/mail/mail.component.ts - 223 + 224 正在處理郵件帳號「 @@ -9502,7 +9730,7 @@ Error processing mail account "" src/app/components/manage/mail/mail.component.ts - 228 + 229 處理郵件帳號「」時發生錯誤 @@ -9510,7 +9738,7 @@ Saved rule "". src/app/components/manage/mail/mail.component.ts - 246 + 247 已儲存規則「」。 @@ -9518,7 +9746,7 @@ Error saving rule. src/app/components/manage/mail/mail.component.ts - 257 + 258 儲存規則時發生錯誤。 @@ -9526,7 +9754,7 @@ Rule "" enabled. src/app/components/manage/mail/mail.component.ts - 273 + 274 已啟用規則「」。 @@ -9534,7 +9762,7 @@ Rule "" disabled. src/app/components/manage/mail/mail.component.ts - 274 + 275 已停用規則「」。 @@ -9542,7 +9770,7 @@ Error toggling rule "". src/app/components/manage/mail/mail.component.ts - 279 + 280 開關篩選器「」時發生錯誤。 @@ -9550,7 +9778,7 @@ Confirm delete mail rule src/app/components/manage/mail/mail.component.ts - 290 + 291 確認刪除郵件規則 @@ -9558,7 +9786,7 @@ This operation will permanently delete this mail rule. src/app/components/manage/mail/mail.component.ts - 291 + 292 將永久刪除此郵件規則。 @@ -9566,7 +9794,7 @@ Deleted mail rule "" src/app/components/manage/mail/mail.component.ts - 301 + 302 已刪除郵件規則「 @@ -9574,7 +9802,7 @@ Error deleting mail rule "". src/app/components/manage/mail/mail.component.ts - 312 + 313 刪除郵件規則「」時發生錯誤。 @@ -9582,7 +9810,7 @@ Permissions updated src/app/components/manage/mail/mail.component.ts - 336 + 337 權限已更新 @@ -9590,14 +9818,54 @@ Error updating permissions src/app/components/manage/mail/mail.component.ts - 341 + 342 src/app/components/manage/management-list/management-list.component.ts - 325 + 353 更新權限時發生錯誤 + + Processed Mail for + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 2 + + 已處理郵件 + + + No processed email messages found. + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 20 + + 找不到已處理的電子郵件訊息。 + + + Received + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 33 + + 已收到 + + + Processed + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html + 34 + + 已處理 + + + Processed mail(s) deleted + + src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.ts + 72 + + 已刪除已處理的郵件 + Filter by: @@ -9662,19 +9930,19 @@ {VAR_PLURAL, plural, =1 {One } other { total }} src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 src/app/components/manage/management-list/management-list.component.html - 121 + 67 {VAR_PLURAL, plural, =1 {一個} other { 個}} @@ -9682,7 +9950,7 @@ Automatic src/app/components/manage/management-list/management-list.component.ts - 117 + 122 src/app/data/matching-model.ts @@ -9690,23 +9958,11 @@ 自動 - - None - - src/app/components/manage/management-list/management-list.component.ts - 119 - - - src/app/data/matching-model.ts - 45 - - - Successfully created . src/app/components/manage/management-list/management-list.component.ts - 178 + 200 成功建立 @@ -9714,7 +9970,7 @@ Error occurred while creating . src/app/components/manage/management-list/management-list.component.ts - 183 + 205 建立時發生錯誤。 @@ -9722,7 +9978,7 @@ Successfully updated "". src/app/components/manage/management-list/management-list.component.ts - 198 + 220 成功更新」。 @@ -9730,7 +9986,7 @@ Error occurred while saving . src/app/components/manage/management-list/management-list.component.ts - 203 + 225 儲存時發生錯誤。 @@ -9738,7 +9994,7 @@ Associated documents will not be deleted. src/app/components/manage/management-list/management-list.component.ts - 223 + 245 相關聯的檔案將不會被刪除。 @@ -9746,7 +10002,7 @@ Error while deleting element src/app/components/manage/management-list/management-list.component.ts - 239 + 261 刪除元素時發生錯誤 @@ -9754,7 +10010,7 @@ Permissions updated successfully src/app/components/manage/management-list/management-list.component.ts - 318 + 346 權限更新成功 @@ -9762,7 +10018,7 @@ This operation will permanently delete all objects. src/app/components/manage/management-list/management-list.component.ts - 339 + 367 將永久刪除全部的項目。 @@ -9770,7 +10026,7 @@ Objects deleted successfully src/app/components/manage/management-list/management-list.component.ts - 353 + 381 項目刪除成功 @@ -9778,7 +10034,7 @@ Error deleting objects src/app/components/manage/management-list/management-list.component.ts - 359 + 387 刪除項目時發生錯誤 @@ -9866,7 +10122,7 @@ storage path src/app/components/manage/storage-path-list/storage-path-list.component.ts - 44 + 43 儲存路徑 @@ -9874,7 +10130,7 @@ storage paths src/app/components/manage/storage-path-list/storage-path-list.component.ts - 45 + 44 儲存路徑 @@ -9882,7 +10138,7 @@ Do you really want to delete the storage path ""? src/app/components/manage/storage-path-list/storage-path-list.component.ts - 61 + 60 確定要刪除儲存路徑「」? @@ -9890,7 +10146,7 @@ tag src/app/components/manage/tag-list/tag-list.component.ts - 44 + 43 標籤 @@ -9898,7 +10154,7 @@ tags src/app/components/manage/tag-list/tag-list.component.ts - 45 + 44 標籤 @@ -10180,7 +10436,7 @@ src/app/data/custom-field.ts 55 - Long Text + 長文字 Search score diff --git a/src-ui/src/main.ts b/src-ui/src/main.ts index e9733c098..14540910d 100644 --- a/src-ui/src/main.ts +++ b/src-ui/src/main.ts @@ -1,14 +1,16 @@ import { - APP_INITIALIZER, - enableProdMode, importProvidersFrom, + inject, + provideAppInitializer, + provideZoneChangeDetection, } from '@angular/core' import { DragDropModule } from '@angular/cdk/drag-drop' import { DatePipe, registerLocaleData } from '@angular/common' import { - HTTP_INTERCEPTORS, provideHttpClient, + withFetch, + withInterceptors, withInterceptorsFromDi, } from '@angular/common/http' import { FormsModule, ReactiveFormsModule } from '@angular/forms' @@ -19,7 +21,6 @@ import { NgbModule, } from '@ng-bootstrap/ng-bootstrap' import { NgSelectModule } from '@ng-select/ng-select' -import { PdfViewerModule } from 'ng2-pdf-viewer' import { NgxBootstrapIconsModule, airplane, @@ -48,9 +49,11 @@ import { caretDown, caretUp, chatLeftText, + chatSquareDots, check, check2All, checkAll, + checkCircle, checkCircleFill, checkLg, chevronDoubleLeft, @@ -60,6 +63,7 @@ import { clipboardCheck, clipboardCheckFill, clipboardFill, + clockHistory, dash, dashCircle, diagram3, @@ -123,6 +127,7 @@ import { sliders2Vertical, sortAlphaDown, sortAlphaUpAlt, + stars, tag, tagFill, tags, @@ -132,6 +137,7 @@ import { threeDotsVertical, trash, uiRadios, + unlock, upcScan, windowStack, x, @@ -140,21 +146,19 @@ import { } from 'ngx-bootstrap-icons' import { ColorSliderModule } from 'ngx-color/slider' import { CookieService } from 'ngx-cookie-service' -import { TourNgBootstrapModule } from 'ngx-ui-tour-ng-bootstrap' import { AppRoutingModule } from './app/app-routing.module' import { AppComponent } from './app/app.component' import { DirtyDocGuard } from './app/guards/dirty-doc.guard' import { DirtySavedViewGuard } from './app/guards/dirty-saved-view.guard' import { PermissionsGuard } from './app/guards/permissions.guard' -import { ApiVersionInterceptor } from './app/interceptors/api-version.interceptor' -import { CsrfInterceptor } from './app/interceptors/csrf.interceptor' +import { withApiVersionInterceptor } from './app/interceptors/api-version.interceptor' +import { withCsrfInterceptor } from './app/interceptors/csrf.interceptor' import { DocumentTitlePipe } from './app/pipes/document-title.pipe' import { FilterPipe } from './app/pipes/filter.pipe' import { UsernamePipe } from './app/pipes/username.pipe' import { SettingsService } from './app/services/settings.service' import { LocalizedDateParserFormatter } from './app/utils/ngb-date-parser-formatter' import { ISODateAdapter } from './app/utils/ngb-iso-date-adapter' -import { environment } from './environments/environment' import localeAf from '@angular/common/locales/af' import localeAr from '@angular/common/locales/ar' @@ -171,6 +175,7 @@ import localeFa from '@angular/common/locales/fa' import localeFi from '@angular/common/locales/fi' import localeFr from '@angular/common/locales/fr' import localeHu from '@angular/common/locales/hu' +import localeId from '@angular/common/locales/id' import localeIt from '@angular/common/locales/it' import localeJa from '@angular/common/locales/ja' import localeKo from '@angular/common/locales/ko' @@ -190,6 +195,7 @@ import localeUk from '@angular/common/locales/uk' import localeVi from '@angular/common/locales/vi' import localeZh from '@angular/common/locales/zh' import localeZhHant from '@angular/common/locales/zh-Hant' +import { provideUiTour } from 'ngx-ui-tour-ng-bootstrap' import { CorrespondentNamePipe } from './app/pipes/correspondent-name.pipe' import { DocumentTypeNamePipe } from './app/pipes/document-type-name.pipe' import { StoragePathNamePipe } from './app/pipes/storage-path-name.pipe' @@ -209,6 +215,7 @@ registerLocaleData(localeFa) registerLocaleData(localeFi) registerLocaleData(localeFr) registerLocaleData(localeHu) +registerLocaleData(localeId) registerLocaleData(localeIt) registerLocaleData(localeJa) registerLocaleData(localeKo) @@ -230,11 +237,11 @@ registerLocaleData(localeUk) registerLocaleData(localeZh) registerLocaleData(localeZhHant) -function initializeApp(settings: SettingsService) { - return () => { - return settings.initializeSettings() - } +function initializeApp() { + const settings = inject(SettingsService) + return settings.initializeSettings() } + const icons = { airplane, archive, @@ -262,9 +269,11 @@ const icons = { caretDown, caretUp, chatLeftText, + chatSquareDots, check, check2All, checkAll, + checkCircle, checkCircleFill, checkLg, chevronDoubleLeft, @@ -274,6 +283,7 @@ const icons = { clipboardCheck, clipboardCheckFill, clipboardFill, + clockHistory, dash, dashCircle, diagram3, @@ -337,6 +347,7 @@ const icons = { sliders2Vertical, sortAlphaDown, sortAlphaUpAlt, + stars, tagFill, tag, tags, @@ -346,6 +357,7 @@ const icons = { threeDotsVertical, trash, uiRadios, + unlock, upcScan, windowStack, x, @@ -353,43 +365,23 @@ const icons = { xLg, } -if (environment.production) { - enableProdMode() -} - bootstrapApplication(AppComponent, { providers: [ + provideZoneChangeDetection(), importProvidersFrom( BrowserModule, AppRoutingModule, NgbModule, FormsModule, ReactiveFormsModule, - PdfViewerModule, NgSelectModule, ColorSliderModule, - TourNgBootstrapModule, DragDropModule, NgxBootstrapIconsModule.pick(icons) ), - { - provide: APP_INITIALIZER, - useFactory: initializeApp, - deps: [SettingsService], - multi: true, - }, + provideAppInitializer(initializeApp), DatePipe, CookieService, - { - provide: HTTP_INTERCEPTORS, - useClass: CsrfInterceptor, - multi: true, - }, - { - provide: HTTP_INTERCEPTORS, - useClass: ApiVersionInterceptor, - multi: true, - }, FilterPipe, DocumentTitlePipe, { provide: NgbDateAdapter, useClass: ISODateAdapter }, @@ -401,6 +393,21 @@ bootstrapApplication(AppComponent, { CorrespondentNamePipe, DocumentTypeNamePipe, StoragePathNamePipe, - provideHttpClient(withInterceptorsFromDi()), + provideHttpClient( + withInterceptorsFromDi(), + withInterceptors([withCsrfInterceptor, withApiVersionInterceptor]), + withFetch() + ), + provideUiTour({ + enableBackdrop: true, + backdropConfig: { + offset: 10, + }, + prevBtnTitle: $localize`Prev`, + nextBtnTitle: $localize`Next`, + endBtnTitle: $localize`End`, + isOptional: true, + useLegacyTitle: true, + }), ], }).catch((err) => console.error(err)) diff --git a/src-ui/src/test/mocks/pdfjs-legacy-build-pdf.ts b/src-ui/src/test/mocks/pdfjs-legacy-build-pdf.ts new file mode 100644 index 000000000..30e3ac410 --- /dev/null +++ b/src-ui/src/test/mocks/pdfjs-legacy-build-pdf.ts @@ -0,0 +1,24 @@ +export class PDFDocumentProxy { + numPages = 1 +} + +export class PDFDocumentLoadingTask { + promise: Promise + destroyed = false + + constructor(promise: Promise) { + this.promise = promise + } + + destroy(): void { + this.destroyed = true + } +} + +export const GlobalWorkerOptions = { + workerSrc: '', +} + +export const getDocument = (_src: unknown): PDFDocumentLoadingTask => { + return new PDFDocumentLoadingTask(Promise.resolve(new PDFDocumentProxy())) +} diff --git a/src-ui/src/test/mocks/pdfjs-web-pdf_viewer.ts b/src-ui/src/test/mocks/pdfjs-web-pdf_viewer.ts new file mode 100644 index 000000000..601b05caf --- /dev/null +++ b/src-ui/src/test/mocks/pdfjs-web-pdf_viewer.ts @@ -0,0 +1,79 @@ +type EventHandler = (event?: unknown) => void + +export class EventBus { + private readonly listeners = new Map>() + + on(eventName: string, listener: EventHandler): void { + let listeners = this.listeners.get(eventName) + if (!listeners) { + listeners = new Set() + this.listeners.set(eventName, listeners) + } + listeners.add(listener) + } + + off(eventName: string, listener: EventHandler): void { + this.listeners.get(eventName)?.delete(listener) + } + + dispatch(eventName: string, event?: unknown): void { + this.listeners.get(eventName)?.forEach((listener) => listener(event)) + } +} + +export class PDFFindController { + onIsPageVisible?: () => boolean +} + +export class PDFLinkService { + private document?: unknown + private viewer?: unknown + + setDocument(document: unknown): void { + this.document = document + } + + setViewer(viewer: unknown): void { + this.viewer = viewer + } +} + +class BaseViewer { + pagesCount = 0 + currentScale = 1 + currentScaleValue: string | number = 1 + pagesRotation = 0 + readonly options: Record + + private readonly eventBus?: EventBus + private _currentPageNumber = 1 + + constructor(options: { eventBus?: EventBus }) { + this.options = options + this.eventBus = options.eventBus + } + + setDocument(document: { numPages?: number } | null | undefined): void { + this.pagesCount = document?.numPages ?? 1 + this.eventBus?.dispatch('pagesinit', {}) + this.eventBus?.dispatch('pagerendered', { + pageNumber: this._currentPageNumber, + }) + } + + cleanup(): void { + this.pagesCount = 0 + } + + get currentPageNumber(): number { + return this._currentPageNumber + } + + set currentPageNumber(value: number) { + this._currentPageNumber = value + this.eventBus?.dispatch('pagechanging', { pageNumber: value }) + } +} + +export class PDFViewer extends BaseViewer {} +export class PDFSinglePageViewer extends BaseViewer {} diff --git a/src-ui/src/theme.scss b/src-ui/src/theme.scss index eacc3b4e7..6ff5f4a09 100644 --- a/src-ui/src/theme.scss +++ b/src-ui/src/theme.scss @@ -73,6 +73,7 @@ $form-check-radio-checked-bg-image-dark: url("data:image/svg+xml, 0 ): @@ -164,6 +203,9 @@ class BarcodePlugin(ConsumeTaskPlugin): mailrule_id=self.input_doc.mailrule_id, # Can't use same folder or the consume might grab it again original_file=(tmp_dir / new_document.name).resolve(), + # Adding optional original_path for later uses in + # workflow matching + original_path=self.input_doc.original_file, ), # All the same metadata self.metadata, @@ -184,8 +226,7 @@ class BarcodePlugin(ConsumeTaskPlugin): # Update/overwrite an ASN if possible # After splitting, as otherwise each split document gets the same ASN if self.settings.barcode_enable_asn and (located_asn := self.asn) is not None: - logger.info(f"Found ASN in barcode: {located_asn}") - self.metadata.asn = located_asn + self._apply_detected_asn(located_asn) def cleanup(self) -> None: self.temp_dir.cleanup() @@ -425,15 +466,24 @@ class BarcodePlugin(ConsumeTaskPlugin): for bc in self.barcodes if bc.is_separator and (not retain or (retain and bc.page > 0)) } # as below, dont include the first page if retain is enabled - if not self.settings.barcode_enable_asn: - return separator_pages # add the page numbers of the ASN barcodes # (except for first page, that might lead to infinite loops). - return { - **separator_pages, - **{bc.page: True for bc in self.barcodes if bc.is_asn and bc.page != 0}, - } + if self.settings.barcode_enable_asn: + separator_pages = { + **separator_pages, + **{bc.page: True for bc in self.barcodes if bc.is_asn and bc.page != 0}, + } + + # add the page numbers of the TAG barcodes if splitting is enabled + # (except for first page, that might lead to infinite loops). + if self.settings.barcode_tag_split and self.settings.barcode_enable_tag: + separator_pages = { + **separator_pages, + **{bc.page: True for bc in self.barcodes if bc.is_tag and bc.page != 0}, + } + + return separator_pages def separate_pages(self, pages_to_split_on: dict[int, bool]) -> list[Path]: """ diff --git a/src/documents/bulk_edit.py b/src/documents/bulk_edit.py index c020c188e..f425f6250 100644 --- a/src/documents/bulk_edit.py +++ b/src/documents/bulk_edit.py @@ -1,12 +1,12 @@ from __future__ import annotations +import hashlib import logging import tempfile from pathlib import Path from typing import TYPE_CHECKING from typing import Literal -from celery import chain from celery import chord from celery import group from celery import shared_task @@ -37,6 +37,42 @@ if TYPE_CHECKING: logger: logging.Logger = logging.getLogger("paperless.bulk_edit") +@shared_task(bind=True) +def restore_archive_serial_numbers_task( + self, + backup: dict[int, int | None], + *args, + **kwargs, +) -> None: + restore_archive_serial_numbers(backup) + + +def release_archive_serial_numbers(doc_ids: list[int]) -> dict[int, int | None]: + """ + Clears ASNs on documents that are about to be replaced so new documents + can be assigned ASNs without uniqueness collisions. Returns a backup map + of doc_id -> previous ASN for potential restoration. + """ + qs = Document.objects.filter( + id__in=doc_ids, + archive_serial_number__isnull=False, + ).only("pk", "archive_serial_number") + backup = dict(qs.values_list("pk", "archive_serial_number")) + qs.update(archive_serial_number=None) + logger.info(f"Released archive serial numbers for documents {list(backup.keys())}") + return backup + + +def restore_archive_serial_numbers(backup: dict[int, int | None]) -> None: + """ + Restores ASNs using the provided backup map, intended for + rollback when replacement consumption fails. + """ + for doc_id, asn in backup.items(): + Document.objects.filter(pk=doc_id).update(archive_serial_number=asn) + logger.info(f"Restored archive serial numbers for documents {list(backup.keys())}") + + def set_correspondent( doc_ids: list[int], correspondent: Correspondent, @@ -304,10 +340,10 @@ def reprocess(doc_ids: list[int]) -> Literal["OK"]: def set_permissions( doc_ids: list[int], - set_permissions, + set_permissions: dict, *, - owner=None, - merge=False, + owner: User | None = None, + merge: bool = False, ) -> Literal["OK"]: qs = Document.objects.filter(id__in=doc_ids).select_related("owner") @@ -389,6 +425,7 @@ def merge( merged_pdf = pikepdf.new() version: str = merged_pdf.pdf_version + handoff_asn: int | None = None # use doc_ids to preserve order for doc_id in doc_ids: doc = qs.get(id=doc_id) @@ -404,6 +441,8 @@ def merge( version = max(version, pdf.pdf_version) merged_pdf.pages.extend(pdf.pages) affected_docs.append(doc.id) + if handoff_asn is None and doc.archive_serial_number is not None: + handoff_asn = doc.archive_serial_number except Exception as e: logger.exception( f"Error merging document {doc.id}, it will not be included in the merge: {e}", @@ -429,6 +468,8 @@ def merge( DocumentMetadataOverrides.from_document(metadata_document) ) overrides.title = metadata_document.title + " (merged)" + if metadata_document.archive_serial_number is not None: + handoff_asn = metadata_document.archive_serial_number else: overrides = DocumentMetadataOverrides() else: @@ -436,6 +477,11 @@ def merge( if user is not None: overrides.owner_id = user.id + if not delete_originals: + overrides.skip_asn_if_exists = True + + if delete_originals and handoff_asn is not None: + overrides.asn = handoff_asn logger.info("Adding merged document to the task queue.") @@ -448,12 +494,20 @@ def merge( ) if delete_originals: + backup = release_archive_serial_numbers(affected_docs) logger.info( "Queueing removal of original documents after consumption of merged document", ) - chain(consume_task, delete.si(affected_docs)).delay() - else: - consume_task.delay() + try: + consume_task.apply_async( + link=[delete.si(affected_docs)], + link_error=[restore_archive_serial_numbers_task.s(backup)], + ) + except Exception: + restore_archive_serial_numbers(backup) + raise + else: + consume_task.delay() return "OK" @@ -495,6 +549,8 @@ def split( overrides.title = f"{doc.title} (split {idx + 1})" if user is not None: overrides.owner_id = user.id + if not delete_originals: + overrides.skip_asn_if_exists = True logger.info( f"Adding split document with pages {split_doc} to the task queue.", ) @@ -509,10 +565,20 @@ def split( ) if delete_originals: + backup = release_archive_serial_numbers([doc.id]) logger.info( "Queueing removal of original document after consumption of the split documents", ) - chord(header=consume_tasks, body=delete.si([doc.id])).delay() + try: + chord( + header=consume_tasks, + body=delete.si([doc.id]), + ).apply_async( + link_error=[restore_archive_serial_numbers_task.s(backup)], + ) + except Exception: + restore_archive_serial_numbers(backup) + raise else: group(consume_tasks).delay() @@ -564,7 +630,7 @@ def delete_pages(doc_ids: list[int], pages: list[int]) -> Literal["OK"]: def edit_pdf( doc_ids: list[int], - operations: list[dict], + operations: list[dict[str, int]], *, delete_original: bool = False, update_document: bool = False, @@ -639,7 +705,10 @@ def edit_pdf( ) if user is not None: overrides.owner_id = user.id - + if not delete_original: + overrides.skip_asn_if_exists = True + if delete_original and len(pdf_docs) == 1: + overrides.asn = doc.archive_serial_number for idx, pdf in enumerate(pdf_docs, start=1): filepath: Path = ( Path(tempfile.mkdtemp(dir=settings.SCRATCH_DIR)) @@ -658,7 +727,17 @@ def edit_pdf( ) if delete_original: - chord(header=consume_tasks, body=delete.si([doc.id])).delay() + backup = release_archive_serial_numbers([doc.id]) + try: + chord( + header=consume_tasks, + body=delete.si([doc.id]), + ).apply_async( + link_error=[restore_archive_serial_numbers_task.s(backup)], + ) + except Exception: + restore_archive_serial_numbers(backup) + raise else: group(consume_tasks).delay() @@ -671,11 +750,82 @@ def edit_pdf( return "OK" +def remove_password( + doc_ids: list[int], + password: str, + *, + update_document: bool = False, + delete_original: bool = False, + include_metadata: bool = True, + user: User | None = None, +) -> Literal["OK"]: + """ + Remove password protection from PDF documents. + """ + import pikepdf + + for doc_id in doc_ids: + doc = Document.objects.get(id=doc_id) + try: + logger.info( + f"Attempting password removal from document {doc_ids[0]}", + ) + with pikepdf.open(doc.source_path, password=password) as pdf: + temp_path = doc.source_path.with_suffix(".tmp.pdf") + pdf.remove_unreferenced_resources() + pdf.save(temp_path) + + if update_document: + # replace the original document with the unprotected one + temp_path.replace(doc.source_path) + doc.checksum = hashlib.md5(doc.source_path.read_bytes()).hexdigest() + doc.page_count = len(pdf.pages) + doc.save() + update_document_content_maybe_archive_file.delay(document_id=doc.id) + else: + consume_tasks = [] + overrides = ( + DocumentMetadataOverrides().from_document(doc) + if include_metadata + else DocumentMetadataOverrides() + ) + if user is not None: + overrides.owner_id = user.id + + filepath: Path = ( + Path(tempfile.mkdtemp(dir=settings.SCRATCH_DIR)) + / f"{doc.id}_unprotected.pdf" + ) + temp_path.replace(filepath) + consume_tasks.append( + consume_file.s( + ConsumableDocument( + source=DocumentSource.ConsumeFolder, + original_file=filepath, + ), + overrides, + ), + ) + + if delete_original: + chord(header=consume_tasks, body=delete.si([doc.id])).delay() + else: + group(consume_tasks).delay() + + except Exception as e: + logger.exception(f"Error removing password from document {doc.id}: {e}") + raise ValueError( + f"An error occurred while removing the password: {e}", + ) from e + + return "OK" + + def reflect_doclinks( document: Document, field: CustomField, target_doc_ids: list[int], -): +) -> None: """ Add or remove 'symmetrical' links to `document` on all `target_doc_ids` """ @@ -738,7 +888,7 @@ def remove_doclink( document: Document, field: CustomField, target_doc_id: int, -): +) -> None: """ Removes a 'symmetrical' link to `document` from the target document's existing custom field instance """ diff --git a/src/documents/caching.py b/src/documents/caching.py index ed7f6dbc1..f2911e51e 100644 --- a/src/documents/caching.py +++ b/src/documents/caching.py @@ -41,6 +41,7 @@ class SuggestionCacheData: CLASSIFIER_VERSION_KEY: Final[str] = "classifier_version" CLASSIFIER_HASH_KEY: Final[str] = "classifier_hash" CLASSIFIER_MODIFIED_KEY: Final[str] = "classifier_modified" +LLM_CACHE_CLASSIFIER_VERSION: Final[int] = 1000 # Marker distinguishing LLM suggestions CACHE_1_MINUTE: Final[int] = 60 CACHE_5_MINUTES: Final[int] = 5 * CACHE_1_MINUTE @@ -196,6 +197,54 @@ def refresh_suggestions_cache( cache.touch(doc_key, timeout) +def get_llm_suggestion_cache( + document_id: int, + backend: str, +) -> SuggestionCacheData | None: + doc_key = get_suggestion_cache_key(document_id) + data: SuggestionCacheData = cache.get(doc_key) + + if data and data.classifier_hash == backend: + return data + + return None + + +def set_llm_suggestions_cache( + document_id: int, + suggestions: dict, + *, + backend: str, + timeout: int = CACHE_50_MINUTES, +) -> None: + """ + Cache LLM-generated suggestions using a backend-specific identifier (e.g. 'openai:gpt-4'). + """ + doc_key = get_suggestion_cache_key(document_id) + cache.set( + doc_key, + SuggestionCacheData( + classifier_version=LLM_CACHE_CLASSIFIER_VERSION, + classifier_hash=backend, + suggestions=suggestions, + ), + timeout, + ) + + +def invalidate_llm_suggestions_cache( + document_id: int, +) -> None: + """ + Invalidate the LLM suggestions cache for a specific document and backend. + """ + doc_key = get_suggestion_cache_key(document_id) + data: SuggestionCacheData = cache.get(doc_key) + + if data: + cache.delete(doc_key) + + def get_metadata_cache_key(document_id: int) -> str: """ Returns the basic key for a document's metadata diff --git a/src/documents/checks.py b/src/documents/checks.py index 8f8fbf4f9..b6e9e90fc 100644 --- a/src/documents/checks.py +++ b/src/documents/checks.py @@ -1,60 +1,12 @@ -import textwrap - from django.conf import settings from django.core.checks import Error from django.core.checks import Warning from django.core.checks import register -from django.core.exceptions import FieldError -from django.db.utils import OperationalError -from django.db.utils import ProgrammingError from documents.signals import document_consumer_declaration from documents.templating.utils import convert_format_str_to_template_format -@register() -def changed_password_check(app_configs, **kwargs): - from documents.models import Document - from paperless.db import GnuPG - - try: - encrypted_doc = ( - Document.objects.filter( - storage_type=Document.STORAGE_TYPE_GPG, - ) - .only("pk", "storage_type") - .first() - ) - except (OperationalError, ProgrammingError, FieldError): - return [] # No documents table yet - - if encrypted_doc: - if not settings.PASSPHRASE: - return [ - Error( - "The database contains encrypted documents but no password is set.", - ), - ] - - if not GnuPG.decrypted(encrypted_doc.source_file): - return [ - Error( - textwrap.dedent( - """ - The current password doesn't match the password of the - existing documents. - - If you intend to change your password, you must first export - all of the old documents, start fresh with the new password - and then re-import them." - """, - ), - ), - ] - - return [] - - @register() def parser_check(app_configs, **kwargs): parsers = [] diff --git a/src/documents/classifier.py b/src/documents/classifier.py index 613c1d5ad..1e9da7ce6 100644 --- a/src/documents/classifier.py +++ b/src/documents/classifier.py @@ -122,7 +122,7 @@ class DocumentClassifier: ) self._stop_words = None - def _update_data_vectorizer_hash(self): + def _update_data_vectorizer_hash(self) -> None: self.data_vectorizer_hash = sha256( pickle.dumps(self.data_vectorizer), ).hexdigest() diff --git a/src/documents/consumer.py b/src/documents/consumer.py index d36903d34..551c331cc 100644 --- a/src/documents/consumer.py +++ b/src/documents/consumer.py @@ -5,6 +5,7 @@ import tempfile from enum import Enum from pathlib import Path from typing import TYPE_CHECKING +from typing import Final import magic from django.conf import settings @@ -32,12 +33,12 @@ from documents.models import WorkflowTrigger from documents.parsers import DocumentParser from documents.parsers import ParseError from documents.parsers import get_parser_class_for_mime_type -from documents.parsers import parse_date from documents.permissions import set_permissions_for_object from documents.plugins.base import AlwaysRunPluginMixin from documents.plugins.base import ConsumeTaskPlugin from documents.plugins.base import NoCleanupPluginMixin from documents.plugins.base import NoSetupPluginMixin +from documents.plugins.date_parsing import get_date_parser from documents.plugins.helpers import ProgressManager from documents.plugins.helpers import ProgressStatusOptions from documents.signals import document_consumption_finished @@ -49,6 +50,8 @@ from documents.utils import copy_file_with_basic_stats from documents.utils import run_subprocess from paperless_mail.parsers import MailDocumentParser +LOGGING_NAME: Final[str] = "paperless.consumer" + class WorkflowTriggerPlugin( NoCleanupPluginMixin, @@ -126,7 +129,7 @@ class ConsumerPluginMixin: status: ProgressStatusOptions, message: ConsumerStatusShortMessage | str | None = None, document_id=None, - ): # pragma: no cover + ) -> None: # pragma: no cover self.status_mgr.send_progress( status, message, @@ -162,9 +165,9 @@ class ConsumerPlugin( ConsumerPluginMixin, ConsumeTaskPlugin, ): - logging_name = "paperless.consumer" + logging_name = LOGGING_NAME - def run_pre_consume_script(self): + def run_pre_consume_script(self) -> None: """ If one is configured and exists, run the pre-consume script and handle its output and/or errors @@ -207,7 +210,7 @@ class ConsumerPlugin( exception=e, ) - def run_post_consume_script(self, document: Document): + def run_post_consume_script(self, document: Document) -> None: """ If one is configured and exists, run the pre-consume script and handle its output and/or errors @@ -367,7 +370,10 @@ class ConsumerPlugin( tempdir.cleanup() raise - def progress_callback(current_progress, max_progress): # pragma: no cover + def progress_callback( + current_progress, + max_progress, + ) -> None: # pragma: no cover # recalculate progress to be within 20 and 80 p = int((current_progress / max_progress) * 50 + 20) self._send_progress(p, 100, ProgressStatusOptions.WORKING) @@ -432,7 +438,8 @@ class ConsumerPlugin( ProgressStatusOptions.WORKING, ConsumerStatusShortMessage.PARSE_DATE, ) - date = parse_date(self.filename, text) + with get_date_parser() as date_parser: + date = next(date_parser.parse(self.filename, text), None) archive_path = document_parser.get_archive_path() page_count = document_parser.get_page_count(self.working_copy, mime_type) @@ -535,7 +542,6 @@ class ConsumerPlugin( create_source_path_directory(document.source_path) self._write( - document.storage_type, self.unmodified_original if self.unmodified_original is not None else self.working_copy, @@ -543,7 +549,6 @@ class ConsumerPlugin( ) self._write( - document.storage_type, thumbnail, document.thumbnail_path, ) @@ -555,7 +560,6 @@ class ConsumerPlugin( ) create_source_path_directory(document.archive_path) self._write( - document.storage_type, archive_path, document.archive_path, ) @@ -675,8 +679,6 @@ class ConsumerPlugin( ) self.log.debug(f"Creation date from st_mtime: {create_date}") - storage_type = Document.STORAGE_TYPE_UNENCRYPTED - if self.metadata.filename: title = Path(self.metadata.filename).stem else: @@ -703,7 +705,6 @@ class ConsumerPlugin( checksum=hashlib.md5(file_for_checksum.read_bytes()).hexdigest(), created=create_date, modified=create_date, - storage_type=storage_type, page_count=page_count, original_filename=self.filename, ) @@ -714,7 +715,7 @@ class ConsumerPlugin( return document - def apply_overrides(self, document): + def apply_overrides(self, document) -> None: if self.metadata.correspondent_id: document.correspondent = Correspondent.objects.get( pk=self.metadata.correspondent_id, @@ -774,7 +775,7 @@ class ConsumerPlugin( } CustomFieldInstance.objects.create(**args) # adds to document - def _write(self, storage_type, source, target): + def _write(self, source, target) -> None: with ( Path(source).open("rb") as read_file, Path(target).open("wb") as write_file, @@ -797,9 +798,9 @@ class ConsumerPreflightPlugin( ConsumeTaskPlugin, ): NAME: str = "ConsumerPreflightPlugin" - logging_name = "paperless.consumer" + logging_name = LOGGING_NAME - def pre_check_file_exists(self): + def pre_check_file_exists(self) -> None: """ Confirm the input file still exists where it should """ @@ -813,7 +814,7 @@ class ConsumerPreflightPlugin( f"Cannot consume {self.input_doc.original_file}: File not found.", ) - def pre_check_duplicate(self): + def pre_check_duplicate(self) -> None: """ Using the MD5 of the file, check this exact file doesn't already exist """ @@ -823,21 +824,47 @@ class ConsumerPreflightPlugin( Q(checksum=checksum) | Q(archive_checksum=checksum), ) if existing_doc.exists(): - msg = ConsumerStatusShortMessage.DOCUMENT_ALREADY_EXISTS - log_msg = f"Not consuming {self.filename}: It is a duplicate of {existing_doc.get().title} (#{existing_doc.get().pk})." - - if existing_doc.first().deleted_at is not None: - msg = ConsumerStatusShortMessage.DOCUMENT_ALREADY_EXISTS_IN_TRASH - log_msg += " Note: existing document is in the trash." - - if settings.CONSUMER_DELETE_DUPLICATES: - Path(self.input_doc.original_file).unlink() - self._fail( - msg, - log_msg, + existing_doc = existing_doc.order_by("-created") + duplicates_in_trash = existing_doc.filter(deleted_at__isnull=False) + log_msg = ( + f"Consuming duplicate {self.filename}: " + f"{existing_doc.count()} existing document(s) share the same content." ) - def pre_check_directories(self): + if duplicates_in_trash.exists(): + log_msg += " Note: at least one existing document is in the trash." + + self.log.warning(log_msg) + + if settings.CONSUMER_DELETE_DUPLICATES: + duplicate = existing_doc.first() + duplicate_label = ( + duplicate.title + or duplicate.original_filename + or (Path(duplicate.filename).name if duplicate.filename else None) + or str(duplicate.pk) + ) + + Path(self.input_doc.original_file).unlink() + + failure_msg = ( + f"Not consuming {self.filename}: " + f"It is a duplicate of {duplicate_label} (#{duplicate.pk})" + ) + status_msg = ConsumerStatusShortMessage.DOCUMENT_ALREADY_EXISTS + + if duplicates_in_trash.exists(): + status_msg = ( + ConsumerStatusShortMessage.DOCUMENT_ALREADY_EXISTS_IN_TRASH + ) + failure_msg += " Note: existing document is in the trash." + + self._fail( + status_msg, + failure_msg, + ) + + def pre_check_directories(self) -> None: """ Ensure all required directories exist before attempting to use them """ @@ -846,12 +873,38 @@ class ConsumerPreflightPlugin( settings.ORIGINALS_DIR.mkdir(parents=True, exist_ok=True) settings.ARCHIVE_DIR.mkdir(parents=True, exist_ok=True) - def pre_check_asn_value(self): + def run(self) -> None: + self._send_progress( + 0, + 100, + ProgressStatusOptions.STARTED, + ConsumerStatusShortMessage.NEW_FILE, + ) + + # Make sure that preconditions for consuming the file are met. + + self.pre_check_file_exists() + self.pre_check_duplicate() + self.pre_check_directories() + + +class AsnCheckPlugin( + NoCleanupPluginMixin, + NoSetupPluginMixin, + AlwaysRunPluginMixin, + LoggingMixin, + ConsumerPluginMixin, + ConsumeTaskPlugin, +): + NAME: str = "AsnCheckPlugin" + logging_name = LOGGING_NAME + + def pre_check_asn_value(self) -> None: """ Check that if override_asn is given, it is unique and within a valid range """ if self.metadata.asn is None: - # check not necessary in case no ASN gets set + # if ASN is None return # Validate the range is above zero and less than uint32_t max # otherwise, Whoosh can't handle it in the index @@ -883,16 +936,4 @@ class ConsumerPreflightPlugin( ) def run(self) -> None: - self._send_progress( - 0, - 100, - ProgressStatusOptions.STARTED, - ConsumerStatusShortMessage.NEW_FILE, - ) - - # Make sure that preconditions for consuming the file are met. - - self.pre_check_file_exists() - self.pre_check_duplicate() - self.pre_check_directories() self.pre_check_asn_value() diff --git a/src/documents/data_models.py b/src/documents/data_models.py index 8ffca6010..8958fc525 100644 --- a/src/documents/data_models.py +++ b/src/documents/data_models.py @@ -22,7 +22,7 @@ class DocumentMetadataOverrides: document_type_id: int | None = None tag_ids: list[int] | None = None storage_path_id: int | None = None - created: datetime.datetime | None = None + created: datetime.date | None = None asn: int | None = None owner_id: int | None = None view_users: list[int] | None = None @@ -30,6 +30,7 @@ class DocumentMetadataOverrides: change_users: list[int] | None = None change_groups: list[int] | None = None custom_fields: dict | None = None + skip_asn_if_exists: bool = False def update(self, other: "DocumentMetadataOverrides") -> "DocumentMetadataOverrides": """ @@ -49,6 +50,8 @@ class DocumentMetadataOverrides: self.storage_path_id = other.storage_path_id if other.owner_id is not None: self.owner_id = other.owner_id + if other.skip_asn_if_exists: + self.skip_asn_if_exists = True # merge if self.tag_ids is None: @@ -100,6 +103,7 @@ class DocumentMetadataOverrides: overrides.storage_path_id = doc.storage_path.id if doc.storage_path else None overrides.owner_id = doc.owner.id if doc.owner else None overrides.tag_ids = list(doc.tags.values_list("id", flat=True)) + overrides.created = doc.created overrides.view_users = list( get_users_with_perms( @@ -114,7 +118,7 @@ class DocumentMetadataOverrides: ).values_list("id", flat=True), ) overrides.custom_fields = { - custom_field.id: custom_field.value + custom_field.field.id: custom_field.value for custom_field in doc.custom_fields.all() } @@ -157,10 +161,11 @@ class ConsumableDocument: source: DocumentSource original_file: Path head_version_id: int | None = None + original_path: Path | None = None mailrule_id: int | None = None mime_type: str = dataclasses.field(init=False, default=None) - def __post_init__(self): + def __post_init__(self) -> None: """ After a dataclass is initialized, this is called to finalize some data 1. Make sure the original path is an absolute, fully qualified path diff --git a/src/documents/file_handling.py b/src/documents/file_handling.py index 3a0ffd9fb..39831016d 100644 --- a/src/documents/file_handling.py +++ b/src/documents/file_handling.py @@ -99,37 +99,37 @@ def generate_unique_filename(doc, *, archive_filename=False) -> Path: return new_filename +def format_filename(document: Document, template_str: str) -> str | None: + rendered_filename = validate_filepath_template_and_render( + template_str, + document, + ) + if rendered_filename is None: + return None + + # Apply this setting. It could become a filter in the future (or users could use |default) + if settings.FILENAME_FORMAT_REMOVE_NONE: + rendered_filename = rendered_filename.replace("/-none-/", "/") + rendered_filename = rendered_filename.replace(" -none-", "") + rendered_filename = rendered_filename.replace("-none-", "") + rendered_filename = rendered_filename.strip(os.sep) + + rendered_filename = rendered_filename.replace( + "-none-", + "none", + ) # backward compatibility + + return rendered_filename + + def generate_filename( doc: Document, *, counter=0, - append_gpg=True, archive_filename=False, ) -> Path: base_path: Path | None = None - def format_filename(document: Document, template_str: str) -> str | None: - rendered_filename = validate_filepath_template_and_render( - template_str, - document, - ) - if rendered_filename is None: - return None - - # Apply this setting. It could become a filter in the future (or users could use |default) - if settings.FILENAME_FORMAT_REMOVE_NONE: - rendered_filename = rendered_filename.replace("/-none-/", "/") - rendered_filename = rendered_filename.replace(" -none-", "") - rendered_filename = rendered_filename.replace("-none-", "") - rendered_filename = rendered_filename.strip(os.sep) - - rendered_filename = rendered_filename.replace( - "-none-", - "none", - ) # backward compatibility - - return rendered_filename - # Determine the source of the format string if doc.storage_path is not None: filename_format = doc.storage_path.path @@ -169,8 +169,4 @@ def generate_filename( final_filename = f"{doc.pk:07}{counter_str}{filetype_str}" full_path = Path(final_filename) - # Add GPG extension if needed - if append_gpg and doc.storage_type == doc.STORAGE_TYPE_GPG: - full_path = full_path.with_suffix(full_path.suffix + ".gpg") - return full_path diff --git a/src/documents/filters.py b/src/documents/filters.py index 87274f9fa..f1713882c 100644 --- a/src/documents/filters.py +++ b/src/documents/filters.py @@ -39,6 +39,7 @@ from documents.models import Document from documents.models import DocumentType from documents.models import PaperlessTask from documents.models import ShareLink +from documents.models import ShareLinkBundle from documents.models import StoragePath from documents.models import Tag @@ -92,6 +93,12 @@ class TagFilterSet(FilterSet): "name": CHAR_KWARGS, } + is_root = BooleanFilter( + label="Is root tag", + field_name="tn_parent", + lookup_expr="isnull", + ) + class DocumentTypeFilterSet(FilterSet): class Meta: @@ -113,7 +120,7 @@ class StoragePathFilterSet(FilterSet): class ObjectFilter(Filter): - def __init__(self, *, exclude=False, in_list=False, field_name=""): + def __init__(self, *, exclude=False, in_list=False, field_name="") -> None: super().__init__() self.exclude = exclude self.in_list = in_list @@ -154,6 +161,7 @@ class InboxFilter(Filter): @extend_schema_field(serializers.CharField) class TitleContentFilter(Filter): def filter(self, qs, value): + value = value.strip() if isinstance(value, str) else value if value: return qs.filter(Q(title__icontains=value) | Q(content__icontains=value)) else: @@ -208,6 +216,7 @@ class CustomFieldFilterSet(FilterSet): @extend_schema_field(serializers.CharField) class CustomFieldsFilter(Filter): def filter(self, qs, value): + value = value.strip() if isinstance(value, str) else value if value: fields_with_matching_selects = CustomField.objects.filter( extra_data__icontains=value, @@ -238,6 +247,7 @@ class CustomFieldsFilter(Filter): class MimeTypeFilter(Filter): def filter(self, qs, value): + value = value.strip() if isinstance(value, str) else value if value: return qs.filter(mime_type__icontains=value) else: @@ -245,7 +255,7 @@ class MimeTypeFilter(Filter): class SelectField(serializers.CharField): - def __init__(self, custom_field: CustomField): + def __init__(self, custom_field: CustomField) -> None: self._options = custom_field.extra_data["select_options"] super().__init__(max_length=16) @@ -666,7 +676,7 @@ class CustomFieldQueryParser: @extend_schema_field(serializers.CharField) class CustomFieldQueryFilter(Filter): - def __init__(self, validation_prefix): + def __init__(self, validation_prefix) -> None: """ A filter that filters documents based on custom field name and value. @@ -787,6 +797,29 @@ class ShareLinkFilterSet(FilterSet): } +class ShareLinkBundleFilterSet(FilterSet): + documents = Filter(method="filter_documents") + + class Meta: + model = ShareLinkBundle + fields = { + "created": DATETIME_KWARGS, + "expiration": DATETIME_KWARGS, + "status": ["exact"], + } + + def filter_documents(self, queryset, name, value): + ids = [] + if value: + try: + ids = [int(item) for item in value.split(",") if item] + except ValueError: + return queryset.none() + if not ids: + return queryset + return queryset.filter(documents__in=ids).distinct() + + class PaperlessTaskFilterSet(FilterSet): acknowledged = BooleanFilter( label="Acknowledged", diff --git a/src/documents/index.py b/src/documents/index.py index 90cbb8000..be944b48b 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -10,9 +10,11 @@ from datetime import time from datetime import timedelta from datetime import timezone from shutil import rmtree +from time import sleep from typing import TYPE_CHECKING from typing import Literal +from dateutil.relativedelta import relativedelta from django.conf import settings from django.utils import timezone as django_timezone from django.utils.timezone import get_current_timezone @@ -31,6 +33,7 @@ from whoosh.highlight import HtmlFormatter from whoosh.idsets import BitSet from whoosh.idsets import DocIdSet from whoosh.index import FileIndex +from whoosh.index import LockError from whoosh.index import create_in from whoosh.index import exists_in from whoosh.index import open_dir @@ -96,11 +99,33 @@ def get_schema() -> Schema: def open_index(*, recreate=False) -> FileIndex: - try: - if exists_in(settings.INDEX_DIR) and not recreate: - return open_dir(settings.INDEX_DIR, schema=get_schema()) - except Exception: - logger.exception("Error while opening the index, recreating.") + transient_exceptions = (FileNotFoundError, LockError) + max_retries = 3 + retry_delay = 0.1 + + for attempt in range(max_retries + 1): + try: + if exists_in(settings.INDEX_DIR) and not recreate: + return open_dir(settings.INDEX_DIR, schema=get_schema()) + break + except transient_exceptions as exc: + is_last_attempt = attempt == max_retries or recreate + if is_last_attempt: + logger.exception( + "Error while opening the index after retries, recreating.", + ) + break + + logger.warning( + "Transient error while opening the index (attempt %s/%s): %s. Retrying.", + attempt + 1, + max_retries + 1, + exc, + ) + sleep(retry_delay) + except Exception: + logger.exception("Error while opening the index, recreating.") + break # create_in doesn't handle corrupted indexes very well, remove the directory entirely first if settings.INDEX_DIR.is_dir(): @@ -287,15 +312,75 @@ class DelayedQuery: self.first_score = None self.filter_queryset = filter_queryset self.suggested_correction = None + self._manual_hits_cache: list | None = None def __len__(self) -> int: + if self._manual_sort_requested(): + manual_hits = self._manual_hits() + return len(manual_hits) + page = self[0:1] return len(page) + def _manual_sort_requested(self): + ordering = self.query_params.get("ordering", "") + return ordering.lstrip("-").startswith("custom_field_") + + def _manual_hits(self): + if self._manual_hits_cache is None: + q, mask, suggested_correction = self._get_query() + self.suggested_correction = suggested_correction + + results = self.searcher.search( + q, + mask=mask, + filter=MappedDocIdSet(self.filter_queryset, self.searcher.ixreader), + limit=None, + ) + results.fragmenter = highlight.ContextFragmenter(surround=50) + results.formatter = HtmlFormatter(tagname="span", between=" ... ") + + if not self.first_score and len(results) > 0: + self.first_score = results[0].score + + if self.first_score: + results.top_n = [ + ( + (hit[0] / self.first_score) if self.first_score else None, + hit[1], + ) + for hit in results.top_n + ] + + hits_by_id = {hit["id"]: hit for hit in results} + matching_ids = list(hits_by_id.keys()) + + ordered_ids = list( + self.filter_queryset.filter(id__in=matching_ids).values_list( + "id", + flat=True, + ), + ) + ordered_ids = list(dict.fromkeys(ordered_ids)) + + self._manual_hits_cache = [ + hits_by_id[_id] for _id in ordered_ids if _id in hits_by_id + ] + return self._manual_hits_cache + def __getitem__(self, item): if item.start in self.saved_results: return self.saved_results[item.start] + if self._manual_sort_requested(): + manual_hits = self._manual_hits() + start = 0 if item.start is None else item.start + stop = item.stop + hits = manual_hits[start:stop] if stop is not None else manual_hits[start:] + page = ManualResultsPage(hits) + self.saved_results[start] = page + return page + q, mask, suggested_correction = self._get_query() self.suggested_correction = suggested_correction sortedby, reverse = self._get_query_sortedby() @@ -315,21 +400,33 @@ class DelayedQuery: if not self.first_score and len(page.results) > 0 and sortedby is None: self.first_score = page.results[0].score - page.results.top_n = list( - map( - lambda hit: ( - (hit[0] / self.first_score) if self.first_score else None, - hit[1], - ), - page.results.top_n, - ), - ) + page.results.top_n = [ + ( + (hit[0] / self.first_score) if self.first_score else None, + hit[1], + ) + for hit in page.results.top_n + ] self.saved_results[item.start] = page return page +class ManualResultsPage(list): + def __init__(self, hits) -> None: + super().__init__(hits) + self.results = ManualResults(hits) + + +class ManualResults: + def __init__(self, hits) -> None: + self._docnums = [hit.docnum for hit in hits] + + def docs(self): + return self._docnums + + class LocalDateParser(English): def reverse_timezone_offset(self, d): return (d.replace(tzinfo=django_timezone.get_current_timezone())).astimezone( @@ -461,32 +558,84 @@ def get_permissions_criterias(user: User | None = None) -> list: def rewrite_natural_date_keywords(query_string: str) -> str: """ Rewrites natural date keywords (e.g. added:today or added:"yesterday") to UTC range syntax for Whoosh. + This resolves timezone issues with date parsing in Whoosh as well as adding support for more + natural date keywords. """ tz = get_current_timezone() local_now = now().astimezone(tz) - today = local_now.date() - yesterday = today - timedelta(days=1) - ranges = { - "today": ( - datetime.combine(today, time.min, tzinfo=tz), - datetime.combine(today, time.max, tzinfo=tz), - ), - "yesterday": ( - datetime.combine(yesterday, time.min, tzinfo=tz), - datetime.combine(yesterday, time.max, tzinfo=tz), - ), - } - - pattern = r"(\b(?:added|created))\s*:\s*[\"']?(today|yesterday)[\"']?" + # all supported Keywords + pattern = r"(\b(?:added|created|modified))\s*:\s*[\"']?(today|yesterday|this month|previous month|previous week|previous quarter|this year|previous year)[\"']?" def repl(m): - field, keyword = m.group(1), m.group(2) - start, end = ranges[keyword] + field = m.group(1) + keyword = m.group(2).lower() + + match keyword: + case "today": + start = datetime.combine(today, time.min, tzinfo=tz) + end = datetime.combine(today, time.max, tzinfo=tz) + + case "yesterday": + yesterday = today - timedelta(days=1) + start = datetime.combine(yesterday, time.min, tzinfo=tz) + end = datetime.combine(yesterday, time.max, tzinfo=tz) + + case "this month": + start = datetime(local_now.year, local_now.month, 1, 0, 0, 0, tzinfo=tz) + end = start + relativedelta(months=1) - timedelta(seconds=1) + + case "previous month": + this_month_start = datetime( + local_now.year, + local_now.month, + 1, + 0, + 0, + 0, + tzinfo=tz, + ) + start = this_month_start - relativedelta(months=1) + end = this_month_start - timedelta(seconds=1) + + case "this year": + start = datetime(local_now.year, 1, 1, 0, 0, 0, tzinfo=tz) + end = datetime(local_now.year, 12, 31, 23, 59, 59, tzinfo=tz) + + case "previous week": + days_since_monday = local_now.weekday() + this_week_start = datetime.combine( + today - timedelta(days=days_since_monday), + time.min, + tzinfo=tz, + ) + start = this_week_start - timedelta(days=7) + end = this_week_start - timedelta(seconds=1) + + case "previous quarter": + current_quarter = (local_now.month - 1) // 3 + 1 + this_quarter_start_month = (current_quarter - 1) * 3 + 1 + this_quarter_start = datetime( + local_now.year, + this_quarter_start_month, + 1, + 0, + 0, + 0, + tzinfo=tz, + ) + start = this_quarter_start - relativedelta(months=3) + end = this_quarter_start - timedelta(seconds=1) + + case "previous year": + start = datetime(local_now.year - 1, 1, 1, 0, 0, 0, tzinfo=tz) + end = datetime(local_now.year - 1, 12, 31, 23, 59, 59, tzinfo=tz) + + # Convert to UTC and format start_str = start.astimezone(timezone.utc).strftime("%Y%m%d%H%M%S") end_str = end.astimezone(timezone.utc).strftime("%Y%m%d%H%M%S") return f"{field}:[{start_str} TO {end_str}]" - return re.sub(pattern, repl, query_string) + return re.sub(pattern, repl, query_string, flags=re.IGNORECASE) diff --git a/src/documents/loggers.py b/src/documents/loggers.py index 87ee58868..f30c823f1 100644 --- a/src/documents/loggers.py +++ b/src/documents/loggers.py @@ -3,7 +3,7 @@ import uuid class LoggingMixin: - def renew_logging_group(self): + def renew_logging_group(self) -> None: """ Creates a new UUID to group subsequent log calls together with the extra data named group diff --git a/src/documents/mail.py b/src/documents/mail.py index 12a1c0aa0..21bf03c7a 100644 --- a/src/documents/mail.py +++ b/src/documents/mail.py @@ -1,3 +1,6 @@ +from __future__ import annotations + +from dataclasses import dataclass from email import message_from_bytes from pathlib import Path @@ -6,15 +9,31 @@ from django.core.mail import EmailMessage from filelock import FileLock +@dataclass(frozen=True) +class EmailAttachment: + path: Path + mime_type: str + friendly_name: str + + def send_email( subject: str, body: str, to: list[str], - attachment: Path | None = None, - attachment_mime_type: str | None = None, + attachments: list[EmailAttachment], ) -> int: """ - Send an email with an optional attachment. + Send an email with attachments. + + Args: + subject: Email subject + body: Email body text + to: List of recipient email addresses + attachments: List of attachments + + Returns: + Number of emails sent + TODO: re-evaluate this pending https://code.djangoproject.com/ticket/35581 / https://github.com/django/django/pull/18966 """ email = EmailMessage( @@ -22,17 +41,46 @@ def send_email( body=body, to=to, ) - if attachment: - # Something could be renaming the file concurrently so it can't be attached - with FileLock(settings.MEDIA_LOCK), attachment.open("rb") as f: - content = f.read() - if attachment_mime_type == "message/rfc822": - # See https://forum.djangoproject.com/t/using-emailmessage-with-an-attached-email-file-crashes-due-to-non-ascii/37981 - content = message_from_bytes(f.read()) - email.attach( - filename=attachment.name, - content=content, - mimetype=attachment_mime_type, + used_filenames: set[str] = set() + + # Something could be renaming the file concurrently so it can't be attached + with FileLock(settings.MEDIA_LOCK): + for attachment in attachments: + filename = _get_unique_filename( + attachment.friendly_name, + used_filenames, ) + used_filenames.add(filename) + + with attachment.path.open("rb") as f: + content = f.read() + if attachment.mime_type == "message/rfc822": + # See https://forum.djangoproject.com/t/using-emailmessage-with-an-attached-email-file-crashes-due-to-non-ascii/37981 + content = message_from_bytes(content) + + email.attach( + filename=filename, + content=content, + mimetype=attachment.mime_type, + ) + return email.send() + + +def _get_unique_filename(friendly_name: str, used_names: set[str]) -> str: + """ + Constructs a unique friendly filename for the given document, append a counter if needed. + """ + if friendly_name not in used_names: + return friendly_name + + stem = Path(friendly_name).stem + suffix = "".join(Path(friendly_name).suffixes) + + counter = 1 + while True: + filename = f"{stem}_{counter:02}{suffix}" + if filename not in used_names: + return filename + counter += 1 diff --git a/src/documents/management/commands/convert_mariadb_uuid.py b/src/documents/management/commands/convert_mariadb_uuid.py index 76ccf9e76..3533d03f3 100644 --- a/src/documents/management/commands/convert_mariadb_uuid.py +++ b/src/documents/management/commands/convert_mariadb_uuid.py @@ -9,7 +9,7 @@ class Command(BaseCommand): # This code is taken almost entirely from https://github.com/wagtail/wagtail/pull/11912 with all credit to the original author. help = "Converts UUID columns from char type to the native UUID type used in MariaDB 10.7+ and Django 5.0+." - def convert_field(self, model, field_name, *, null=False): + def convert_field(self, model, field_name, *, null=False) -> None: if model._meta.get_field(field_name).model != model: # pragma: no cover # Field is inherited from a parent model return diff --git a/src/documents/management/commands/decrypt_documents.py b/src/documents/management/commands/decrypt_documents.py deleted file mode 100644 index 793cac4bb..000000000 --- a/src/documents/management/commands/decrypt_documents.py +++ /dev/null @@ -1,93 +0,0 @@ -from pathlib import Path - -from django.conf import settings -from django.core.management.base import BaseCommand -from django.core.management.base import CommandError - -from documents.models import Document -from paperless.db import GnuPG - - -class Command(BaseCommand): - help = ( - "This is how you migrate your stored documents from an encrypted " - "state to an unencrypted one (or vice-versa)" - ) - - def add_arguments(self, parser) -> None: - parser.add_argument( - "--passphrase", - help=( - "If PAPERLESS_PASSPHRASE isn't set already, you need to specify it here" - ), - ) - - def handle(self, *args, **options) -> None: - try: - self.stdout.write( - self.style.WARNING( - "\n\n" - "WARNING: This script is going to work directly on your " - "document originals, so\n" - "WARNING: you probably shouldn't run " - "this unless you've got a recent backup\n" - "WARNING: handy. It " - "*should* work without a hitch, but be safe and backup your\n" - "WARNING: stuff first.\n\n" - "Hit Ctrl+C to exit now, or Enter to " - "continue.\n\n", - ), - ) - _ = input() - except KeyboardInterrupt: - return - - passphrase = options["passphrase"] or settings.PASSPHRASE - if not passphrase: - raise CommandError( - "Passphrase not defined. Please set it with --passphrase or " - "by declaring it in your environment or your config.", - ) - - self.__gpg_to_unencrypted(passphrase) - - def __gpg_to_unencrypted(self, passphrase: str) -> None: - encrypted_files = Document.objects.filter( - storage_type=Document.STORAGE_TYPE_GPG, - ) - - for document in encrypted_files: - self.stdout.write(f"Decrypting {document}") - - old_paths = [document.source_path, document.thumbnail_path] - - with document.source_file as file_handle: - raw_document = GnuPG.decrypted(file_handle, passphrase) - with document.thumbnail_file as file_handle: - raw_thumb = GnuPG.decrypted(file_handle, passphrase) - - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED - - ext: str = Path(document.filename).suffix - - if not ext == ".gpg": - raise CommandError( - f"Abort: encrypted file {document.source_path} does not " - f"end with .gpg", - ) - - document.filename = Path(document.filename).stem - - with document.source_path.open("wb") as f: - f.write(raw_document) - - with document.thumbnail_path.open("wb") as f: - f.write(raw_thumb) - - Document.objects.filter(id=document.id).update( - storage_type=document.storage_type, - filename=document.filename, - ) - - for path in old_paths: - path.unlink() diff --git a/src/documents/management/commands/document_consumer.py b/src/documents/management/commands/document_consumer.py index 35d79288e..5ba8d30cd 100644 --- a/src/documents/management/commands/document_consumer.py +++ b/src/documents/management/commands/document_consumer.py @@ -1,128 +1,343 @@ +""" +Document consumer management command. + +Watches a consumption directory for new documents and queues them for processing. +Uses watchfiles for efficient file system monitoring with support for both +native OS notifications and polling fallback. +""" + +from __future__ import annotations + import logging -import os -from concurrent.futures import ThreadPoolExecutor -from fnmatch import filter +from dataclasses import dataclass from pathlib import Path -from pathlib import PurePath from threading import Event from time import monotonic -from time import sleep +from typing import TYPE_CHECKING from typing import Final from django import db from django.conf import settings from django.core.management.base import BaseCommand from django.core.management.base import CommandError -from watchdog.events import FileSystemEventHandler -from watchdog.observers.polling import PollingObserver +from watchfiles import Change +from watchfiles import DefaultFilter +from watchfiles import watch from documents.data_models import ConsumableDocument from documents.data_models import DocumentMetadataOverrides from documents.data_models import DocumentSource from documents.models import Tag -from documents.parsers import is_file_ext_supported +from documents.parsers import get_supported_file_extensions from documents.tasks import consume_file -try: - from inotifyrecursive import INotify - from inotifyrecursive import flags -except ImportError: # pragma: no cover - INotify = flags = None +if TYPE_CHECKING: + from collections.abc import Iterator + logger = logging.getLogger("paperless.management.consumer") -def _tags_from_path(filepath: Path) -> list[int]: +@dataclass +class TrackedFile: + """Represents a file being tracked for stability.""" + + path: Path + last_event_time: float + last_mtime: float | None = None + last_size: int | None = None + + def update_stats(self) -> bool: + """ + Update file stats. Returns True if file exists and stats were updated. + """ + try: + stat = self.path.stat() + self.last_mtime = stat.st_mtime + self.last_size = stat.st_size + return True + except OSError: + return False + + def is_unchanged(self) -> bool: + """ + Check if file stats match the previously recorded values. + Returns False if file doesn't exist or stats changed. + """ + try: + stat = self.path.stat() + return stat.st_mtime == self.last_mtime and stat.st_size == self.last_size + except OSError: + return False + + +class FileStabilityTracker: """ - Walk up the directory tree from filepath to CONSUMPTION_DIR + Tracks file events and determines when files are stable for consumption. + + A file is considered stable when: + 1. No new events have been received for it within the stability delay + 2. Its size and modification time haven't changed + 3. It still exists as a regular file + + This handles various edge cases: + - Network copies that write in chunks + - Scanners that open/close files multiple times + - Temporary files that get renamed + - Files that are deleted before becoming stable + """ + + def __init__(self, stability_delay: float = 1.0) -> None: + """ + Initialize the tracker. + + Args: + stability_delay: Time in seconds a file must remain unchanged + before being considered stable. + """ + self.stability_delay = stability_delay + self._tracked: dict[Path, TrackedFile] = {} + + def track(self, path: Path, change: Change) -> None: + """ + Register a file event. + + Args: + path: The file path that changed. + change: The type of change (added, modified, deleted). + """ + path = path.resolve() + + match change: + case Change.deleted: + self._tracked.pop(path, None) + logger.debug(f"Stopped tracking deleted file: {path}") + case Change.added | Change.modified: + current_time = monotonic() + if path in self._tracked: + tracked = self._tracked[path] + tracked.last_event_time = current_time + tracked.update_stats() + logger.debug(f"Updated tracking for: {path}") + else: + tracked = TrackedFile(path=path, last_event_time=current_time) + if tracked.update_stats(): + self._tracked[path] = tracked + logger.debug(f"Started tracking: {path}") + else: + logger.debug(f"Could not stat file, not tracking: {path}") + + def get_stable_files(self) -> Iterator[Path]: + """ + Yield files that have been stable for the configured delay. + + Files are removed from tracking once yielded or determined to be invalid. + """ + current_time = monotonic() + to_remove: list[Path] = [] + to_yield: list[Path] = [] + + for path, tracked in self._tracked.items(): + time_since_event = current_time - tracked.last_event_time + + if time_since_event < self.stability_delay: + continue + + # File has waited long enough, verify it's unchanged + if not tracked.is_unchanged(): + # Stats changed or file gone - update and wait again + if tracked.update_stats(): + tracked.last_event_time = current_time + logger.debug(f"File changed during stability check: {path}") + else: + # File no longer exists, remove from tracking + to_remove.append(path) + logger.debug(f"File disappeared during stability check: {path}") + continue + + # File is stable, we can return it + to_yield.append(path) + logger.info(f"File is stable: {path}") + + # Remove files that are no longer valid + for path in to_remove: + self._tracked.pop(path, None) + + # Remove and yield stable files + for path in to_yield: + self._tracked.pop(path, None) + yield path + + def has_pending_files(self) -> bool: + """Check if there are files waiting for stability check.""" + return len(self._tracked) > 0 + + @property + def pending_count(self) -> int: + """Number of files being tracked.""" + return len(self._tracked) + + +class ConsumerFilter(DefaultFilter): + """ + Filter for watchfiles that accepts only supported document types + and ignores system files/directories. + + Extends DefaultFilter leveraging its built-in filtering: + - `ignore_dirs`: Directory names to ignore (and all their contents) + - `ignore_entity_patterns`: Regex patterns matched against filename/dirname only + + We add custom logic for file extension filtering (only accept supported + document types), which the library doesn't provide. + """ + + # Regex patterns for files to always ignore (matched against filename only) + # These are passed to DefaultFilter.ignore_entity_patterns + DEFAULT_IGNORE_PATTERNS: Final[tuple[str, ...]] = ( + r"^\.DS_Store$", + r"^\.DS_STORE$", + r"^\._.*", + r"^desktop\.ini$", + r"^Thumbs\.db$", + ) + + # Directories to always ignore (passed to DefaultFilter.ignore_dirs) + # These are matched by directory name, not full path + DEFAULT_IGNORE_DIRS: Final[tuple[str, ...]] = ( + ".stfolder", # Syncthing + ".stversions", # Syncthing + ".localized", # macOS + "@eaDir", # Synology NAS + ".Spotlight-V100", # macOS + ".Trashes", # macOS + "__MACOSX", # macOS archive artifacts + ) + + def __init__( + self, + *, + supported_extensions: frozenset[str] | None = None, + ignore_patterns: list[str] | None = None, + ignore_dirs: list[str] | None = None, + ) -> None: + """ + Initialize the consumer filter. + + Args: + supported_extensions: Set of file extensions to accept (e.g., {".pdf", ".png"}). + If None, uses get_supported_file_extensions(). + ignore_patterns: Additional regex patterns to ignore (matched against filename). + ignore_dirs: Additional directory names to ignore (merged with defaults). + """ + # Get supported extensions + if supported_extensions is None: + supported_extensions = frozenset(get_supported_file_extensions()) + self._supported_extensions = supported_extensions + + # Combine default and user patterns + all_patterns: list[str] = list(self.DEFAULT_IGNORE_PATTERNS) + if ignore_patterns: + all_patterns.extend(ignore_patterns) + + # Combine default and user ignore_dirs + all_ignore_dirs: list[str] = list(self.DEFAULT_IGNORE_DIRS) + if ignore_dirs: + all_ignore_dirs.extend(ignore_dirs) + + # Let DefaultFilter handle all the pattern and directory filtering + super().__init__( + ignore_dirs=tuple(all_ignore_dirs), + ignore_entity_patterns=tuple(all_patterns), + ignore_paths=(), + ) + + def __call__(self, change: Change, path: str) -> bool: + """ + Filter function for watchfiles. + + Returns True if the path should be watched, False to ignore. + + The parent DefaultFilter handles: + - Hidden files/directories (starting with .) + - Directories in ignore_dirs + - Files/directories matching ignore_entity_patterns + + We additionally filter files by extension. + """ + # Let parent filter handle directory ignoring and pattern matching + if not super().__call__(change, path): + return False + + path_obj = Path(path) + + # For directories, parent filter already handled everything + if path_obj.is_dir(): + return True + + # For files, check extension + return self._has_supported_extension(path_obj) + + def _has_supported_extension(self, path: Path) -> bool: + """Check if the file has a supported extension.""" + suffix = path.suffix.lower() + return suffix in self._supported_extensions + + +def _tags_from_path(filepath: Path, consumption_dir: Path) -> list[int]: + """ + Walk up the directory tree from filepath to consumption_dir and get or create Tag IDs for every directory. - Returns set of Tag models + Returns list of Tag primary keys. """ db.close_old_connections() - tag_ids = set() - path_parts = filepath.relative_to(settings.CONSUMPTION_DIR).parent.parts + tag_ids: set[int] = set() + path_parts = filepath.relative_to(consumption_dir).parent.parts + for part in path_parts: - tag_ids.add( - Tag.objects.get_or_create(name__iexact=part, defaults={"name": part})[0].pk, + tag, _ = Tag.objects.get_or_create( + name__iexact=part, + defaults={"name": part}, ) + tag_ids.add(tag.pk) return list(tag_ids) -def _is_ignored(filepath: Path) -> bool: +def _consume_file( + filepath: Path, + consumption_dir: Path, + *, + subdirs_as_tags: bool, +) -> None: """ - Checks if the given file should be ignored, based on configured - patterns. + Queue a file for consumption. - Returns True if the file is ignored, False otherwise + Args: + filepath: Path to the file to consume. + consumption_dir: Base consumption directory. + subdirs_as_tags: Whether to create tags from subdirectory names. """ - # Trim out the consume directory, leaving only filename and it's - # path relative to the consume directory - filepath_relative = PurePath(filepath).relative_to(settings.CONSUMPTION_DIR) - - # March through the components of the path, including directories and the filename - # looking for anything matching - # foo/bar/baz/file.pdf -> (foo, bar, baz, file.pdf) - parts = [] - for part in filepath_relative.parts: - # If the part is not the name (ie, it's a dir) - # Need to append the trailing slash or fnmatch doesn't match - # fnmatch("dir", "dir/*") == False - # fnmatch("dir/", "dir/*") == True - if part != filepath_relative.name: - part = part + "/" - parts.append(part) - - for pattern in settings.CONSUMER_IGNORE_PATTERNS: - if len(filter(parts, pattern)): - return True - - return False - - -def _consume(filepath: Path) -> None: - if filepath.is_dir() or _is_ignored(filepath): + # Verify file still exists and is accessible + try: + if not filepath.is_file(): + logger.debug(f"Not consuming {filepath}: not a file or doesn't exist") + return + except OSError as e: + logger.warning(f"Not consuming {filepath}: {e}") return - if not filepath.is_file(): - logger.debug(f"Not consuming file {filepath}: File has moved.") - return - - if not is_file_ext_supported(filepath.suffix): - logger.warning(f"Not consuming file {filepath}: Unknown file extension.") - return - - # Total wait time: up to 500ms - os_error_retry_count: Final[int] = 50 - os_error_retry_wait: Final[float] = 0.01 - - read_try_count = 0 - file_open_ok = False - os_error_str = None - - while (read_try_count < os_error_retry_count) and not file_open_ok: + # Get tags from path if configured + tag_ids: list[int] | None = None + if subdirs_as_tags: try: - with filepath.open("rb"): - file_open_ok = True - except OSError as e: - read_try_count += 1 - os_error_str = str(e) - sleep(os_error_retry_wait) + tag_ids = _tags_from_path(filepath, consumption_dir) + except Exception: + logger.exception(f"Error creating tags from path for {filepath}") - if read_try_count >= os_error_retry_count: - logger.warning(f"Not consuming file {filepath}: OS reports {os_error_str}") - return - - tag_ids = None + # Queue for consumption try: - if settings.CONSUMER_SUBDIRS_AS_TAGS: - tag_ids = _tags_from_path(filepath) - except Exception: - logger.exception("Error creating tags from path") - - try: - logger.info(f"Adding {filepath} to the task queue.") + logger.info(f"Adding {filepath} to the task queue") consume_file.delay( ConsumableDocument( source=DocumentSource.ConsumeFolder, @@ -131,223 +346,228 @@ def _consume(filepath: Path) -> None: DocumentMetadataOverrides(tag_ids=tag_ids), ) except Exception: - # Catch all so that the consumer won't crash. - # This is also what the test case is listening for to check for - # errors. - logger.exception("Error while consuming document") - - -def _consume_wait_unmodified(file: Path) -> None: - """ - Waits for the given file to appear unmodified based on file size - and modification time. Will wait a configured number of seconds - and retry a configured number of times before either consuming or - giving up - """ - if _is_ignored(file): - return - - logger.debug(f"Waiting for file {file} to remain unmodified") - mtime = -1 - size = -1 - current_try = 0 - while current_try < settings.CONSUMER_POLLING_RETRY_COUNT: - try: - stat_data = file.stat() - new_mtime = stat_data.st_mtime - new_size = stat_data.st_size - except FileNotFoundError: - logger.debug( - f"File {file} moved while waiting for it to remain unmodified.", - ) - return - if new_mtime == mtime and new_size == size: - _consume(file) - return - mtime = new_mtime - size = new_size - sleep(settings.CONSUMER_POLLING_DELAY) - current_try += 1 - - logger.error(f"Timeout while waiting on file {file} to remain unmodified.") - - -class Handler(FileSystemEventHandler): - def __init__(self, pool: ThreadPoolExecutor) -> None: - super().__init__() - self._pool = pool - - def on_created(self, event): - self._pool.submit(_consume_wait_unmodified, Path(event.src_path)) - - def on_moved(self, event): - self._pool.submit(_consume_wait_unmodified, Path(event.dest_path)) + logger.exception(f"Error while queuing document {filepath}") class Command(BaseCommand): """ - On every iteration of an infinite loop, consume what we can from the - consumption directory. + Watch a consumption directory and queue new documents for processing. + + Uses watchfiles for efficient file system monitoring. Supports both + native OS notifications (inotify on Linux, FSEvents on macOS) and + polling for network filesystems. """ - # This is here primarily for the tests and is irrelevant in production. - stop_flag = Event() - # Also only for testing, configures in one place the timeout used before checking - # the stop flag - testing_timeout_s: Final[float] = 0.5 - testing_timeout_ms: Final[float] = testing_timeout_s * 1000.0 + help = "Watch the consumption directory for new documents" - def add_arguments(self, parser): + # For testing - allows tests to stop the consumer + stop_flag: Event = Event() + + # Testing timeout in seconds + testing_timeout_s: Final[float] = 0.5 + + def add_arguments(self, parser) -> None: parser.add_argument( "directory", - default=settings.CONSUMPTION_DIR, + default=None, nargs="?", - help="The consumption directory.", + help="The consumption directory (defaults to CONSUMPTION_DIR setting)", + ) + parser.add_argument( + "--oneshot", + action="store_true", + help="Process existing files and exit without watching", ) - parser.add_argument("--oneshot", action="store_true", help="Run only once.") - - # Only use during unit testing, will configure a timeout - # Leaving it unset or false and the consumer will exit when it - # receives SIGINT parser.add_argument( "--testing", action="store_true", - help="Flag used only for unit testing", + help="Enable testing mode with shorter timeouts", default=False, ) - def handle(self, *args, **options): - directory = options["directory"] - recursive = settings.CONSUMER_RECURSIVE - + def handle(self, *args, **options) -> None: + # Resolve consumption directory + directory = options.get("directory") if not directory: - raise CommandError("CONSUMPTION_DIR does not appear to be set.") + directory = getattr(settings, "CONSUMPTION_DIR", None) + if not directory: + raise CommandError("CONSUMPTION_DIR is not configured") directory = Path(directory).resolve() - if not directory.is_dir(): - raise CommandError(f"Consumption directory {directory} does not exist") + if not directory.exists(): + raise CommandError(f"Consumption directory does not exist: {directory}") - # Consumer will need this + if not directory.is_dir(): + raise CommandError(f"Consumption path is not a directory: {directory}") + + # Ensure scratch directory exists settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True) - if recursive: - for dirpath, _, filenames in os.walk(directory): - for filename in filenames: - filepath = Path(dirpath) / filename - _consume(filepath) - else: - for filepath in directory.iterdir(): - _consume(filepath) + # Get settings + recursive: bool = settings.CONSUMER_RECURSIVE + subdirs_as_tags: bool = settings.CONSUMER_SUBDIRS_AS_TAGS + polling_interval: float = settings.CONSUMER_POLLING_INTERVAL + stability_delay: float = settings.CONSUMER_STABILITY_DELAY + ignore_patterns: list[str] = settings.CONSUMER_IGNORE_PATTERNS + ignore_dirs: list[str] = settings.CONSUMER_IGNORE_DIRS + is_testing: bool = options.get("testing", False) + is_oneshot: bool = options.get("oneshot", False) - if options["oneshot"]: + # Create filter + consumer_filter = ConsumerFilter( + ignore_patterns=ignore_patterns, + ignore_dirs=ignore_dirs, + ) + + # Process existing files + self._process_existing_files( + directory=directory, + recursive=recursive, + subdirs_as_tags=subdirs_as_tags, + consumer_filter=consumer_filter, + ) + + if is_oneshot: + logger.info("Oneshot mode: processed existing files, exiting") return - if settings.CONSUMER_POLLING == 0 and INotify: - self.handle_inotify(directory, recursive, is_testing=options["testing"]) + # Start watching + self._watch_directory( + directory=directory, + recursive=recursive, + subdirs_as_tags=subdirs_as_tags, + consumer_filter=consumer_filter, + polling_interval=polling_interval, + stability_delay=stability_delay, + is_testing=is_testing, + ) + + logger.debug("Consumer exiting") + + def _process_existing_files( + self, + *, + directory: Path, + recursive: bool, + subdirs_as_tags: bool, + consumer_filter: ConsumerFilter, + ) -> None: + """Process any existing files in the consumption directory.""" + logger.info(f"Processing existing files in {directory}") + + glob_pattern = "**/*" if recursive else "*" + + for filepath in directory.glob(glob_pattern): + # Use filter to check if file should be processed + if not filepath.is_file(): + continue + + if not consumer_filter(Change.added, str(filepath)): + continue + + _consume_file( + filepath=filepath, + consumption_dir=directory, + subdirs_as_tags=subdirs_as_tags, + ) + + def _watch_directory( + self, + *, + directory: Path, + recursive: bool, + subdirs_as_tags: bool, + consumer_filter: ConsumerFilter, + polling_interval: float, + stability_delay: float, + is_testing: bool, + ) -> None: + """Watch directory for changes and process stable files.""" + use_polling = polling_interval > 0 + poll_delay_ms = int(polling_interval * 1000) if use_polling else 0 + + if use_polling: + logger.info( + f"Watching {directory} using polling (interval: {polling_interval}s)", + ) else: - if INotify is None and settings.CONSUMER_POLLING == 0: # pragma: no cover - logger.warning("Using polling as INotify import failed") - self.handle_polling(directory, recursive, is_testing=options["testing"]) + logger.info(f"Watching {directory} using native file system events") - logger.debug("Consumer exiting.") + # Create stability tracker + tracker = FileStabilityTracker(stability_delay=stability_delay) - def handle_polling(self, directory, recursive, *, is_testing: bool): - logger.info(f"Polling directory for changes: {directory}") + # Calculate timeouts + stability_timeout_ms = int(stability_delay * 1000) + testing_timeout_ms = int(self.testing_timeout_s * 1000) - timeout = None + # Calculate appropriate timeout for watch loop + # In polling mode, rust_timeout must be significantly longer than poll_delay_ms + # to ensure poll cycles can complete before timing out if is_testing: - timeout = self.testing_timeout_s - logger.debug(f"Configuring timeout to {timeout}s") + if use_polling: + # For polling: timeout must be at least 3x the poll interval to allow + # multiple poll cycles. This prevents timeouts from interfering with + # the polling mechanism. + min_polling_timeout_ms = poll_delay_ms * 3 + timeout_ms = max(min_polling_timeout_ms, testing_timeout_ms) + else: + # For native watching, use short timeout to check stop flag + timeout_ms = testing_timeout_ms + else: + # Not testing, wait indefinitely for first event + timeout_ms = 0 - polling_interval = settings.CONSUMER_POLLING - if polling_interval == 0: # pragma: no cover - # Only happens if INotify failed to import - logger.warning("Using polling of 10s, consider setting this") - polling_interval = 10 + self.stop_flag.clear() - with ThreadPoolExecutor(max_workers=4) as pool: - observer = PollingObserver(timeout=polling_interval) - observer.schedule(Handler(pool), directory, recursive=recursive) - observer.start() + while not self.stop_flag.is_set(): try: - while observer.is_alive(): - observer.join(timeout) - if self.stop_flag.is_set(): - observer.stop() - except KeyboardInterrupt: - observer.stop() - observer.join() + for changes in watch( + directory, + watch_filter=consumer_filter, + rust_timeout=timeout_ms, + yield_on_timeout=True, + force_polling=use_polling, + poll_delay_ms=poll_delay_ms, + recursive=recursive, + stop_event=self.stop_flag, + ): + # Process each change + for change_type, path in changes: + path = Path(path).resolve() + if not path.is_file(): + continue + logger.debug(f"Event: {change_type.name} for {path}") + tracker.track(path, change_type) - def handle_inotify(self, directory, recursive, *, is_testing: bool): - logger.info(f"Using inotify to watch directory for changes: {directory}") + # Check for stable files + for stable_path in tracker.get_stable_files(): + _consume_file( + filepath=stable_path, + consumption_dir=directory, + subdirs_as_tags=subdirs_as_tags, + ) - timeout_ms = None - if is_testing: - timeout_ms = self.testing_timeout_ms - logger.debug(f"Configuring timeout to {timeout_ms}ms") + # Exit watch loop to reconfigure timeout + break - inotify = INotify() - inotify_flags = flags.CLOSE_WRITE | flags.MOVED_TO | flags.MODIFY - if recursive: - inotify.add_watch_recursive(directory, inotify_flags) - else: - inotify.add_watch(directory, inotify_flags) - - inotify_debounce_secs: Final[float] = settings.CONSUMER_INOTIFY_DELAY - inotify_debounce_ms: Final[int] = inotify_debounce_secs * 1000 - - finished = False - - notified_files = {} - - try: - while not finished: - try: - for event in inotify.read(timeout=timeout_ms): - path = inotify.get_path(event.wd) if recursive else directory - filepath = Path(path) / event.name - if flags.MODIFY in flags.from_mask(event.mask): - notified_files.pop(filepath, None) - else: - notified_files[filepath] = monotonic() - - # Check the files against the timeout - still_waiting = {} - # last_event_time is time of the last inotify event for this file - for filepath, last_event_time in notified_files.items(): - # Current time - last time over the configured timeout - waited_long_enough = ( - monotonic() - last_event_time - ) > inotify_debounce_secs - - # Also make sure the file exists still, some scanners might write a - # temporary file first - file_still_exists = filepath.exists() and filepath.is_file() - - if waited_long_enough and file_still_exists: - _consume(filepath) - elif file_still_exists: - still_waiting[filepath] = last_event_time - - # These files are still waiting to hit the timeout - notified_files = still_waiting - - # If files are waiting, need to exit read() to check them - # Otherwise, go back to infinite sleep time, but only if not testing - if len(notified_files) > 0: - timeout_ms = inotify_debounce_ms - elif is_testing: - timeout_ms = self.testing_timeout_ms + # Determine next timeout + if tracker.has_pending_files(): + # Check pending files at stability interval + timeout_ms = stability_timeout_ms + elif is_testing: + # In testing, use appropriate timeout based on watch mode + if use_polling: + # For polling: ensure timeout allows polls to complete + min_polling_timeout_ms = poll_delay_ms * 3 + timeout_ms = max(min_polling_timeout_ms, testing_timeout_ms) else: - timeout_ms = None + # For native watching, use short timeout to check stop flag + timeout_ms = testing_timeout_ms + else: # pragma: nocover + # No pending files, wait indefinitely + timeout_ms = 0 - if self.stop_flag.is_set(): - logger.debug("Finishing because event is set") - finished = True - - except KeyboardInterrupt: - logger.info("Received SIGINT, stopping inotify") - finished = True - finally: - inotify.close() + except KeyboardInterrupt: # pragma: nocover + logger.info("Received interrupt, stopping consumer") + self.stop_flag.set() diff --git a/src/documents/management/commands/document_exporter.py b/src/documents/management/commands/document_exporter.py index 88daeddf5..bd962efc4 100644 --- a/src/documents/management/commands/document_exporter.py +++ b/src/documents/management/commands/document_exporter.py @@ -3,7 +3,6 @@ import json import os import shutil import tempfile -import time from pathlib import Path from typing import TYPE_CHECKING @@ -56,7 +55,6 @@ from documents.settings import EXPORTER_FILE_NAME from documents.settings import EXPORTER_THUMBNAIL_NAME from documents.utils import copy_file_with_basic_stats from paperless import version -from paperless.db import GnuPG from paperless.models import ApplicationConfiguration from paperless_mail.models import MailAccount from paperless_mail.models import MailRule @@ -69,7 +67,7 @@ class Command(CryptMixin, BaseCommand): "easy import." ) - def add_arguments(self, parser): + def add_arguments(self, parser) -> None: parser.add_argument("target") parser.add_argument( @@ -188,7 +186,7 @@ class Command(CryptMixin, BaseCommand): help="If provided, is used to encrypt sensitive data in the export", ) - def handle(self, *args, **options): + def handle(self, *args, **options) -> None: self.target = Path(options["target"]).resolve() self.split_manifest: bool = options["split_manifest"] self.compare_checksums: bool = options["compare_checksums"] @@ -246,7 +244,7 @@ class Command(CryptMixin, BaseCommand): if self.zip_export and temp_dir is not None: temp_dir.cleanup() - def dump(self): + def dump(self) -> None: # 1. Take a snapshot of what files exist in the current export folder for x in self.target.glob("**/*"): if x.is_file(): @@ -316,20 +314,17 @@ class Command(CryptMixin, BaseCommand): total=len(document_manifest), disable=self.no_progress_bar, ): - # 3.1. store files unencrypted - document_dict["fields"]["storage_type"] = Document.STORAGE_TYPE_UNENCRYPTED - document = document_map[document_dict["pk"]] - # 3.2. generate a unique filename + # 3.1. generate a unique filename base_name = self.generate_base_name(document) - # 3.3. write filenames into manifest + # 3.2. write filenames into manifest original_target, thumbnail_target, archive_target = ( self.generate_document_targets(document, base_name, document_dict) ) - # 3.4. write files to target folder + # 3.3. write files to target folder if not self.data_only: self.copy_document_files( document, @@ -423,7 +418,6 @@ class Command(CryptMixin, BaseCommand): base_name = generate_filename( document, counter=filename_counter, - append_gpg=False, ) else: base_name = document.get_public_filename(counter=filename_counter) @@ -482,51 +476,29 @@ class Command(CryptMixin, BaseCommand): If the document is encrypted, the files are decrypted before copying them to the target location. """ - if document.storage_type == Document.STORAGE_TYPE_GPG: - t = int(time.mktime(document.created.timetuple())) + self.check_and_copy( + document.source_path, + document.checksum, + original_target, + ) - original_target.parent.mkdir(parents=True, exist_ok=True) - with document.source_file as out_file: - original_target.write_bytes(GnuPG.decrypted(out_file)) - os.utime(original_target, times=(t, t)) + if thumbnail_target: + self.check_and_copy(document.thumbnail_path, None, thumbnail_target) - if thumbnail_target: - thumbnail_target.parent.mkdir(parents=True, exist_ok=True) - with document.thumbnail_file as out_file: - thumbnail_target.write_bytes(GnuPG.decrypted(out_file)) - os.utime(thumbnail_target, times=(t, t)) - - if archive_target: - archive_target.parent.mkdir(parents=True, exist_ok=True) - if TYPE_CHECKING: - assert isinstance(document.archive_path, Path) - with document.archive_path as out_file: - archive_target.write_bytes(GnuPG.decrypted(out_file)) - os.utime(archive_target, times=(t, t)) - else: + if archive_target: + if TYPE_CHECKING: + assert isinstance(document.archive_path, Path) self.check_and_copy( - document.source_path, - document.checksum, - original_target, + document.archive_path, + document.archive_checksum, + archive_target, ) - if thumbnail_target: - self.check_and_copy(document.thumbnail_path, None, thumbnail_target) - - if archive_target: - if TYPE_CHECKING: - assert isinstance(document.archive_path, Path) - self.check_and_copy( - document.archive_path, - document.archive_checksum, - archive_target, - ) - def check_and_write_json( self, content: list[dict] | dict, target: Path, - ): + ) -> None: """ Writes the source content to the target json file. If --compare-json arg was used, don't write to target file if @@ -556,7 +528,7 @@ class Command(CryptMixin, BaseCommand): source: Path, source_checksum: str | None, target: Path, - ): + ) -> None: """ Copies the source to the target, if target doesn't exist or the target doesn't seem to match the source attributes diff --git a/src/documents/management/commands/document_fuzzy_match.py b/src/documents/management/commands/document_fuzzy_match.py index 5eebeb172..4ecdf6d01 100644 --- a/src/documents/management/commands/document_fuzzy_match.py +++ b/src/documents/management/commands/document_fuzzy_match.py @@ -92,6 +92,9 @@ class Command(MultiProcessMixin, ProgressBarMixin, BaseCommand): # doc to doc is obviously not useful if first_doc.pk == second_doc.pk: continue + # Skip empty documents (e.g. password-protected) + if first_doc.content.strip() == "" or second_doc.content.strip() == "": + continue # Skip matching which have already been matched together # doc 1 to doc 2 is the same as doc 2 to doc 1 doc_1_to_doc_2 = (first_doc.pk, second_doc.pk) diff --git a/src/documents/management/commands/document_importer.py b/src/documents/management/commands/document_importer.py index 282f5c48e..5cd743590 100644 --- a/src/documents/management/commands/document_importer.py +++ b/src/documents/management/commands/document_importer.py @@ -48,12 +48,13 @@ if settings.AUDIT_LOG_ENABLED: @contextmanager -def disable_signal(sig, receiver, sender) -> Generator: +def disable_signal(sig, receiver, sender, *, weak: bool | None = None) -> Generator: try: sig.disconnect(receiver=receiver, sender=sender) yield finally: - sig.connect(receiver=receiver, sender=sender) + kwargs = {"weak": weak} if weak is not None else {} + sig.connect(receiver=receiver, sender=sender, **kwargs) class Command(CryptMixin, BaseCommand): @@ -245,7 +246,7 @@ class Command(CryptMixin, BaseCommand): self.source = Path(tmp_dir) self._run_import() - def _run_import(self): + def _run_import(self) -> None: self.pre_check() self.load_metadata() self.load_manifest_files() @@ -258,16 +259,19 @@ class Command(CryptMixin, BaseCommand): post_save, receiver=update_filename_and_move_files, sender=Document, + weak=False, ), disable_signal( m2m_changed, receiver=update_filename_and_move_files, sender=Document.tags.through, + weak=False, ), disable_signal( post_save, receiver=update_filename_and_move_files, sender=CustomFieldInstance, + weak=False, ), disable_signal( post_save, @@ -379,8 +383,6 @@ class Command(CryptMixin, BaseCommand): else: archive_path = None - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED - with FileLock(settings.MEDIA_LOCK): if Path(document.source_path).is_file(): raise FileExistsError(document.source_path) diff --git a/src/documents/management/commands/document_llmindex.py b/src/documents/management/commands/document_llmindex.py new file mode 100644 index 000000000..d2df02ed9 --- /dev/null +++ b/src/documents/management/commands/document_llmindex.py @@ -0,0 +1,22 @@ +from django.core.management import BaseCommand +from django.db import transaction + +from documents.management.commands.mixins import ProgressBarMixin +from documents.tasks import llmindex_index + + +class Command(ProgressBarMixin, BaseCommand): + help = "Manages the LLM-based vector index for Paperless." + + def add_arguments(self, parser): + parser.add_argument("command", choices=["rebuild", "update"]) + self.add_argument_progress_bar_mixin(parser) + + def handle(self, *args, **options): + self.handle_progress_bar_mixin(**options) + with transaction.atomic(): + llmindex_index( + progress_bar_disable=self.no_progress_bar, + rebuild=options["command"] == "rebuild", + scheduled=False, + ) diff --git a/src/documents/management/commands/document_thumbnails.py b/src/documents/management/commands/document_thumbnails.py index d4653f0b3..e50c837d3 100644 --- a/src/documents/management/commands/document_thumbnails.py +++ b/src/documents/management/commands/document_thumbnails.py @@ -12,7 +12,7 @@ from documents.models import Document from documents.parsers import get_parser_class_for_mime_type -def _process_document(doc_id): +def _process_document(doc_id) -> None: document: Document = Document.objects.get(id=doc_id) parser_class = get_parser_class_for_mime_type(document.mime_type) @@ -37,7 +37,7 @@ def _process_document(doc_id): class Command(MultiProcessMixin, ProgressBarMixin, BaseCommand): help = "This will regenerate the thumbnails for all documents." - def add_arguments(self, parser): + def add_arguments(self, parser) -> None: parser.add_argument( "-d", "--document", diff --git a/src/documents/management/commands/manage_superuser.py b/src/documents/management/commands/manage_superuser.py index e0d238438..3a81a47c5 100644 --- a/src/documents/management/commands/manage_superuser.py +++ b/src/documents/management/commands/manage_superuser.py @@ -25,7 +25,7 @@ class Command(BaseCommand): parser.formatter_class = RawTextHelpFormatter return parser - def handle(self, *args, **options): + def handle(self, *args, **options) -> None: username = os.getenv("PAPERLESS_ADMIN_USER", "admin") mail = os.getenv("PAPERLESS_ADMIN_MAIL", "root@localhost") password = os.getenv("PAPERLESS_ADMIN_PASSWORD") diff --git a/src/documents/management/commands/mixins.py b/src/documents/management/commands/mixins.py index a2ad326e4..109f3aea7 100644 --- a/src/documents/management/commands/mixins.py +++ b/src/documents/management/commands/mixins.py @@ -27,7 +27,7 @@ class MultiProcessMixin: for the use of multiple processes """ - def add_argument_processes_mixin(self, parser: ArgumentParser): + def add_argument_processes_mixin(self, parser: ArgumentParser) -> None: parser.add_argument( "--processes", default=max(1, os.cpu_count() // 4), @@ -35,7 +35,7 @@ class MultiProcessMixin: help="Number of processes to distribute work amongst", ) - def handle_processes_mixin(self, *args, **options): + def handle_processes_mixin(self, *args, **options) -> None: self.process_count = options["processes"] if self.process_count < 1: raise CommandError("There must be at least 1 process") @@ -47,7 +47,7 @@ class ProgressBarMixin: via this class """ - def add_argument_progress_bar_mixin(self, parser: ArgumentParser): + def add_argument_progress_bar_mixin(self, parser: ArgumentParser) -> None: parser.add_argument( "--no-progress-bar", default=False, @@ -55,7 +55,7 @@ class ProgressBarMixin: help="If set, the progress bar will not be shown", ) - def handle_progress_bar_mixin(self, *args, **options): + def handle_progress_bar_mixin(self, *args, **options) -> None: self.no_progress_bar = options["no_progress_bar"] self.use_progress_bar = not self.no_progress_bar @@ -120,7 +120,7 @@ class CryptMixin: }, } - def load_crypt_params(self, metadata: dict): + def load_crypt_params(self, metadata: dict) -> None: # Load up the values for setting up decryption self.kdf_algorithm: str = metadata[EXPORTER_CRYPTO_SETTINGS_NAME][ EXPORTER_CRYPTO_ALGO_NAME @@ -135,7 +135,7 @@ class CryptMixin: EXPORTER_CRYPTO_SALT_NAME ] - def setup_crypto(self, *, passphrase: str, salt: str | None = None): + def setup_crypto(self, *, passphrase: str, salt: str | None = None) -> None: """ Constructs a class for encryption or decryption using the specified passphrase and salt diff --git a/src/documents/matching.py b/src/documents/matching.py index 2088a6042..fb458b17c 100644 --- a/src/documents/matching.py +++ b/src/documents/matching.py @@ -6,8 +6,11 @@ from fnmatch import fnmatch from fnmatch import translate as fnmatch_translate from typing import TYPE_CHECKING +from rest_framework import serializers + from documents.data_models import ConsumableDocument from documents.data_models import DocumentSource +from documents.filters import CustomFieldQueryParser from documents.models import Correspondent from documents.models import Document from documents.models import DocumentType @@ -17,6 +20,7 @@ from documents.models import Tag from documents.models import Workflow from documents.models import WorkflowTrigger from documents.permissions import get_objects_for_user_owner_aware +from documents.regex import safe_regex_search if TYPE_CHECKING: from django.db.models import QuerySet @@ -30,7 +34,7 @@ def log_reason( matching_model: MatchingModel | WorkflowTrigger, document: Document, reason: str, -): +) -> None: class_name = type(matching_model).__name__ name = ( matching_model.name if hasattr(matching_model, "name") else str(matching_model) @@ -61,8 +65,12 @@ def match_correspondents(document: Document, classifier: DocumentClassifier, use return list( filter( - lambda o: matches(o, document) - or (o.pk == pred_id and o.matching_algorithm == MatchingModel.MATCH_AUTO), + lambda o: ( + matches(o, document) + or ( + o.pk == pred_id and o.matching_algorithm == MatchingModel.MATCH_AUTO + ) + ), correspondents, ), ) @@ -88,8 +96,12 @@ def match_document_types(document: Document, classifier: DocumentClassifier, use return list( filter( - lambda o: matches(o, document) - or (o.pk == pred_id and o.matching_algorithm == MatchingModel.MATCH_AUTO), + lambda o: ( + matches(o, document) + or ( + o.pk == pred_id and o.matching_algorithm == MatchingModel.MATCH_AUTO + ) + ), document_types, ), ) @@ -110,10 +122,12 @@ def match_tags(document: Document, classifier: DocumentClassifier, user=None): return list( filter( - lambda o: matches(o, document) - or ( - o.matching_algorithm == MatchingModel.MATCH_AUTO - and o.pk in predicted_tag_ids + lambda o: ( + matches(o, document) + or ( + o.matching_algorithm == MatchingModel.MATCH_AUTO + and o.pk in predicted_tag_ids + ) ), tags, ), @@ -141,15 +155,19 @@ def match_storage_paths(document: Document, classifier: DocumentClassifier, user return list( filter( - lambda o: matches(o, document) - or (o.pk == pred_id and o.matching_algorithm == MatchingModel.MATCH_AUTO), + lambda o: ( + matches(o, document) + or ( + o.pk == pred_id and o.matching_algorithm == MatchingModel.MATCH_AUTO + ) + ), storage_paths, ), ) def matches(matching_model: MatchingModel, document: Document): - search_kwargs = {} + search_flags = 0 document_content = document.content @@ -158,14 +176,18 @@ def matches(matching_model: MatchingModel, document: Document): return False if matching_model.is_insensitive: - search_kwargs = {"flags": re.IGNORECASE} + search_flags = re.IGNORECASE if matching_model.matching_algorithm == MatchingModel.MATCH_NONE: return False elif matching_model.matching_algorithm == MatchingModel.MATCH_ALL: for word in _split_match(matching_model): - search_result = re.search(rf"\b{word}\b", document_content, **search_kwargs) + search_result = re.search( + rf"\b{word}\b", + document_content, + flags=search_flags, + ) if not search_result: return False log_reason( @@ -177,7 +199,7 @@ def matches(matching_model: MatchingModel, document: Document): elif matching_model.matching_algorithm == MatchingModel.MATCH_ANY: for word in _split_match(matching_model): - if re.search(rf"\b{word}\b", document_content, **search_kwargs): + if re.search(rf"\b{word}\b", document_content, flags=search_flags): log_reason(matching_model, document, f"it contains this word: {word}") return True return False @@ -187,7 +209,7 @@ def matches(matching_model: MatchingModel, document: Document): re.search( rf"\b{re.escape(matching_model.match)}\b", document_content, - **search_kwargs, + flags=search_flags, ), ) if result: @@ -199,16 +221,11 @@ def matches(matching_model: MatchingModel, document: Document): return result elif matching_model.matching_algorithm == MatchingModel.MATCH_REGEX: - try: - match = re.search( - re.compile(matching_model.match, **search_kwargs), - document_content, - ) - except re.error: - logger.error( - f"Error while processing regular expression {matching_model.match}", - ) - return False + match = safe_regex_search( + matching_model.match, + document_content, + flags=search_flags, + ) if match: log_reason( matching_model, @@ -314,11 +331,19 @@ def consumable_document_matches_workflow( trigger_matched = False # Document path vs trigger path + + # Use the original_path if set, else us the original_file + match_against = ( + document.original_path + if document.original_path is not None + else document.original_file + ) + if ( trigger.filter_path is not None and len(trigger.filter_path) > 0 and not fnmatch( - document.original_file, + match_against, trigger.filter_path, ) ): @@ -334,67 +359,181 @@ def consumable_document_matches_workflow( def existing_document_matches_workflow( document: Document, trigger: WorkflowTrigger, -) -> tuple[bool, str]: +) -> tuple[bool, str | None]: """ Returns True if the Document matches all filters from the workflow trigger, False otherwise. Includes a reason if doesn't match """ - trigger_matched = True - reason = "" - + # Check content matching algorithm if trigger.matching_algorithm > MatchingModel.MATCH_NONE and not matches( trigger, document, ): - reason = ( + return ( + False, f"Document content matching settings for algorithm '{trigger.matching_algorithm}' did not match", ) - trigger_matched = False - # Document tags vs trigger has_tags + # Check if any tag filters exist to determine if we need to load document tags + trigger_has_tags_qs = trigger.filter_has_tags.all() + trigger_has_all_tags_qs = trigger.filter_has_all_tags.all() + trigger_has_not_tags_qs = trigger.filter_has_not_tags.all() + + has_tags_filter = trigger_has_tags_qs.exists() + has_all_tags_filter = trigger_has_all_tags_qs.exists() + has_not_tags_filter = trigger_has_not_tags_qs.exists() + + # Load document tags once if any tag filters exist + document_tag_ids = None + if has_tags_filter or has_all_tags_filter or has_not_tags_filter: + document_tag_ids = set(document.tags.values_list("id", flat=True)) + + # Document tags vs trigger has_tags (any of) + if has_tags_filter: + trigger_has_tag_ids = set(trigger_has_tags_qs.values_list("id", flat=True)) + if not (document_tag_ids & trigger_has_tag_ids): + # For error message, load the actual tag objects + return ( + False, + f"Document tags {list(document.tags.all())} do not include {list(trigger_has_tags_qs)}", + ) + + # Document tags vs trigger has_all_tags (all of) + if has_all_tags_filter: + required_tag_ids = set(trigger_has_all_tags_qs.values_list("id", flat=True)) + if not required_tag_ids.issubset(document_tag_ids): + return ( + False, + f"Document tags {list(document.tags.all())} do not contain all of {list(trigger_has_all_tags_qs)}", + ) + + # Document tags vs trigger has_not_tags (none of) + if has_not_tags_filter: + excluded_tag_ids = set(trigger_has_not_tags_qs.values_list("id", flat=True)) + if document_tag_ids & excluded_tag_ids: + return ( + False, + f"Document tags {list(document.tags.all())} include excluded tags {list(trigger_has_not_tags_qs)}", + ) + + allowed_correspondent_ids = set( + trigger.filter_has_any_correspondents.values_list("id", flat=True), + ) if ( - trigger.filter_has_tags.all().count() > 0 - and document.tags.filter( - id__in=trigger.filter_has_tags.all().values_list("id"), - ).count() - == 0 + allowed_correspondent_ids + and document.correspondent_id not in allowed_correspondent_ids ): - reason = ( - f"Document tags {document.tags.all()} do not include" - f" {trigger.filter_has_tags.all()}", + return ( + False, + f"Document correspondent {document.correspondent} is not one of {list(trigger.filter_has_any_correspondents.all())}", ) - trigger_matched = False # Document correspondent vs trigger has_correspondent if ( - trigger.filter_has_correspondent is not None - and document.correspondent != trigger.filter_has_correspondent + trigger.filter_has_correspondent_id is not None + and document.correspondent_id != trigger.filter_has_correspondent_id ): - reason = ( + return ( + False, f"Document correspondent {document.correspondent} does not match {trigger.filter_has_correspondent}", ) - trigger_matched = False + + if ( + document.correspondent_id + and trigger.filter_has_not_correspondents.filter( + id=document.correspondent_id, + ).exists() + ): + return ( + False, + f"Document correspondent {document.correspondent} is excluded by {list(trigger.filter_has_not_correspondents.all())}", + ) + + allowed_document_type_ids = set( + trigger.filter_has_any_document_types.values_list("id", flat=True), + ) + if allowed_document_type_ids and ( + document.document_type_id not in allowed_document_type_ids + ): + return ( + False, + f"Document doc type {document.document_type} is not one of {list(trigger.filter_has_any_document_types.all())}", + ) # Document document_type vs trigger has_document_type if ( - trigger.filter_has_document_type is not None - and document.document_type != trigger.filter_has_document_type + trigger.filter_has_document_type_id is not None + and document.document_type_id != trigger.filter_has_document_type_id ): - reason = ( + return ( + False, f"Document doc type {document.document_type} does not match {trigger.filter_has_document_type}", ) - trigger_matched = False + + if ( + document.document_type_id + and trigger.filter_has_not_document_types.filter( + id=document.document_type_id, + ).exists() + ): + return ( + False, + f"Document doc type {document.document_type} is excluded by {list(trigger.filter_has_not_document_types.all())}", + ) + + allowed_storage_path_ids = set( + trigger.filter_has_any_storage_paths.values_list("id", flat=True), + ) + if allowed_storage_path_ids and ( + document.storage_path_id not in allowed_storage_path_ids + ): + return ( + False, + f"Document storage path {document.storage_path} is not one of {list(trigger.filter_has_any_storage_paths.all())}", + ) # Document storage_path vs trigger has_storage_path if ( - trigger.filter_has_storage_path is not None - and document.storage_path != trigger.filter_has_storage_path + trigger.filter_has_storage_path_id is not None + and document.storage_path_id != trigger.filter_has_storage_path_id ): - reason = ( + return ( + False, f"Document storage path {document.storage_path} does not match {trigger.filter_has_storage_path}", ) - trigger_matched = False + + if ( + document.storage_path_id + and trigger.filter_has_not_storage_paths.filter( + id=document.storage_path_id, + ).exists() + ): + return ( + False, + f"Document storage path {document.storage_path} is excluded by {list(trigger.filter_has_not_storage_paths.all())}", + ) + + # Custom field query check + if trigger.filter_custom_field_query: + parser = CustomFieldQueryParser("filter_custom_field_query") + try: + custom_field_q, annotations = parser.parse( + trigger.filter_custom_field_query, + ) + except serializers.ValidationError: + return (False, "Invalid custom field query configuration") + + qs = ( + Document.objects.filter(id=document.id) + .annotate(**annotations) + .filter(custom_field_q) + ) + if not qs.exists(): + return ( + False, + "Document custom fields do not match the configured custom field query", + ) # Document original_filename vs trigger filename if ( @@ -406,13 +545,12 @@ def existing_document_matches_workflow( trigger.filter_filename.lower(), ) ): - reason = ( - f"Document filename {document.original_filename} does not match" - f" {trigger.filter_filename.lower()}", + return ( + False, + f"Document filename {document.original_filename} does not match {trigger.filter_filename.lower()}", ) - trigger_matched = False - return (trigger_matched, reason) + return (True, None) def prefilter_documents_by_workflowtrigger( @@ -425,31 +563,78 @@ def prefilter_documents_by_workflowtrigger( document_matches_workflow in run_workflows """ - if trigger.filter_has_tags.all().count() > 0: - documents = documents.filter( - tags__in=trigger.filter_has_tags.all(), - ).distinct() + # Filter for documents that have AT LEAST ONE of the specified tags. + if trigger.filter_has_tags.exists(): + documents = documents.filter(tags__in=trigger.filter_has_tags.all()).distinct() + # Filter for documents that have ALL of the specified tags. + if trigger.filter_has_all_tags.exists(): + for tag in trigger.filter_has_all_tags.all(): + documents = documents.filter(tags=tag) + # Multiple JOINs can create duplicate results. + documents = documents.distinct() + + # Exclude documents that have ANY of the specified tags. + if trigger.filter_has_not_tags.exists(): + documents = documents.exclude(tags__in=trigger.filter_has_not_tags.all()) + + # Correspondent, DocumentType, etc. filtering + + if trigger.filter_has_any_correspondents.exists(): + documents = documents.filter( + correspondent__in=trigger.filter_has_any_correspondents.all(), + ) if trigger.filter_has_correspondent is not None: documents = documents.filter( correspondent=trigger.filter_has_correspondent, ) + if trigger.filter_has_not_correspondents.exists(): + documents = documents.exclude( + correspondent__in=trigger.filter_has_not_correspondents.all(), + ) + if trigger.filter_has_any_document_types.exists(): + documents = documents.filter( + document_type__in=trigger.filter_has_any_document_types.all(), + ) if trigger.filter_has_document_type is not None: documents = documents.filter( document_type=trigger.filter_has_document_type, ) + if trigger.filter_has_not_document_types.exists(): + documents = documents.exclude( + document_type__in=trigger.filter_has_not_document_types.all(), + ) + if trigger.filter_has_any_storage_paths.exists(): + documents = documents.filter( + storage_path__in=trigger.filter_has_any_storage_paths.all(), + ) if trigger.filter_has_storage_path is not None: documents = documents.filter( storage_path=trigger.filter_has_storage_path, ) + if trigger.filter_has_not_storage_paths.exists(): + documents = documents.exclude( + storage_path__in=trigger.filter_has_not_storage_paths.all(), + ) - if trigger.filter_filename is not None and len(trigger.filter_filename) > 0: - # the true fnmatch will actually run later so we just want a loose filter here + # Custom Field & Filename Filtering + + if trigger.filter_custom_field_query: + parser = CustomFieldQueryParser("filter_custom_field_query") + try: + custom_field_q, annotations = parser.parse( + trigger.filter_custom_field_query, + ) + except serializers.ValidationError: + return documents.none() + + documents = documents.annotate(**annotations).filter(custom_field_q) + + if trigger.filter_filename: regex = fnmatch_translate(trigger.filter_filename).lstrip("^").rstrip("$") - regex = f"(?i){regex}" - documents = documents.filter(original_filename__regex=regex) + documents = documents.filter(original_filename__iregex=regex) return documents @@ -464,13 +649,37 @@ def document_matches_workflow( settings from the workflow trigger, False otherwise """ + triggers_queryset = ( + workflow.triggers.filter( + type=trigger_type, + ) + .select_related( + "filter_mailrule", + "filter_has_document_type", + "filter_has_correspondent", + "filter_has_storage_path", + "schedule_date_custom_field", + ) + .prefetch_related( + "filter_has_tags", + "filter_has_all_tags", + "filter_has_not_tags", + "filter_has_any_document_types", + "filter_has_not_document_types", + "filter_has_any_correspondents", + "filter_has_not_correspondents", + "filter_has_any_storage_paths", + "filter_has_not_storage_paths", + ) + ) + trigger_matched = True - if workflow.triggers.filter(type=trigger_type).count() == 0: + if not triggers_queryset.exists(): trigger_matched = False logger.info(f"Document did not match {workflow}") logger.debug(f"No matching triggers with type {trigger_type} found") else: - for trigger in workflow.triggers.filter(type=trigger_type): + for trigger in triggers_queryset: if trigger_type == WorkflowTrigger.WorkflowTriggerType.CONSUMPTION: trigger_matched, reason = consumable_document_matches_workflow( document, diff --git a/src/documents/migrations/0001_initial.py b/src/documents/migrations/0001_initial.py index 89c9e29df..d68a5934b 100644 --- a/src/documents/migrations/0001_initial.py +++ b/src/documents/migrations/0001_initial.py @@ -1,5 +1,13 @@ -# Generated by Django 1.9 on 2015-12-20 19:10 +# Generated by Django 5.2.7 on 2026-01-15 22:08 +import datetime + +import django.core.validators +import django.db.models.deletion +import django.db.models.functions.comparison +import django.db.models.functions.text +import django.utils.timezone +import multiselectfield.db.fields from django.conf import settings from django.db import migrations from django.db import models @@ -8,9 +16,554 @@ from django.db import models class Migration(migrations.Migration): initial = True - dependencies = [] + dependencies = [ + ("auth", "0012_alter_user_first_name_max_length"), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] operations = [ + migrations.CreateModel( + name="WorkflowActionEmail", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "subject", + models.CharField( + help_text="The subject of the email, can include some placeholders, see documentation.", + max_length=256, + verbose_name="email subject", + ), + ), + ( + "body", + models.TextField( + help_text="The body (message) of the email, can include some placeholders, see documentation.", + verbose_name="email body", + ), + ), + ( + "to", + models.TextField( + help_text="The destination email addresses, comma separated.", + verbose_name="emails to", + ), + ), + ( + "include_document", + models.BooleanField( + default=False, + verbose_name="include document in email", + ), + ), + ], + ), + migrations.CreateModel( + name="WorkflowActionWebhook", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "url", + models.CharField( + help_text="The destination URL for the notification.", + max_length=256, + verbose_name="webhook url", + ), + ), + ( + "use_params", + models.BooleanField(default=True, verbose_name="use parameters"), + ), + ( + "as_json", + models.BooleanField(default=False, verbose_name="send as JSON"), + ), + ( + "params", + models.JSONField( + blank=True, + help_text="The parameters to send with the webhook URL if body not used.", + null=True, + verbose_name="webhook parameters", + ), + ), + ( + "body", + models.TextField( + blank=True, + help_text="The body to send with the webhook URL if parameters not used.", + null=True, + verbose_name="webhook body", + ), + ), + ( + "headers", + models.JSONField( + blank=True, + help_text="The headers to send with the webhook URL.", + null=True, + verbose_name="webhook headers", + ), + ), + ( + "include_document", + models.BooleanField( + default=False, + verbose_name="include document in webhook", + ), + ), + ], + ), + migrations.CreateModel( + name="Correspondent", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=128, verbose_name="name")), + ( + "match", + models.CharField(blank=True, max_length=256, verbose_name="match"), + ), + ( + "matching_algorithm", + models.PositiveIntegerField( + choices=[ + (0, "None"), + (1, "Any word"), + (2, "All words"), + (3, "Exact match"), + (4, "Regular expression"), + (5, "Fuzzy word"), + (6, "Automatic"), + ], + default=1, + verbose_name="matching algorithm", + ), + ), + ( + "is_insensitive", + models.BooleanField(default=True, verbose_name="is insensitive"), + ), + ( + "owner", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + verbose_name="owner", + ), + ), + ], + options={ + "verbose_name": "correspondent", + "verbose_name_plural": "correspondents", + "ordering": ("name",), + "abstract": False, + }, + ), + migrations.CreateModel( + name="CustomField", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + models.DateTimeField( + db_index=True, + default=django.utils.timezone.now, + editable=False, + verbose_name="created", + ), + ), + ("name", models.CharField(max_length=128)), + ( + "data_type", + models.CharField( + choices=[ + ("string", "String"), + ("url", "URL"), + ("date", "Date"), + ("boolean", "Boolean"), + ("integer", "Integer"), + ("float", "Float"), + ("monetary", "Monetary"), + ("documentlink", "Document Link"), + ("select", "Select"), + ("longtext", "Long Text"), + ], + editable=False, + max_length=50, + verbose_name="data type", + ), + ), + ( + "extra_data", + models.JSONField( + blank=True, + help_text="Extra data for the custom field, such as select options", + null=True, + verbose_name="extra data", + ), + ), + ], + options={ + "verbose_name": "custom field", + "verbose_name_plural": "custom fields", + "ordering": ("created",), + "constraints": [ + models.UniqueConstraint( + fields=("name",), + name="documents_customfield_unique_name", + ), + ], + }, + ), + migrations.CreateModel( + name="DocumentType", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=128, verbose_name="name")), + ( + "match", + models.CharField(blank=True, max_length=256, verbose_name="match"), + ), + ( + "matching_algorithm", + models.PositiveIntegerField( + choices=[ + (0, "None"), + (1, "Any word"), + (2, "All words"), + (3, "Exact match"), + (4, "Regular expression"), + (5, "Fuzzy word"), + (6, "Automatic"), + ], + default=1, + verbose_name="matching algorithm", + ), + ), + ( + "is_insensitive", + models.BooleanField(default=True, verbose_name="is insensitive"), + ), + ( + "owner", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + verbose_name="owner", + ), + ), + ], + options={ + "verbose_name": "document type", + "verbose_name_plural": "document types", + "ordering": ("name",), + "abstract": False, + }, + ), + migrations.CreateModel( + name="StoragePath", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=128, verbose_name="name")), + ( + "match", + models.CharField(blank=True, max_length=256, verbose_name="match"), + ), + ( + "matching_algorithm", + models.PositiveIntegerField( + choices=[ + (0, "None"), + (1, "Any word"), + (2, "All words"), + (3, "Exact match"), + (4, "Regular expression"), + (5, "Fuzzy word"), + (6, "Automatic"), + ], + default=1, + verbose_name="matching algorithm", + ), + ), + ( + "is_insensitive", + models.BooleanField(default=True, verbose_name="is insensitive"), + ), + ("path", models.TextField(verbose_name="path")), + ( + "owner", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + verbose_name="owner", + ), + ), + ], + options={ + "verbose_name": "storage path", + "verbose_name_plural": "storage paths", + "ordering": ("name",), + "abstract": False, + }, + ), + migrations.CreateModel( + name="Tag", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "tn_ancestors_pks", + models.TextField( + blank=True, + default="", + editable=False, + verbose_name="Ancestors pks", + ), + ), + ( + "tn_ancestors_count", + models.PositiveIntegerField( + default=0, + editable=False, + verbose_name="Ancestors count", + ), + ), + ( + "tn_children_pks", + models.TextField( + blank=True, + default="", + editable=False, + verbose_name="Children pks", + ), + ), + ( + "tn_children_count", + models.PositiveIntegerField( + default=0, + editable=False, + verbose_name="Children count", + ), + ), + ( + "tn_depth", + models.PositiveIntegerField( + default=0, + editable=False, + validators=[ + django.core.validators.MinValueValidator(0), + django.core.validators.MaxValueValidator(10), + ], + verbose_name="Depth", + ), + ), + ( + "tn_descendants_pks", + models.TextField( + blank=True, + default="", + editable=False, + verbose_name="Descendants pks", + ), + ), + ( + "tn_descendants_count", + models.PositiveIntegerField( + default=0, + editable=False, + verbose_name="Descendants count", + ), + ), + ( + "tn_index", + models.PositiveIntegerField( + default=0, + editable=False, + verbose_name="Index", + ), + ), + ( + "tn_level", + models.PositiveIntegerField( + default=1, + editable=False, + validators=[ + django.core.validators.MinValueValidator(1), + django.core.validators.MaxValueValidator(10), + ], + verbose_name="Level", + ), + ), + ( + "tn_priority", + models.PositiveIntegerField( + default=0, + validators=[ + django.core.validators.MinValueValidator(0), + django.core.validators.MaxValueValidator(9999999999), + ], + verbose_name="Priority", + ), + ), + ( + "tn_order", + models.PositiveIntegerField( + default=0, + editable=False, + verbose_name="Order", + ), + ), + ( + "tn_siblings_pks", + models.TextField( + blank=True, + default="", + editable=False, + verbose_name="Siblings pks", + ), + ), + ( + "tn_siblings_count", + models.PositiveIntegerField( + default=0, + editable=False, + verbose_name="Siblings count", + ), + ), + ("name", models.CharField(max_length=128, verbose_name="name")), + ( + "match", + models.CharField(blank=True, max_length=256, verbose_name="match"), + ), + ( + "matching_algorithm", + models.PositiveIntegerField( + choices=[ + (0, "None"), + (1, "Any word"), + (2, "All words"), + (3, "Exact match"), + (4, "Regular expression"), + (5, "Fuzzy word"), + (6, "Automatic"), + ], + default=1, + verbose_name="matching algorithm", + ), + ), + ( + "is_insensitive", + models.BooleanField(default=True, verbose_name="is insensitive"), + ), + ( + "color", + models.CharField( + default="#a6cee3", + max_length=7, + verbose_name="color", + ), + ), + ( + "is_inbox_tag", + models.BooleanField( + default=False, + help_text="Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags.", + verbose_name="is inbox tag", + ), + ), + ( + "owner", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + verbose_name="owner", + ), + ), + ( + "tn_parent", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="tn_children", + to="documents.tag", + verbose_name="Parent", + ), + ), + ], + options={ + "verbose_name": "tag", + "verbose_name_plural": "tags", + "ordering": ("name",), + "abstract": False, + }, + ), migrations.CreateModel( name="Document", fields=[ @@ -23,18 +576,1397 @@ class Migration(migrations.Migration): verbose_name="ID", ), ), - ("sender", models.CharField(blank=True, db_index=True, max_length=128)), - ("title", models.CharField(blank=True, db_index=True, max_length=128)), + ("deleted_at", models.DateTimeField(blank=True, null=True)), + ("restored_at", models.DateTimeField(blank=True, null=True)), + ("transaction_id", models.UUIDField(blank=True, null=True)), + ( + "title", + models.CharField( + blank=True, + db_index=True, + max_length=128, + verbose_name="title", + ), + ), ( "content", models.TextField( - db_index=( - "mysql" not in settings.DATABASES["default"]["ENGINE"] + blank=True, + help_text="The raw, text-only data of the document. This field is primarily used for searching.", + verbose_name="content", + ), + ), + ( + "mime_type", + models.CharField( + editable=False, + max_length=256, + verbose_name="mime type", + ), + ), + ( + "checksum", + models.CharField( + editable=False, + help_text="The checksum of the original document.", + max_length=32, + unique=True, + verbose_name="checksum", + ), + ), + ( + "archive_checksum", + models.CharField( + blank=True, + editable=False, + help_text="The checksum of the archived document.", + max_length=32, + null=True, + verbose_name="archive checksum", + ), + ), + ( + "page_count", + models.PositiveIntegerField( + help_text="The number of pages of the document.", + null=True, + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="page count", + ), + ), + ( + "created", + models.DateField( + db_index=True, + default=datetime.date.today, + verbose_name="created", + ), + ), + ( + "modified", + models.DateTimeField( + auto_now=True, + db_index=True, + verbose_name="modified", + ), + ), + ( + "storage_type", + models.CharField( + choices=[ + ("unencrypted", "Unencrypted"), + ("gpg", "Encrypted with GNU Privacy Guard"), + ], + default="unencrypted", + editable=False, + max_length=11, + verbose_name="storage type", + ), + ), + ( + "added", + models.DateTimeField( + db_index=True, + default=django.utils.timezone.now, + editable=False, + verbose_name="added", + ), + ), + ( + "filename", + models.FilePathField( + default=None, + editable=False, + help_text="Current filename in storage", + max_length=1024, + null=True, + unique=True, + verbose_name="filename", + ), + ), + ( + "archive_filename", + models.FilePathField( + default=None, + editable=False, + help_text="Current archive filename in storage", + max_length=1024, + null=True, + unique=True, + verbose_name="archive filename", + ), + ), + ( + "original_filename", + models.CharField( + default=None, + editable=False, + help_text="The original name of the file when it was uploaded", + max_length=1024, + null=True, + verbose_name="original filename", + ), + ), + ( + "archive_serial_number", + models.PositiveIntegerField( + blank=True, + db_index=True, + help_text="The position of this document in your physical document archive.", + null=True, + unique=True, + validators=[ + django.core.validators.MaxValueValidator(4294967295), + django.core.validators.MinValueValidator(0), + ], + verbose_name="archive serial number", + ), + ), + ( + "correspondent", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="documents", + to="documents.correspondent", + verbose_name="correspondent", + ), + ), + ( + "owner", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + verbose_name="owner", + ), + ), + ( + "document_type", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="documents", + to="documents.documenttype", + verbose_name="document type", + ), + ), + ( + "storage_path", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="documents", + to="documents.storagepath", + verbose_name="storage path", + ), + ), + ( + "tags", + models.ManyToManyField( + blank=True, + related_name="documents", + to="documents.tag", + verbose_name="tags", + ), + ), + ], + options={ + "verbose_name": "document", + "verbose_name_plural": "documents", + "ordering": ("-created",), + }, + ), + migrations.CreateModel( + name="CustomFieldInstance", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("deleted_at", models.DateTimeField(blank=True, null=True)), + ("restored_at", models.DateTimeField(blank=True, null=True)), + ("transaction_id", models.UUIDField(blank=True, null=True)), + ( + "created", + models.DateTimeField( + db_index=True, + default=django.utils.timezone.now, + editable=False, + verbose_name="created", + ), + ), + ("value_text", models.CharField(max_length=128, null=True)), + ("value_bool", models.BooleanField(null=True)), + ("value_url", models.URLField(null=True)), + ("value_date", models.DateField(null=True)), + ("value_int", models.IntegerField(null=True)), + ("value_float", models.FloatField(null=True)), + ("value_monetary", models.CharField(max_length=128, null=True)), + ( + "value_monetary_amount", + models.GeneratedField( + db_persist=True, + expression=models.Case( + models.When( + then=django.db.models.functions.comparison.Cast( + django.db.models.functions.text.Substr( + "value_monetary", + 1, + ), + output_field=models.DecimalField( + decimal_places=2, + max_digits=65, + ), + ), + value_monetary__regex="^\\d+", + ), + default=django.db.models.functions.comparison.Cast( + django.db.models.functions.text.Substr( + "value_monetary", + 4, + ), + output_field=models.DecimalField( + decimal_places=2, + max_digits=65, + ), + ), + output_field=models.DecimalField( + decimal_places=2, + max_digits=65, + ), + ), + output_field=models.DecimalField( + decimal_places=2, + max_digits=65, ), ), ), - ("created", models.DateTimeField(auto_now_add=True)), - ("modified", models.DateTimeField(auto_now=True)), + ("value_document_ids", models.JSONField(null=True)), + ("value_select", models.CharField(max_length=16, null=True)), + ("value_long_text", models.TextField(null=True)), + ( + "field", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="fields", + to="documents.customfield", + ), + ), + ( + "document", + models.ForeignKey( + editable=False, + on_delete=django.db.models.deletion.CASCADE, + related_name="custom_fields", + to="documents.document", + ), + ), + ], + options={ + "verbose_name": "custom field instance", + "verbose_name_plural": "custom field instances", + "ordering": ("created",), + }, + ), + migrations.CreateModel( + name="Note", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("deleted_at", models.DateTimeField(blank=True, null=True)), + ("restored_at", models.DateTimeField(blank=True, null=True)), + ("transaction_id", models.UUIDField(blank=True, null=True)), + ( + "note", + models.TextField( + blank=True, + help_text="Note for the document", + verbose_name="content", + ), + ), + ( + "created", + models.DateTimeField( + db_index=True, + default=django.utils.timezone.now, + verbose_name="created", + ), + ), + ( + "document", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="notes", + to="documents.document", + verbose_name="document", + ), + ), + ( + "user", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="notes", + to=settings.AUTH_USER_MODEL, + verbose_name="user", + ), + ), + ], + options={ + "verbose_name": "note", + "verbose_name_plural": "notes", + "ordering": ("created",), + }, + ), + migrations.CreateModel( + name="PaperlessTask", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "task_id", + models.CharField( + help_text="Celery ID for the Task that was run", + max_length=255, + unique=True, + verbose_name="Task ID", + ), + ), + ( + "acknowledged", + models.BooleanField( + default=False, + help_text="If the task is acknowledged via the frontend or API", + verbose_name="Acknowledged", + ), + ), + ( + "task_file_name", + models.CharField( + help_text="Name of the file which the Task was run for", + max_length=255, + null=True, + verbose_name="Task Filename", + ), + ), + ( + "task_name", + models.CharField( + choices=[ + ("consume_file", "Consume File"), + ("train_classifier", "Train Classifier"), + ("check_sanity", "Check Sanity"), + ("index_optimize", "Index Optimize"), + ("llmindex_update", "LLM Index Update"), + ], + help_text="Name of the task that was run", + max_length=255, + null=True, + verbose_name="Task Name", + ), + ), + ( + "status", + models.CharField( + choices=[ + ("FAILURE", "FAILURE"), + ("PENDING", "PENDING"), + ("RECEIVED", "RECEIVED"), + ("RETRY", "RETRY"), + ("REVOKED", "REVOKED"), + ("STARTED", "STARTED"), + ("SUCCESS", "SUCCESS"), + ], + default="PENDING", + help_text="Current state of the task being run", + max_length=30, + verbose_name="Task State", + ), + ), + ( + "date_created", + models.DateTimeField( + default=django.utils.timezone.now, + help_text="Datetime field when the task result was created in UTC", + null=True, + verbose_name="Created DateTime", + ), + ), + ( + "date_started", + models.DateTimeField( + default=None, + help_text="Datetime field when the task was started in UTC", + null=True, + verbose_name="Started DateTime", + ), + ), + ( + "date_done", + models.DateTimeField( + default=None, + help_text="Datetime field when the task was completed in UTC", + null=True, + verbose_name="Completed DateTime", + ), + ), + ( + "result", + models.TextField( + default=None, + help_text="The data returned by the task", + null=True, + verbose_name="Result Data", + ), + ), + ( + "type", + models.CharField( + choices=[ + ("auto_task", "Auto Task"), + ("scheduled_task", "Scheduled Task"), + ("manual_task", "Manual Task"), + ], + default="auto_task", + help_text="The type of task that was run", + max_length=30, + verbose_name="Task Type", + ), + ), + ( + "owner", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + verbose_name="owner", + ), + ), + ], + options={ + "abstract": False, + }, + ), + migrations.CreateModel( + name="SavedView", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=128, verbose_name="name")), + ( + "show_on_dashboard", + models.BooleanField(verbose_name="show on dashboard"), + ), + ( + "show_in_sidebar", + models.BooleanField(verbose_name="show in sidebar"), + ), + ( + "sort_field", + models.CharField( + blank=True, + max_length=128, + null=True, + verbose_name="sort field", + ), + ), + ( + "sort_reverse", + models.BooleanField(default=False, verbose_name="sort reverse"), + ), + ( + "page_size", + models.PositiveIntegerField( + blank=True, + null=True, + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="View page size", + ), + ), + ( + "display_mode", + models.CharField( + blank=True, + choices=[ + ("table", "Table"), + ("smallCards", "Small Cards"), + ("largeCards", "Large Cards"), + ], + max_length=128, + null=True, + verbose_name="View display mode", + ), + ), + ( + "display_fields", + models.JSONField( + blank=True, + null=True, + verbose_name="Document display fields", + ), + ), + ( + "owner", + models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + verbose_name="owner", + ), + ), + ], + options={ + "verbose_name": "saved view", + "verbose_name_plural": "saved views", + "ordering": ("name",), + }, + ), + migrations.CreateModel( + name="SavedViewFilterRule", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "rule_type", + models.PositiveIntegerField( + choices=[ + (0, "title contains"), + (1, "content contains"), + (2, "ASN is"), + (3, "correspondent is"), + (4, "document type is"), + (5, "is in inbox"), + (6, "has tag"), + (7, "has any tag"), + (8, "created before"), + (9, "created after"), + (10, "created year is"), + (11, "created month is"), + (12, "created day is"), + (13, "added before"), + (14, "added after"), + (15, "modified before"), + (16, "modified after"), + (17, "does not have tag"), + (18, "does not have ASN"), + (19, "title or content contains"), + (20, "fulltext query"), + (21, "more like this"), + (22, "has tags in"), + (23, "ASN greater than"), + (24, "ASN less than"), + (25, "storage path is"), + (26, "has correspondent in"), + (27, "does not have correspondent in"), + (28, "has document type in"), + (29, "does not have document type in"), + (30, "has storage path in"), + (31, "does not have storage path in"), + (32, "owner is"), + (33, "has owner in"), + (34, "does not have owner"), + (35, "does not have owner in"), + (36, "has custom field value"), + (37, "is shared by me"), + (38, "has custom fields"), + (39, "has custom field in"), + (40, "does not have custom field in"), + (41, "does not have custom field"), + (42, "custom fields query"), + (43, "created to"), + (44, "created from"), + (45, "added to"), + (46, "added from"), + (47, "mime type is"), + ], + verbose_name="rule type", + ), + ), + ( + "value", + models.CharField( + blank=True, + max_length=255, + null=True, + verbose_name="value", + ), + ), + ( + "saved_view", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="filter_rules", + to="documents.savedview", + verbose_name="saved view", + ), + ), + ], + options={ + "verbose_name": "filter rule", + "verbose_name_plural": "filter rules", + }, + ), + migrations.CreateModel( + name="ShareLink", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("deleted_at", models.DateTimeField(blank=True, null=True)), + ("restored_at", models.DateTimeField(blank=True, null=True)), + ("transaction_id", models.UUIDField(blank=True, null=True)), + ( + "created", + models.DateTimeField( + blank=True, + db_index=True, + default=django.utils.timezone.now, + editable=False, + verbose_name="created", + ), + ), + ( + "expiration", + models.DateTimeField( + blank=True, + db_index=True, + null=True, + verbose_name="expiration", + ), + ), + ( + "slug", + models.SlugField( + blank=True, + editable=False, + unique=True, + verbose_name="slug", + ), + ), + ( + "file_version", + models.CharField( + choices=[("archive", "Archive"), ("original", "Original")], + default="archive", + max_length=50, + ), + ), + ( + "document", + models.ForeignKey( + blank=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="share_links", + to="documents.document", + verbose_name="document", + ), + ), + ( + "owner", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="share_links", + to=settings.AUTH_USER_MODEL, + verbose_name="owner", + ), + ), + ], + options={ + "verbose_name": "share link", + "verbose_name_plural": "share links", + "ordering": ("created",), + }, + ), + migrations.CreateModel( + name="UiSettings", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("settings", models.JSONField(null=True)), + ( + "user", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + related_name="ui_settings", + to=settings.AUTH_USER_MODEL, + ), + ), ], ), + migrations.CreateModel( + name="WorkflowAction", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "type", + models.PositiveIntegerField( + choices=[ + (1, "Assignment"), + (2, "Removal"), + (3, "Email"), + (4, "Webhook"), + ], + default=1, + verbose_name="Workflow Action Type", + ), + ), + ( + "assign_title", + models.TextField( + blank=True, + help_text="Assign a document title, must be a Jinja2 template, see documentation.", + null=True, + verbose_name="assign title", + ), + ), + ( + "assign_custom_fields_values", + models.JSONField( + blank=True, + default=dict, + help_text="Optional values to assign to the custom fields.", + null=True, + verbose_name="custom field values", + ), + ), + ( + "remove_all_tags", + models.BooleanField(default=False, verbose_name="remove all tags"), + ), + ( + "remove_all_document_types", + models.BooleanField( + default=False, + verbose_name="remove all document types", + ), + ), + ( + "remove_all_correspondents", + models.BooleanField( + default=False, + verbose_name="remove all correspondents", + ), + ), + ( + "remove_all_storage_paths", + models.BooleanField( + default=False, + verbose_name="remove all storage paths", + ), + ), + ( + "remove_all_owners", + models.BooleanField( + default=False, + verbose_name="remove all owners", + ), + ), + ( + "remove_all_permissions", + models.BooleanField( + default=False, + verbose_name="remove all permissions", + ), + ), + ( + "remove_all_custom_fields", + models.BooleanField( + default=False, + verbose_name="remove all custom fields", + ), + ), + ( + "assign_change_groups", + models.ManyToManyField( + blank=True, + related_name="+", + to="auth.group", + verbose_name="grant change permissions to these groups", + ), + ), + ( + "assign_change_users", + models.ManyToManyField( + blank=True, + related_name="+", + to=settings.AUTH_USER_MODEL, + verbose_name="grant change permissions to these users", + ), + ), + ( + "assign_correspondent", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="documents.correspondent", + verbose_name="assign this correspondent", + ), + ), + ( + "assign_custom_fields", + models.ManyToManyField( + blank=True, + related_name="+", + to="documents.customfield", + verbose_name="assign these custom fields", + ), + ), + ( + "assign_document_type", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="documents.documenttype", + verbose_name="assign this document type", + ), + ), + ( + "assign_owner", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to=settings.AUTH_USER_MODEL, + verbose_name="assign this owner", + ), + ), + ( + "assign_storage_path", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="documents.storagepath", + verbose_name="assign this storage path", + ), + ), + ( + "assign_tags", + models.ManyToManyField( + blank=True, + related_name="+", + to="documents.tag", + verbose_name="assign this tag", + ), + ), + ( + "assign_view_groups", + models.ManyToManyField( + blank=True, + related_name="+", + to="auth.group", + verbose_name="grant view permissions to these groups", + ), + ), + ( + "assign_view_users", + models.ManyToManyField( + blank=True, + related_name="+", + to=settings.AUTH_USER_MODEL, + verbose_name="grant view permissions to these users", + ), + ), + ( + "remove_change_groups", + models.ManyToManyField( + blank=True, + related_name="+", + to="auth.group", + verbose_name="remove change permissions for these groups", + ), + ), + ( + "remove_change_users", + models.ManyToManyField( + blank=True, + related_name="+", + to=settings.AUTH_USER_MODEL, + verbose_name="remove change permissions for these users", + ), + ), + ( + "remove_correspondents", + models.ManyToManyField( + blank=True, + related_name="+", + to="documents.correspondent", + verbose_name="remove these correspondent(s)", + ), + ), + ( + "remove_custom_fields", + models.ManyToManyField( + blank=True, + related_name="+", + to="documents.customfield", + verbose_name="remove these custom fields", + ), + ), + ( + "remove_document_types", + models.ManyToManyField( + blank=True, + related_name="+", + to="documents.documenttype", + verbose_name="remove these document type(s)", + ), + ), + ( + "remove_owners", + models.ManyToManyField( + blank=True, + related_name="+", + to=settings.AUTH_USER_MODEL, + verbose_name="remove these owner(s)", + ), + ), + ( + "remove_storage_paths", + models.ManyToManyField( + blank=True, + related_name="+", + to="documents.storagepath", + verbose_name="remove these storage path(s)", + ), + ), + ( + "remove_tags", + models.ManyToManyField( + blank=True, + related_name="+", + to="documents.tag", + verbose_name="remove these tag(s)", + ), + ), + ( + "remove_view_groups", + models.ManyToManyField( + blank=True, + related_name="+", + to="auth.group", + verbose_name="remove view permissions for these groups", + ), + ), + ( + "remove_view_users", + models.ManyToManyField( + blank=True, + related_name="+", + to=settings.AUTH_USER_MODEL, + verbose_name="remove view permissions for these users", + ), + ), + ( + "email", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="action", + to="documents.workflowactionemail", + verbose_name="email", + ), + ), + ( + "webhook", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="action", + to="documents.workflowactionwebhook", + verbose_name="webhook", + ), + ), + ], + options={ + "verbose_name": "workflow action", + "verbose_name_plural": "workflow actions", + }, + ), + migrations.CreateModel( + name="Workflow", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "name", + models.CharField(max_length=256, unique=True, verbose_name="name"), + ), + ("order", models.IntegerField(default=0, verbose_name="order")), + ("enabled", models.BooleanField(default=True, verbose_name="enabled")), + ( + "actions", + models.ManyToManyField( + related_name="workflows", + to="documents.workflowaction", + verbose_name="actions", + ), + ), + ], + ), + migrations.CreateModel( + name="WorkflowRun", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("deleted_at", models.DateTimeField(blank=True, null=True)), + ("restored_at", models.DateTimeField(blank=True, null=True)), + ("transaction_id", models.UUIDField(blank=True, null=True)), + ( + "type", + models.PositiveIntegerField( + choices=[ + (1, "Consumption Started"), + (2, "Document Added"), + (3, "Document Updated"), + (4, "Scheduled"), + ], + null=True, + verbose_name="workflow trigger type", + ), + ), + ( + "run_at", + models.DateTimeField( + db_index=True, + default=django.utils.timezone.now, + verbose_name="date run", + ), + ), + ( + "document", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="workflow_runs", + to="documents.document", + verbose_name="document", + ), + ), + ( + "workflow", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="runs", + to="documents.workflow", + verbose_name="workflow", + ), + ), + ], + options={ + "verbose_name": "workflow run", + "verbose_name_plural": "workflow runs", + }, + ), + migrations.CreateModel( + name="WorkflowTrigger", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "type", + models.PositiveIntegerField( + choices=[ + (1, "Consumption Started"), + (2, "Document Added"), + (3, "Document Updated"), + (4, "Scheduled"), + ], + default=1, + verbose_name="Workflow Trigger Type", + ), + ), + ( + "sources", + multiselectfield.db.fields.MultiSelectField( + choices=[ + (1, "Consume Folder"), + (2, "Api Upload"), + (3, "Mail Fetch"), + (4, "Web UI"), + ], + default="1,2,3,4", + max_length=7, + ), + ), + ( + "filter_path", + models.CharField( + blank=True, + help_text="Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive.", + max_length=256, + null=True, + verbose_name="filter path", + ), + ), + ( + "filter_filename", + models.CharField( + blank=True, + help_text="Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.", + max_length=256, + null=True, + verbose_name="filter filename", + ), + ), + ( + "match", + models.CharField(blank=True, max_length=256, verbose_name="match"), + ), + ( + "matching_algorithm", + models.PositiveIntegerField( + choices=[ + (0, "None"), + (1, "Any word"), + (2, "All words"), + (3, "Exact match"), + (4, "Regular expression"), + (5, "Fuzzy word"), + ], + default=0, + verbose_name="matching algorithm", + ), + ), + ( + "is_insensitive", + models.BooleanField(default=True, verbose_name="is insensitive"), + ), + ( + "filter_custom_field_query", + models.TextField( + blank=True, + help_text="JSON-encoded custom field query expression.", + null=True, + verbose_name="filter custom field query", + ), + ), + ( + "schedule_offset_days", + models.IntegerField( + default=0, + help_text="The number of days to offset the schedule trigger by.", + verbose_name="schedule offset days", + ), + ), + ( + "schedule_is_recurring", + models.BooleanField( + default=False, + help_text="If the schedule should be recurring.", + verbose_name="schedule is recurring", + ), + ), + ( + "schedule_recurring_interval_days", + models.PositiveIntegerField( + default=1, + help_text="The number of days between recurring schedule triggers.", + validators=[django.core.validators.MinValueValidator(1)], + verbose_name="schedule recurring delay in days", + ), + ), + ( + "schedule_date_field", + models.CharField( + choices=[ + ("added", "Added"), + ("created", "Created"), + ("modified", "Modified"), + ("custom_field", "Custom Field"), + ], + default="added", + help_text="The field to check for a schedule trigger.", + max_length=20, + verbose_name="schedule date field", + ), + ), + ( + "filter_has_all_tags", + models.ManyToManyField( + blank=True, + related_name="workflowtriggers_has_all", + to="documents.tag", + verbose_name="has all of these tag(s)", + ), + ), + ( + "filter_has_correspondent", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="documents.correspondent", + verbose_name="has this correspondent", + ), + ), + ( + "filter_has_document_type", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="documents.documenttype", + verbose_name="has this document type", + ), + ), + ( + "filter_has_not_correspondents", + models.ManyToManyField( + blank=True, + related_name="workflowtriggers_has_not_correspondent", + to="documents.correspondent", + verbose_name="does not have these correspondent(s)", + ), + ), + ( + "filter_has_not_document_types", + models.ManyToManyField( + blank=True, + related_name="workflowtriggers_has_not_document_type", + to="documents.documenttype", + verbose_name="does not have these document type(s)", + ), + ), + ( + "filter_has_not_storage_paths", + models.ManyToManyField( + blank=True, + related_name="workflowtriggers_has_not_storage_path", + to="documents.storagepath", + verbose_name="does not have these storage path(s)", + ), + ), + ( + "filter_has_not_tags", + models.ManyToManyField( + blank=True, + related_name="workflowtriggers_has_not", + to="documents.tag", + verbose_name="does not have these tag(s)", + ), + ), + ( + "filter_has_storage_path", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="documents.storagepath", + verbose_name="has this storage path", + ), + ), + ( + "filter_has_tags", + models.ManyToManyField( + blank=True, + to="documents.tag", + verbose_name="has these tag(s)", + ), + ), + ], + options={ + "verbose_name": "workflow trigger", + "verbose_name_plural": "workflow triggers", + }, + ), ] diff --git a/src/documents/migrations/0002_auto_20151226_1316.py b/src/documents/migrations/0002_auto_20151226_1316.py deleted file mode 100644 index ffd240902..000000000 --- a/src/documents/migrations/0002_auto_20151226_1316.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 1.9 on 2015-12-26 13:16 - -import django.utils.timezone -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0001_initial"), - ] - - operations = [ - migrations.AlterModelOptions( - name="document", - options={"ordering": ("sender", "title")}, - ), - migrations.AlterField( - model_name="document", - name="created", - field=models.DateTimeField( - default=django.utils.timezone.now, - editable=False, - ), - ), - ] diff --git a/src/documents/migrations/1033_alter_documenttype_options_alter_tag_options_and_more.py b/src/documents/migrations/0002_initial.py similarity index 61% rename from src/documents/migrations/1033_alter_documenttype_options_alter_tag_options_and_more.py rename to src/documents/migrations/0002_initial.py index 1368ac641..ba0e93da8 100644 --- a/src/documents/migrations/1033_alter_documenttype_options_alter_tag_options_and_more.py +++ b/src/documents/migrations/0002_initial.py @@ -1,50 +1,49 @@ -# Generated by Django 4.1.5 on 2023-03-04 22:33 +# Generated by Django 5.2.9 on 2026-01-20 18:46 +import django.db.models.deletion from django.db import migrations from django.db import models class Migration(migrations.Migration): + initial = True + dependencies = [ - ("documents", "1032_alter_correspondent_matching_algorithm_and_more"), + ("documents", "0001_initial"), + ("paperless_mail", "0001_initial"), ] operations = [ - migrations.AlterModelOptions( - name="documenttype", - options={ - "ordering": ("name",), - "verbose_name": "document type", - "verbose_name_plural": "document types", - }, + migrations.AddField( + model_name="workflowtrigger", + name="filter_mailrule", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="paperless_mail.mailrule", + verbose_name="filter documents from this mail rule", + ), ), - migrations.AlterModelOptions( - name="tag", - options={ - "ordering": ("name",), - "verbose_name": "tag", - "verbose_name_plural": "tags", - }, + migrations.AddField( + model_name="workflowtrigger", + name="schedule_date_custom_field", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="documents.customfield", + verbose_name="schedule date custom field", + ), ), - migrations.AlterField( - model_name="correspondent", - name="name", - field=models.CharField(max_length=128, verbose_name="name"), - ), - migrations.AlterField( - model_name="documenttype", - name="name", - field=models.CharField(max_length=128, verbose_name="name"), - ), - migrations.AlterField( - model_name="storagepath", - name="name", - field=models.CharField(max_length=128, verbose_name="name"), - ), - migrations.AlterField( - model_name="tag", - name="name", - field=models.CharField(max_length=128, verbose_name="name"), + migrations.AddField( + model_name="workflow", + name="triggers", + field=models.ManyToManyField( + related_name="workflows", + to="documents.workflowtrigger", + verbose_name="triggers", + ), ), migrations.AddConstraint( model_name="correspondent", @@ -61,6 +60,13 @@ class Migration(migrations.Migration): name="documents_correspondent_name_uniq", ), ), + migrations.AddConstraint( + model_name="customfieldinstance", + constraint=models.UniqueConstraint( + fields=("document", "field"), + name="documents_customfieldinstance_unique_document_field", + ), + ), migrations.AddConstraint( model_name="documenttype", constraint=models.UniqueConstraint( diff --git a/src/documents/migrations/0003_sender.py b/src/documents/migrations/0003_sender.py deleted file mode 100644 index dd194afdb..000000000 --- a/src/documents/migrations/0003_sender.py +++ /dev/null @@ -1,70 +0,0 @@ -# Generated by Django 1.9 on 2016-01-11 12:21 - -import django.db.models.deletion -from django.db import migrations -from django.db import models -from django.template.defaultfilters import slugify - -DOCUMENT_SENDER_MAP = {} - - -def move_sender_strings_to_sender_model(apps, schema_editor): - sender_model = apps.get_model("documents", "Sender") - document_model = apps.get_model("documents", "Document") - - # Create the sender and log the relationship with the document - for document in document_model.objects.all(): - if document.sender: - ( - DOCUMENT_SENDER_MAP[document.pk], - _, - ) = sender_model.objects.get_or_create( - name=document.sender, - defaults={"slug": slugify(document.sender)}, - ) - - -def realign_senders(apps, schema_editor): - document_model = apps.get_model("documents", "Document") - for pk, sender in DOCUMENT_SENDER_MAP.items(): - document_model.objects.filter(pk=pk).update(sender=sender) - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0002_auto_20151226_1316"), - ] - - operations = [ - migrations.CreateModel( - name="Sender", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=128, unique=True)), - ("slug", models.SlugField()), - ], - ), - migrations.RunPython(move_sender_strings_to_sender_model), - migrations.RemoveField( - model_name="document", - name="sender", - ), - migrations.AddField( - model_name="document", - name="sender", - field=models.ForeignKey( - blank=True, - on_delete=django.db.models.deletion.CASCADE, - to="documents.Sender", - ), - ), - migrations.RunPython(realign_senders), - ] diff --git a/src/paperless_mail/migrations/0004_mailrule_order.py b/src/documents/migrations/0003_workflowaction_order.py similarity index 51% rename from src/paperless_mail/migrations/0004_mailrule_order.py rename to src/documents/migrations/0003_workflowaction_order.py index 4ffc0a6e5..82bc49ba7 100644 --- a/src/paperless_mail/migrations/0004_mailrule_order.py +++ b/src/documents/migrations/0003_workflowaction_order.py @@ -1,4 +1,4 @@ -# Generated by Django 3.1.3 on 2020-11-21 21:51 +# Generated by Django 5.2.9 on 2026-01-20 20:06 from django.db import migrations from django.db import models @@ -6,13 +6,13 @@ from django.db import models class Migration(migrations.Migration): dependencies = [ - ("paperless_mail", "0003_auto_20201118_1940"), + ("documents", "0002_initial"), ] operations = [ migrations.AddField( - model_name="mailrule", + model_name="workflowaction", name="order", - field=models.IntegerField(default=0), + field=models.PositiveIntegerField(default=0, verbose_name="order"), ), ] diff --git a/src/documents/migrations/0004_auto_20160114_1844.py b/src/documents/migrations/0004_auto_20160114_1844.py deleted file mode 100644 index 97bda420e..000000000 --- a/src/documents/migrations/0004_auto_20160114_1844.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 1.9 on 2016-01-14 18:44 - -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0003_sender"), - ] - - operations = [ - migrations.AlterField( - model_name="document", - name="sender", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="documents", - to="documents.Sender", - ), - ), - ] diff --git a/src/documents/migrations/0004_auto_20160114_1844_squashed_0011_auto_20160303_1929.py b/src/documents/migrations/0004_auto_20160114_1844_squashed_0011_auto_20160303_1929.py deleted file mode 100644 index 8d86cbbc1..000000000 --- a/src/documents/migrations/0004_auto_20160114_1844_squashed_0011_auto_20160303_1929.py +++ /dev/null @@ -1,178 +0,0 @@ -# Generated by Django 4.2.13 on 2024-06-28 17:52 - -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - replaces = [ - ("documents", "0004_auto_20160114_1844"), - ("documents", "0005_auto_20160123_0313"), - ("documents", "0006_auto_20160123_0430"), - ("documents", "0007_auto_20160126_2114"), - ("documents", "0008_document_file_type"), - ("documents", "0009_auto_20160214_0040"), - ("documents", "0010_log"), - ("documents", "0011_auto_20160303_1929"), - ] - - dependencies = [ - ("documents", "0003_sender"), - ] - - operations = [ - migrations.AlterField( - model_name="document", - name="sender", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="documents", - to="documents.sender", - ), - ), - migrations.AlterModelOptions( - name="sender", - options={"ordering": ("name",)}, - ), - migrations.CreateModel( - name="Tag", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=128, unique=True)), - ("slug", models.SlugField(blank=True)), - ( - "colour", - models.PositiveIntegerField( - choices=[ - (1, "#a6cee3"), - (2, "#1f78b4"), - (3, "#b2df8a"), - (4, "#33a02c"), - (5, "#fb9a99"), - (6, "#e31a1c"), - (7, "#fdbf6f"), - (8, "#ff7f00"), - (9, "#cab2d6"), - (10, "#6a3d9a"), - (11, "#b15928"), - (12, "#000000"), - (13, "#cccccc"), - ], - default=1, - ), - ), - ("match", models.CharField(blank=True, max_length=256)), - ( - "matching_algorithm", - models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. If you don\'t know what a regex is, you probably don\'t want this option.', - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.AlterField( - model_name="sender", - name="slug", - field=models.SlugField(blank=True), - ), - migrations.AddField( - model_name="document", - name="file_type", - field=models.CharField( - choices=[ - ("pdf", "PDF"), - ("png", "PNG"), - ("jpg", "JPG"), - ("gif", "GIF"), - ("tiff", "TIFF"), - ], - default="pdf", - editable=False, - max_length=4, - ), - preserve_default=False, - ), - migrations.AddField( - model_name="document", - name="tags", - field=models.ManyToManyField( - blank=True, - related_name="documents", - to="documents.tag", - ), - ), - migrations.CreateModel( - name="Log", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("group", models.UUIDField(blank=True)), - ("message", models.TextField()), - ( - "level", - models.PositiveIntegerField( - choices=[ - (10, "Debugging"), - (20, "Informational"), - (30, "Warning"), - (40, "Error"), - (50, "Critical"), - ], - default=20, - ), - ), - ( - "component", - models.PositiveIntegerField( - choices=[(1, "Consumer"), (2, "Mail Fetcher")], - ), - ), - ("created", models.DateTimeField(auto_now_add=True)), - ("modified", models.DateTimeField(auto_now=True)), - ], - options={ - "ordering": ("-modified",), - }, - ), - migrations.RenameModel( - old_name="Sender", - new_name="Correspondent", - ), - migrations.AlterModelOptions( - name="document", - options={"ordering": ("correspondent", "title")}, - ), - migrations.RenameField( - model_name="document", - old_name="sender", - new_name="correspondent", - ), - ] diff --git a/src/paperless_mail/migrations/0011_remove_mailrule_assign_tag.py b/src/documents/migrations/0004_remove_document_storage_type.py similarity index 50% rename from src/paperless_mail/migrations/0011_remove_mailrule_assign_tag.py rename to src/documents/migrations/0004_remove_document_storage_type.py index 16cec8710..e138d5d78 100644 --- a/src/paperless_mail/migrations/0011_remove_mailrule_assign_tag.py +++ b/src/documents/migrations/0004_remove_document_storage_type.py @@ -1,16 +1,16 @@ -# Generated by Django 3.2.12 on 2022-03-11 15:18 +# Generated by Django 5.2.9 on 2026-01-24 23:05 from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ("paperless_mail", "0010_auto_20220311_1602"), + ("documents", "0003_workflowaction_order"), ] operations = [ migrations.RemoveField( - model_name="mailrule", - name="assign_tag", + model_name="document", + name="storage_type", ), ] diff --git a/src/documents/migrations/0005_auto_20160123_0313.py b/src/documents/migrations/0005_auto_20160123_0313.py deleted file mode 100644 index b0ccc5825..000000000 --- a/src/documents/migrations/0005_auto_20160123_0313.py +++ /dev/null @@ -1,16 +0,0 @@ -# Generated by Django 1.9 on 2016-01-23 03:13 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0004_auto_20160114_1844"), - ] - - operations = [ - migrations.AlterModelOptions( - name="sender", - options={"ordering": ("name",)}, - ), - ] diff --git a/src/documents/migrations/0005_workflowtrigger_filter_has_any_correspondents_and_more.py b/src/documents/migrations/0005_workflowtrigger_filter_has_any_correspondents_and_more.py new file mode 100644 index 000000000..db5ef5754 --- /dev/null +++ b/src/documents/migrations/0005_workflowtrigger_filter_has_any_correspondents_and_more.py @@ -0,0 +1,43 @@ +# Generated by Django 5.2.7 on 2025-12-17 22:25 + +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + dependencies = [ + ("documents", "0004_remove_document_storage_type"), + ] + + operations = [ + migrations.AddField( + model_name="workflowtrigger", + name="filter_has_any_correspondents", + field=models.ManyToManyField( + blank=True, + related_name="workflowtriggers_has_any_correspondent", + to="documents.correspondent", + verbose_name="has one of these correspondents", + ), + ), + migrations.AddField( + model_name="workflowtrigger", + name="filter_has_any_document_types", + field=models.ManyToManyField( + blank=True, + related_name="workflowtriggers_has_any_document_type", + to="documents.documenttype", + verbose_name="has one of these document types", + ), + ), + migrations.AddField( + model_name="workflowtrigger", + name="filter_has_any_storage_paths", + field=models.ManyToManyField( + blank=True, + related_name="workflowtriggers_has_any_storage_path", + to="documents.storagepath", + verbose_name="has one of these storage paths", + ), + ), + ] diff --git a/src/documents/migrations/0006_alter_document_checksum_unique.py b/src/documents/migrations/0006_alter_document_checksum_unique.py new file mode 100644 index 000000000..f86799494 --- /dev/null +++ b/src/documents/migrations/0006_alter_document_checksum_unique.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.7 on 2026-01-14 17:45 + +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + dependencies = [ + ("documents", "0005_workflowtrigger_filter_has_any_correspondents_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="document", + name="checksum", + field=models.CharField( + editable=False, + max_length=32, + verbose_name="checksum", + help_text="The checksum of the original document.", + ), + ), + ] diff --git a/src/documents/migrations/0006_auto_20160123_0430.py b/src/documents/migrations/0006_auto_20160123_0430.py deleted file mode 100644 index 315b9646f..000000000 --- a/src/documents/migrations/0006_auto_20160123_0430.py +++ /dev/null @@ -1,64 +0,0 @@ -# Generated by Django 1.9 on 2016-01-23 04:30 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0005_auto_20160123_0313"), - ] - - operations = [ - migrations.CreateModel( - name="Tag", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=128, unique=True)), - ("slug", models.SlugField(blank=True)), - ( - "colour", - models.PositiveIntegerField( - choices=[ - (1, "#a6cee3"), - (2, "#1f78b4"), - (3, "#b2df8a"), - (4, "#33a02c"), - (5, "#fb9a99"), - (6, "#e31a1c"), - (7, "#fdbf6f"), - (8, "#ff7f00"), - (9, "#cab2d6"), - (10, "#6a3d9a"), - (11, "#ffff99"), - (12, "#b15928"), - (13, "#000000"), - (14, "#cccccc"), - ], - default=1, - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.AlterField( - model_name="sender", - name="slug", - field=models.SlugField(blank=True), - ), - migrations.AddField( - model_name="document", - name="tags", - field=models.ManyToManyField(related_name="documents", to="documents.Tag"), - ), - ] diff --git a/src/documents/migrations/0007_auto_20160126_2114.py b/src/documents/migrations/0007_auto_20160126_2114.py deleted file mode 100644 index 04ccc0589..000000000 --- a/src/documents/migrations/0007_auto_20160126_2114.py +++ /dev/null @@ -1,55 +0,0 @@ -# Generated by Django 1.9 on 2016-01-26 21:14 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0006_auto_20160123_0430"), - ] - - operations = [ - migrations.AddField( - model_name="tag", - name="match", - field=models.CharField(blank=True, max_length=256), - ), - migrations.AddField( - model_name="tag", - name="matching_algorithm", - field=models.PositiveIntegerField( - blank=True, - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - ], - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. If you don\'t know what a regex is, you probably don\'t want this option.', - null=True, - ), - ), - migrations.AlterField( - model_name="tag", - name="colour", - field=models.PositiveIntegerField( - choices=[ - (1, "#a6cee3"), - (2, "#1f78b4"), - (3, "#b2df8a"), - (4, "#33a02c"), - (5, "#fb9a99"), - (6, "#e31a1c"), - (7, "#fdbf6f"), - (8, "#ff7f00"), - (9, "#cab2d6"), - (10, "#6a3d9a"), - (11, "#b15928"), - (12, "#000000"), - (13, "#cccccc"), - ], - default=1, - ), - ), - ] diff --git a/src/documents/migrations/0007_document_content_length.py b/src/documents/migrations/0007_document_content_length.py new file mode 100644 index 000000000..c294afca5 --- /dev/null +++ b/src/documents/migrations/0007_document_content_length.py @@ -0,0 +1,25 @@ +# Generated by Django 5.2.6 on 2026-01-24 07:33 + +import django.db.models.functions.text +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + dependencies = [ + ("documents", "0006_alter_document_checksum_unique"), + ] + + operations = [ + migrations.AddField( + model_name="document", + name="content_length", + field=models.GeneratedField( + db_persist=True, + expression=django.db.models.functions.text.Length("content"), + null=False, + help_text="Length of the content field in characters. Automatically maintained by the database for faster statistics computation.", + output_field=models.PositiveIntegerField(default=0), + ), + ), + ] diff --git a/src/documents/migrations/0008_document_file_type.py b/src/documents/migrations/0008_document_file_type.py deleted file mode 100644 index 7787f8622..000000000 --- a/src/documents/migrations/0008_document_file_type.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 1.9 on 2016-01-29 22:58 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0007_auto_20160126_2114"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="file_type", - field=models.CharField( - choices=[ - ("pdf", "PDF"), - ("png", "PNG"), - ("jpg", "JPG"), - ("gif", "GIF"), - ("tiff", "TIFF"), - ], - default="pdf", - editable=False, - max_length=4, - ), - preserve_default=False, - ), - migrations.AlterField( - model_name="document", - name="tags", - field=models.ManyToManyField( - blank=True, - related_name="documents", - to="documents.Tag", - ), - ), - ] diff --git a/src/documents/migrations/0008_sharelinkbundle.py b/src/documents/migrations/0008_sharelinkbundle.py new file mode 100644 index 000000000..35ef64c75 --- /dev/null +++ b/src/documents/migrations/0008_sharelinkbundle.py @@ -0,0 +1,177 @@ +# Generated by Django 5.2.9 on 2026-01-27 01:09 + +import django.db.models.deletion +import django.db.models.functions.text +import django.utils.timezone +from django.conf import settings +from django.contrib.auth.management import create_permissions +from django.contrib.auth.models import Group +from django.contrib.auth.models import Permission +from django.contrib.auth.models import User +from django.db import migrations +from django.db import models + + +def grant_share_link_bundle_permissions(apps, schema_editor): + # Ensure newly introduced permissions are created for all apps + for app_config in apps.get_app_configs(): + app_config.models_module = True + create_permissions(app_config, apps=apps, verbosity=0) + app_config.models_module = None + + add_document_perm = Permission.objects.filter(codename="add_document").first() + share_bundle_permissions = Permission.objects.filter( + codename__contains="sharelinkbundle", + ) + + users = User.objects.filter(user_permissions=add_document_perm).distinct() + for user in users: + user.user_permissions.add(*share_bundle_permissions) + + groups = Group.objects.filter(permissions=add_document_perm).distinct() + for group in groups: + group.permissions.add(*share_bundle_permissions) + + +def revoke_share_link_bundle_permissions(apps, schema_editor): + share_bundle_permissions = Permission.objects.filter( + codename__contains="sharelinkbundle", + ) + for user in User.objects.all(): + user.user_permissions.remove(*share_bundle_permissions) + for group in Group.objects.all(): + group.permissions.remove(*share_bundle_permissions) + + +class Migration(migrations.Migration): + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("documents", "0007_document_content_length"), + ] + + operations = [ + migrations.CreateModel( + name="ShareLinkBundle", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + models.DateTimeField( + blank=True, + db_index=True, + default=django.utils.timezone.now, + editable=False, + verbose_name="created", + ), + ), + ( + "expiration", + models.DateTimeField( + blank=True, + db_index=True, + null=True, + verbose_name="expiration", + ), + ), + ( + "slug", + models.SlugField( + blank=True, + editable=False, + unique=True, + verbose_name="slug", + ), + ), + ( + "file_version", + models.CharField( + choices=[("archive", "Archive"), ("original", "Original")], + default="archive", + max_length=50, + ), + ), + ( + "status", + models.CharField( + choices=[ + ("pending", "Pending"), + ("processing", "Processing"), + ("ready", "Ready"), + ("failed", "Failed"), + ], + default="pending", + max_length=50, + ), + ), + ( + "size_bytes", + models.PositiveIntegerField( + blank=True, + null=True, + verbose_name="size (bytes)", + ), + ), + ( + "last_error", + models.JSONField( + blank=True, + null=True, + default=None, + verbose_name="last error", + ), + ), + ( + "file_path", + models.CharField( + blank=True, + max_length=512, + verbose_name="file path", + ), + ), + ( + "built_at", + models.DateTimeField( + blank=True, + null=True, + verbose_name="built at", + ), + ), + ( + "documents", + models.ManyToManyField( + related_name="share_link_bundles", + to="documents.document", + verbose_name="documents", + ), + ), + ( + "owner", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="share_link_bundles", + to=settings.AUTH_USER_MODEL, + verbose_name="owner", + ), + ), + ], + options={ + "ordering": ("-created",), + "verbose_name": "share link bundle", + "verbose_name_plural": "share link bundles", + }, + ), + migrations.RunPython( + grant_share_link_bundle_permissions, + reverse_code=revoke_share_link_bundle_permissions, + ), + ] diff --git a/src/documents/migrations/0009_auto_20160214_0040.py b/src/documents/migrations/0009_auto_20160214_0040.py deleted file mode 100644 index 5c95e1035..000000000 --- a/src/documents/migrations/0009_auto_20160214_0040.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 1.9 on 2016-02-14 00:40 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0008_document_file_type"), - ] - - operations = [ - migrations.AlterField( - model_name="tag", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. If you don\'t know what a regex is, you probably don\'t want this option.', - ), - ), - ] diff --git a/src/documents/migrations/0009_workflowaction_passwords_alter_workflowaction_type.py b/src/documents/migrations/0009_workflowaction_passwords_alter_workflowaction_type.py new file mode 100644 index 000000000..ae3fef79f --- /dev/null +++ b/src/documents/migrations/0009_workflowaction_passwords_alter_workflowaction_type.py @@ -0,0 +1,38 @@ +# Generated by Django 5.2.7 on 2025-12-29 03:56 + +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + dependencies = [ + ("documents", "0008_sharelinkbundle"), + ] + + operations = [ + migrations.AddField( + model_name="workflowaction", + name="passwords", + field=models.JSONField( + blank=True, + help_text="Passwords to try when removing PDF protection. Separate with commas or new lines.", + null=True, + verbose_name="passwords", + ), + ), + migrations.AlterField( + model_name="workflowaction", + name="type", + field=models.PositiveIntegerField( + choices=[ + (1, "Assignment"), + (2, "Removal"), + (3, "Email"), + (4, "Webhook"), + (5, "Password removal"), + ], + default=1, + verbose_name="Workflow Action Type", + ), + ), + ] diff --git a/src/documents/migrations/0010_alter_document_content_length.py b/src/documents/migrations/0010_alter_document_content_length.py new file mode 100644 index 000000000..1e584cda9 --- /dev/null +++ b/src/documents/migrations/0010_alter_document_content_length.py @@ -0,0 +1,25 @@ +# Generated by Django 5.2.11 on 2026-02-07 19:06 + +import django.db.models.functions.text +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + dependencies = [ + ("documents", "0009_workflowaction_passwords_alter_workflowaction_type"), + ] + + operations = [ + migrations.AlterField( + model_name="document", + name="content_length", + field=models.GeneratedField( + db_persist=True, + expression=django.db.models.functions.text.Length("content"), + help_text="Length of the content field in characters. Automatically maintained by the database for faster statistics computation.", + output_field=models.PositiveIntegerField(default=0), + serialize=False, + ), + ), + ] diff --git a/src/documents/migrations/0010_log.py b/src/documents/migrations/0010_log.py deleted file mode 100644 index 8f015cab0..000000000 --- a/src/documents/migrations/0010_log.py +++ /dev/null @@ -1,53 +0,0 @@ -# Generated by Django 1.9 on 2016-02-27 17:54 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0009_auto_20160214_0040"), - ] - - operations = [ - migrations.CreateModel( - name="Log", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("group", models.UUIDField(blank=True)), - ("message", models.TextField()), - ( - "level", - models.PositiveIntegerField( - choices=[ - (10, "Debugging"), - (20, "Informational"), - (30, "Warning"), - (40, "Error"), - (50, "Critical"), - ], - default=20, - ), - ), - ( - "component", - models.PositiveIntegerField( - choices=[(1, "Consumer"), (2, "Mail Fetcher")], - ), - ), - ("created", models.DateTimeField(auto_now_add=True)), - ("modified", models.DateTimeField(auto_now=True)), - ], - options={ - "ordering": ("-modified",), - }, - ), - ] diff --git a/src/documents/migrations/0011_auto_20160303_1929.py b/src/documents/migrations/0011_auto_20160303_1929.py deleted file mode 100644 index 4c4fcd3ad..000000000 --- a/src/documents/migrations/0011_auto_20160303_1929.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 1.9.2 on 2016-03-03 19:29 - -from django.db import migrations - - -class Migration(migrations.Migration): - atomic = False - dependencies = [ - ("documents", "0010_log"), - ] - - operations = [ - migrations.RenameModel( - old_name="Sender", - new_name="Correspondent", - ), - migrations.AlterModelOptions( - name="document", - options={"ordering": ("correspondent", "title")}, - ), - migrations.RenameField( - model_name="document", - old_name="sender", - new_name="correspondent", - ), - ] diff --git a/src/documents/migrations/0012_auto_20160305_0040.py b/src/documents/migrations/0012_auto_20160305_0040.py deleted file mode 100644 index 097661137..000000000 --- a/src/documents/migrations/0012_auto_20160305_0040.py +++ /dev/null @@ -1,128 +0,0 @@ -# Generated by Django 1.9.2 on 2016-03-05 00:40 - -import os -import re -import shutil -import subprocess -import tempfile -from pathlib import Path - -import gnupg -from django.conf import settings -from django.db import migrations -from django.utils.termcolors import colorize as colourise # Spelling hurts me - - -class GnuPG: - """ - A handy singleton to use when handling encrypted files. - """ - - gpg = gnupg.GPG(gnupghome=settings.GNUPG_HOME) - - @classmethod - def decrypted(cls, file_handle): - return cls.gpg.decrypt_file(file_handle, passphrase=settings.PASSPHRASE).data - - @classmethod - def encrypted(cls, file_handle): - return cls.gpg.encrypt_file( - file_handle, - recipients=None, - passphrase=settings.PASSPHRASE, - symmetric=True, - ).data - - -def move_documents_and_create_thumbnails(apps, schema_editor): - (Path(settings.MEDIA_ROOT) / "documents" / "originals").mkdir( - parents=True, - exist_ok=True, - ) - (Path(settings.MEDIA_ROOT) / "documents" / "thumbnails").mkdir( - parents=True, - exist_ok=True, - ) - - documents: list[str] = os.listdir(Path(settings.MEDIA_ROOT) / "documents") # noqa: PTH208 - - if set(documents) == {"originals", "thumbnails"}: - return - - print( - colourise( - "\n\n" - " This is a one-time only migration to generate thumbnails for all of your\n" - " documents so that future UIs will have something to work with. If you have\n" - " a lot of documents though, this may take a while, so a coffee break may be\n" - " in order." - "\n", - opts=("bold",), - ), - ) - - Path(settings.SCRATCH_DIR).mkdir(parents=True, exist_ok=True) - - for f in sorted(documents): - if not f.endswith("gpg"): - continue - - print( - " {} {} {}".format( - colourise("*", fg="green"), - colourise("Generating a thumbnail for", fg="white"), - colourise(f, fg="cyan"), - ), - ) - - thumb_temp: str = tempfile.mkdtemp(prefix="paperless", dir=settings.SCRATCH_DIR) - orig_temp: str = tempfile.mkdtemp(prefix="paperless", dir=settings.SCRATCH_DIR) - - orig_source: Path = Path(settings.MEDIA_ROOT) / "documents" / f - orig_target: Path = Path(orig_temp) / f.replace(".gpg", "") - - with orig_source.open("rb") as encrypted, orig_target.open("wb") as unencrypted: - unencrypted.write(GnuPG.decrypted(encrypted)) - - subprocess.Popen( - ( - settings.CONVERT_BINARY, - "-scale", - "500x5000", - "-alpha", - "remove", - orig_target, - Path(thumb_temp) / "convert-%04d.png", - ), - ).wait() - - thumb_source: Path = Path(thumb_temp) / "convert-0000.png" - thumb_target: Path = ( - Path(settings.MEDIA_ROOT) - / "documents" - / "thumbnails" - / re.sub(r"(\d+)\.\w+(\.gpg)", "\\1.png\\2", f) - ) - with ( - thumb_source.open("rb") as unencrypted, - thumb_target.open("wb") as encrypted, - ): - encrypted.write(GnuPG.encrypted(unencrypted)) - - shutil.rmtree(thumb_temp) - shutil.rmtree(orig_temp) - - shutil.move( - Path(settings.MEDIA_ROOT) / "documents" / f, - Path(settings.MEDIA_ROOT) / "documents" / "originals" / f, - ) - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0011_auto_20160303_1929"), - ] - - operations = [ - migrations.RunPython(move_documents_and_create_thumbnails), - ] diff --git a/src/documents/migrations/0013_auto_20160325_2111.py b/src/documents/migrations/0013_auto_20160325_2111.py deleted file mode 100644 index 1d3f8b07d..000000000 --- a/src/documents/migrations/0013_auto_20160325_2111.py +++ /dev/null @@ -1,42 +0,0 @@ -# Generated by Django 1.9.4 on 2016-03-25 21:11 - -import django.utils.timezone -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0012_auto_20160305_0040"), - ] - - operations = [ - migrations.AddField( - model_name="correspondent", - name="match", - field=models.CharField(blank=True, max_length=256), - ), - migrations.AddField( - model_name="correspondent", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. If you don\'t know what a regex is, you probably don\'t want this option.', - ), - ), - migrations.AlterField( - model_name="document", - name="created", - field=models.DateTimeField(default=django.utils.timezone.now), - ), - migrations.RemoveField( - model_name="log", - name="component", - ), - ] diff --git a/src/documents/migrations/0014_document_checksum.py b/src/documents/migrations/0014_document_checksum.py deleted file mode 100644 index de256ced7..000000000 --- a/src/documents/migrations/0014_document_checksum.py +++ /dev/null @@ -1,182 +0,0 @@ -# Generated by Django 1.9.4 on 2016-03-28 19:09 - -import hashlib -from pathlib import Path - -import django.utils.timezone -import gnupg -from django.conf import settings -from django.db import migrations -from django.db import models -from django.template.defaultfilters import slugify -from django.utils.termcolors import colorize as colourise # Spelling hurts me - - -class GnuPG: - """ - A handy singleton to use when handling encrypted files. - """ - - gpg = gnupg.GPG(gnupghome=settings.GNUPG_HOME) - - @classmethod - def decrypted(cls, file_handle): - return cls.gpg.decrypt_file(file_handle, passphrase=settings.PASSPHRASE).data - - @classmethod - def encrypted(cls, file_handle): - return cls.gpg.encrypt_file( - file_handle, - recipients=None, - passphrase=settings.PASSPHRASE, - symmetric=True, - ).data - - -class Document: - """ - Django's migrations restrict access to model methods, so this is a snapshot - of the methods that existed at the time this migration was written, since - we need to make use of a lot of these shortcuts here. - """ - - def __init__(self, doc): - self.pk = doc.pk - self.correspondent = doc.correspondent - self.title = doc.title - self.file_type = doc.file_type - self.tags = doc.tags - self.created = doc.created - - def __str__(self): - created = self.created.strftime("%Y%m%d%H%M%S") - if self.correspondent and self.title: - return f"{created}: {self.correspondent} - {self.title}" - if self.correspondent or self.title: - return f"{created}: {self.correspondent or self.title}" - return str(created) - - @property - def source_path(self): - return ( - Path(settings.MEDIA_ROOT) - / "documents" - / "originals" - / f"{self.pk:07}.{self.file_type}.gpg" - ) - - @property - def source_file(self): - return self.source_path.open("rb") - - @property - def file_name(self): - return slugify(str(self)) + "." + self.file_type - - -def set_checksums(apps, schema_editor): - document_model = apps.get_model("documents", "Document") - - if not document_model.objects.all().exists(): - return - - print( - colourise( - "\n\n" - " This is a one-time only migration to generate checksums for all\n" - " of your existing documents. If you have a lot of documents\n" - " though, this may take a while, so a coffee break may be in\n" - " order." - "\n", - opts=("bold",), - ), - ) - - sums = {} - for d in document_model.objects.all(): - document = Document(d) - - print( - " {} {} {}".format( - colourise("*", fg="green"), - colourise("Generating a checksum for", fg="white"), - colourise(document.file_name, fg="cyan"), - ), - ) - - with document.source_file as encrypted: - checksum = hashlib.md5(GnuPG.decrypted(encrypted)).hexdigest() - - if checksum in sums: - error = "\n{line}{p1}\n\n{doc1}\n{doc2}\n\n{p2}\n\n{code}\n\n{p3}{line}".format( - p1=colourise( - "It appears that you have two identical documents in your collection and \nPaperless no longer supports this (see issue #97). The documents in question\nare:", - fg="yellow", - ), - p2=colourise( - "To fix this problem, you'll have to remove one of them from the database, a task\nmost easily done by running the following command in the same\ndirectory as manage.py:", - fg="yellow", - ), - p3=colourise( - "When that's finished, re-run the migrate, and provided that there aren't any\nother duplicates, you should be good to go.", - fg="yellow", - ), - doc1=colourise( - f" * {sums[checksum][1]} (id: {sums[checksum][0]})", - fg="red", - ), - doc2=colourise( - f" * {document.file_name} (id: {document.pk})", - fg="red", - ), - code=colourise( - f" $ echo 'DELETE FROM documents_document WHERE id = {document.pk};' | ./manage.py dbshell", - fg="green", - ), - line=colourise("\n{}\n".format("=" * 80), fg="white", opts=("bold",)), - ) - raise RuntimeError(error) - sums[checksum] = (document.pk, document.file_name) - - document_model.objects.filter(pk=document.pk).update(checksum=checksum) - - -def do_nothing(apps, schema_editor): - pass - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0013_auto_20160325_2111"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="checksum", - field=models.CharField( - default="-", - db_index=True, - editable=False, - max_length=32, - help_text="The checksum of the original document (before it " - "was encrypted). We use this to prevent duplicate " - "document imports.", - ), - preserve_default=False, - ), - migrations.RunPython(set_checksums, do_nothing), - migrations.AlterField( - model_name="document", - name="created", - field=models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - ), - ), - migrations.AlterField( - model_name="document", - name="modified", - field=models.DateTimeField(auto_now=True, db_index=True), - ), - ] diff --git a/src/documents/migrations/0015_add_insensitive_to_match.py b/src/documents/migrations/0015_add_insensitive_to_match.py deleted file mode 100644 index 0761cc929..000000000 --- a/src/documents/migrations/0015_add_insensitive_to_match.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 1.10.2 on 2016-10-05 21:38 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0014_document_checksum"), - ] - - operations = [ - migrations.AlterField( - model_name="document", - name="checksum", - field=models.CharField( - editable=False, - help_text="The checksum of the original document (before it was encrypted). We use this to prevent duplicate document imports.", - max_length=32, - unique=True, - ), - ), - migrations.AddField( - model_name="correspondent", - name="is_insensitive", - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name="tag", - name="is_insensitive", - field=models.BooleanField(default=True), - ), - ] diff --git a/src/documents/migrations/0015_add_insensitive_to_match_squashed_0018_auto_20170715_1712.py b/src/documents/migrations/0015_add_insensitive_to_match_squashed_0018_auto_20170715_1712.py deleted file mode 100644 index bfa897601..000000000 --- a/src/documents/migrations/0015_add_insensitive_to_match_squashed_0018_auto_20170715_1712.py +++ /dev/null @@ -1,92 +0,0 @@ -# Generated by Django 4.2.13 on 2024-06-28 17:57 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - replaces = [ - ("documents", "0015_add_insensitive_to_match"), - ("documents", "0016_auto_20170325_1558"), - ("documents", "0017_auto_20170512_0507"), - ("documents", "0018_auto_20170715_1712"), - ] - - dependencies = [ - ("documents", "0014_document_checksum"), - ] - - operations = [ - migrations.AlterField( - model_name="document", - name="checksum", - field=models.CharField( - editable=False, - help_text="The checksum of the original document (before it was encrypted). We use this to prevent duplicate document imports.", - max_length=32, - unique=True, - ), - ), - migrations.AddField( - model_name="correspondent", - name="is_insensitive", - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name="tag", - name="is_insensitive", - field=models.BooleanField(default=True), - ), - migrations.AlterField( - model_name="document", - name="content", - field=models.TextField( - blank=True, - db_index=("mysql" not in settings.DATABASES["default"]["ENGINE"]), - help_text="The raw, text-only data of the document. This field is primarily used for searching.", - ), - ), - migrations.AlterField( - model_name="correspondent", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - (5, "Fuzzy Match"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. (If you don\'t know what a regex is, you probably don\'t want this option.) Finally, a "fuzzy match" looks for words or phrases that are mostly—but not exactly—the same, which can be useful for matching against documents containing imperfections that foil accurate OCR.', - ), - ), - migrations.AlterField( - model_name="tag", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - (5, "Fuzzy Match"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. (If you don\'t know what a regex is, you probably don\'t want this option.) Finally, a "fuzzy match" looks for words or phrases that are mostly—but not exactly—the same, which can be useful for matching against documents containing imperfections that foil accurate OCR.', - ), - ), - migrations.AlterField( - model_name="document", - name="correspondent", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="documents", - to="documents.correspondent", - ), - ), - ] diff --git a/src/documents/migrations/0016_auto_20170325_1558.py b/src/documents/migrations/0016_auto_20170325_1558.py deleted file mode 100644 index 743097d0c..000000000 --- a/src/documents/migrations/0016_auto_20170325_1558.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 1.10.5 on 2017-03-25 15:58 - -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0015_add_insensitive_to_match"), - ] - - operations = [ - migrations.AlterField( - model_name="document", - name="content", - field=models.TextField( - blank=True, - db_index=("mysql" not in settings.DATABASES["default"]["ENGINE"]), - help_text="The raw, text-only data of the document. This field is primarily used for searching.", - ), - ), - ] diff --git a/src/documents/migrations/0017_auto_20170512_0507.py b/src/documents/migrations/0017_auto_20170512_0507.py deleted file mode 100644 index b9477a06c..000000000 --- a/src/documents/migrations/0017_auto_20170512_0507.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 1.10.5 on 2017-05-12 05:07 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0016_auto_20170325_1558"), - ] - - operations = [ - migrations.AlterField( - model_name="correspondent", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - (5, "Fuzzy Match"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. (If you don\'t know what a regex is, you probably don\'t want this option.) Finally, a "fuzzy match" looks for words or phrases that are mostly—but not exactly—the same, which can be useful for matching against documents containing imperfections that foil accurate OCR.', - ), - ), - migrations.AlterField( - model_name="tag", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - (5, "Fuzzy Match"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. (If you don\'t know what a regex is, you probably don\'t want this option.) Finally, a "fuzzy match" looks for words or phrases that are mostly—but not exactly—the same, which can be useful for matching against documents containing imperfections that foil accurate OCR.', - ), - ), - ] diff --git a/src/documents/migrations/0018_auto_20170715_1712.py b/src/documents/migrations/0018_auto_20170715_1712.py deleted file mode 100644 index 838d79ddc..000000000 --- a/src/documents/migrations/0018_auto_20170715_1712.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 1.10.5 on 2017-07-15 17:12 - -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0017_auto_20170512_0507"), - ] - - operations = [ - migrations.AlterField( - model_name="document", - name="correspondent", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="documents", - to="documents.Correspondent", - ), - ), - ] diff --git a/src/documents/migrations/0019_add_consumer_user.py b/src/documents/migrations/0019_add_consumer_user.py deleted file mode 100644 index b38d88538..000000000 --- a/src/documents/migrations/0019_add_consumer_user.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 1.10.5 on 2017-07-15 17:12 - -from django.contrib.auth.models import User -from django.db import migrations - - -def forwards_func(apps, schema_editor): - User.objects.create(username="consumer") - - -def reverse_func(apps, schema_editor): - User.objects.get(username="consumer").delete() - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0018_auto_20170715_1712"), - ] - - operations = [ - migrations.RunPython(forwards_func, reverse_func), - ] diff --git a/src/documents/migrations/0020_document_added.py b/src/documents/migrations/0020_document_added.py deleted file mode 100644 index 34042eedf..000000000 --- a/src/documents/migrations/0020_document_added.py +++ /dev/null @@ -1,29 +0,0 @@ -import django.utils.timezone -from django.db import migrations -from django.db import models - - -def set_added_time_to_created_time(apps, schema_editor): - Document = apps.get_model("documents", "Document") - for doc in Document.objects.all(): - doc.added = doc.created - doc.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0019_add_consumer_user"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="added", - field=models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - editable=False, - ), - ), - migrations.RunPython(set_added_time_to_created_time), - ] diff --git a/src/documents/migrations/0021_document_storage_type.py b/src/documents/migrations/0021_document_storage_type.py deleted file mode 100644 index b35fe75ed..000000000 --- a/src/documents/migrations/0021_document_storage_type.py +++ /dev/null @@ -1,41 +0,0 @@ -# Generated by Django 1.11.10 on 2018-02-04 13:07 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0020_document_added"), - ] - - operations = [ - # Add the field with the default GPG-encrypted value - migrations.AddField( - model_name="document", - name="storage_type", - field=models.CharField( - choices=[ - ("unencrypted", "Unencrypted"), - ("gpg", "Encrypted with GNU Privacy Guard"), - ], - default="gpg", - editable=False, - max_length=11, - ), - ), - # Now that the field is added, change the default to unencrypted - migrations.AlterField( - model_name="document", - name="storage_type", - field=models.CharField( - choices=[ - ("unencrypted", "Unencrypted"), - ("gpg", "Encrypted with GNU Privacy Guard"), - ], - default="unencrypted", - editable=False, - max_length=11, - ), - ), - ] diff --git a/src/documents/migrations/0022_auto_20181007_1420.py b/src/documents/migrations/0022_auto_20181007_1420.py deleted file mode 100644 index 02dfa6d2b..000000000 --- a/src/documents/migrations/0022_auto_20181007_1420.py +++ /dev/null @@ -1,61 +0,0 @@ -# Generated by Django 2.0.8 on 2018-10-07 14:20 - -from django.db import migrations -from django.db import models -from django.utils.text import slugify - - -def re_slug_all_the_things(apps, schema_editor): - """ - Rewrite all slug values to make sure they're actually slugs before we brand - them as uneditable. - """ - - Tag = apps.get_model("documents", "Tag") - Correspondent = apps.get_model("documents", "Correspondent") - - for klass in (Tag, Correspondent): - for instance in klass.objects.all(): - klass.objects.filter(pk=instance.pk).update(slug=slugify(instance.slug)) - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0021_document_storage_type"), - ] - - operations = [ - migrations.AlterModelOptions( - name="tag", - options={"ordering": ("name",)}, - ), - migrations.AlterField( - model_name="correspondent", - name="slug", - field=models.SlugField(blank=True, editable=False), - ), - migrations.AlterField( - model_name="document", - name="file_type", - field=models.CharField( - choices=[ - ("pdf", "PDF"), - ("png", "PNG"), - ("jpg", "JPG"), - ("gif", "GIF"), - ("tiff", "TIFF"), - ("txt", "TXT"), - ("csv", "CSV"), - ("md", "MD"), - ], - editable=False, - max_length=4, - ), - ), - migrations.AlterField( - model_name="tag", - name="slug", - field=models.SlugField(blank=True, editable=False), - ), - migrations.RunPython(re_slug_all_the_things, migrations.RunPython.noop), - ] diff --git a/src/documents/migrations/0023_document_current_filename.py b/src/documents/migrations/0023_document_current_filename.py deleted file mode 100644 index 5f52e1c89..000000000 --- a/src/documents/migrations/0023_document_current_filename.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 2.0.10 on 2019-04-26 18:57 - -from django.db import migrations -from django.db import models - - -def set_filename(apps, schema_editor): - Document = apps.get_model("documents", "Document") - for doc in Document.objects.all(): - file_name = f"{doc.pk:07}.{doc.file_type}" - if doc.storage_type == "gpg": - file_name += ".gpg" - - # Set filename - doc.filename = file_name - - # Save document - doc.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0022_auto_20181007_1420"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="filename", - field=models.FilePathField( - default=None, - null=True, - editable=False, - help_text="Current filename in storage", - max_length=256, - ), - ), - migrations.RunPython(set_filename), - ] diff --git a/src/documents/migrations/1000_update_paperless_all.py b/src/documents/migrations/1000_update_paperless_all.py deleted file mode 100644 index ae0d217f6..000000000 --- a/src/documents/migrations/1000_update_paperless_all.py +++ /dev/null @@ -1,147 +0,0 @@ -# Generated by Django 3.1.3 on 2020-11-07 12:35 -import uuid - -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -def logs_set_default_group(apps, schema_editor): - Log = apps.get_model("documents", "Log") - for log in Log.objects.all(): - if log.group is None: - log.group = uuid.uuid4() - log.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "0023_document_current_filename"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="archive_serial_number", - field=models.IntegerField( - blank=True, - db_index=True, - help_text="The position of this document in your physical document archive.", - null=True, - unique=True, - ), - ), - migrations.AddField( - model_name="tag", - name="is_inbox_tag", - field=models.BooleanField( - default=False, - help_text="Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags.", - ), - ), - migrations.CreateModel( - name="DocumentType", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=128, unique=True)), - ("slug", models.SlugField(blank=True, editable=False)), - ("match", models.CharField(blank=True, max_length=256)), - ( - "matching_algorithm", - models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - (5, "Fuzzy Match"), - (6, "Automatic Classification"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. (If you don\'t know what a regex is, you probably don\'t want this option.) Finally, a "fuzzy match" looks for words or phrases that are mostly—but not exactly—the same, which can be useful for matching against documents containing imperfections that foil accurate OCR.', - ), - ), - ("is_insensitive", models.BooleanField(default=True)), - ], - options={ - "abstract": False, - "ordering": ("name",), - }, - ), - migrations.AddField( - model_name="document", - name="document_type", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="documents", - to="documents.documenttype", - ), - ), - migrations.AlterField( - model_name="correspondent", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - (5, "Fuzzy Match"), - (6, "Automatic Classification"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. (If you don\'t know what a regex is, you probably don\'t want this option.) Finally, a "fuzzy match" looks for words or phrases that are mostly—but not exactly—the same, which can be useful for matching against documents containing imperfections that foil accurate OCR.', - ), - ), - migrations.AlterField( - model_name="tag", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any"), - (2, "All"), - (3, "Literal"), - (4, "Regular Expression"), - (5, "Fuzzy Match"), - (6, "Automatic Classification"), - ], - default=1, - help_text='Which algorithm you want to use when matching text to the OCR\'d PDF. Here, "any" looks for any occurrence of any word provided in the PDF, while "all" requires that every word provided appear in the PDF, albeit not in the order provided. A "literal" match means that the text you enter must appear in the PDF exactly as you\'ve entered it, and "regular expression" uses a regex to match the PDF. (If you don\'t know what a regex is, you probably don\'t want this option.) Finally, a "fuzzy match" looks for words or phrases that are mostly—but not exactly—the same, which can be useful for matching against documents containing imperfections that foil accurate OCR.', - ), - ), - migrations.AlterField( - model_name="document", - name="content", - field=models.TextField( - blank=True, - help_text="The raw, text-only data of the document. This field is primarily used for searching.", - ), - ), - migrations.AlterModelOptions( - name="log", - options={"ordering": ("-created",)}, - ), - migrations.RemoveField( - model_name="log", - name="modified", - ), - migrations.AlterField( - model_name="log", - name="group", - field=models.UUIDField(blank=True, null=True), - ), - migrations.RunPython( - code=django.db.migrations.operations.special.RunPython.noop, - reverse_code=logs_set_default_group, - ), - ] diff --git a/src/documents/migrations/1001_auto_20201109_1636.py b/src/documents/migrations/1001_auto_20201109_1636.py deleted file mode 100644 index 7477a118c..000000000 --- a/src/documents/migrations/1001_auto_20201109_1636.py +++ /dev/null @@ -1,13 +0,0 @@ -# Generated by Django 3.1.3 on 2020-11-09 16:36 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1000_update_paperless_all"), - ] - - operations = [ - migrations.RunPython(migrations.RunPython.noop, migrations.RunPython.noop), - ] diff --git a/src/documents/migrations/1002_auto_20201111_1105.py b/src/documents/migrations/1002_auto_20201111_1105.py deleted file mode 100644 index 1835c4ca9..000000000 --- a/src/documents/migrations/1002_auto_20201111_1105.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 3.1.3 on 2020-11-11 11:05 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1001_auto_20201109_1636"), - ] - - operations = [ - migrations.AlterField( - model_name="document", - name="filename", - field=models.FilePathField( - default=None, - editable=False, - help_text="Current filename in storage", - max_length=1024, - null=True, - ), - ), - ] diff --git a/src/documents/migrations/1003_mime_types.py b/src/documents/migrations/1003_mime_types.py deleted file mode 100644 index 4c7ddb492..000000000 --- a/src/documents/migrations/1003_mime_types.py +++ /dev/null @@ -1,92 +0,0 @@ -# Generated by Django 3.1.3 on 2020-11-20 11:21 -from pathlib import Path - -import magic -from django.conf import settings -from django.db import migrations -from django.db import models - -from paperless.db import GnuPG - -STORAGE_TYPE_UNENCRYPTED = "unencrypted" -STORAGE_TYPE_GPG = "gpg" - - -def source_path(self) -> Path: - if self.filename: - fname: str = str(self.filename) - else: - fname = f"{self.pk:07}.{self.file_type}" - if self.storage_type == STORAGE_TYPE_GPG: - fname += ".gpg" - - return Path(settings.ORIGINALS_DIR) / fname - - -def add_mime_types(apps, schema_editor): - Document = apps.get_model("documents", "Document") - documents = Document.objects.all() - - for d in documents: - with Path(source_path(d)).open("rb") as f: - if d.storage_type == STORAGE_TYPE_GPG: - data = GnuPG.decrypted(f) - else: - data = f.read(1024) - - d.mime_type = magic.from_buffer(data, mime=True) - d.save() - - -def add_file_extensions(apps, schema_editor): - Document = apps.get_model("documents", "Document") - documents = Document.objects.all() - - for d in documents: - d.file_type = Path(d.filename).suffix.lstrip(".") - d.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1002_auto_20201111_1105"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="mime_type", - field=models.CharField(default="-", editable=False, max_length=256), - preserve_default=False, - ), - migrations.RunPython(add_mime_types, migrations.RunPython.noop), - # This operation is here so that we can revert the entire migration: - # By allowing this field to be blank and null, we can revert the - # remove operation further down and the database won't complain about - # NOT NULL violations. - migrations.AlterField( - model_name="document", - name="file_type", - field=models.CharField( - choices=[ - ("pdf", "PDF"), - ("png", "PNG"), - ("jpg", "JPG"), - ("gif", "GIF"), - ("tiff", "TIFF"), - ("txt", "TXT"), - ("csv", "CSV"), - ("md", "MD"), - ], - editable=False, - max_length=4, - null=True, - blank=True, - ), - ), - migrations.RunPython(migrations.RunPython.noop, add_file_extensions), - migrations.RemoveField( - model_name="document", - name="file_type", - ), - ] diff --git a/src/documents/migrations/1004_sanity_check_schedule.py b/src/documents/migrations/1004_sanity_check_schedule.py deleted file mode 100644 index 018cf2492..000000000 --- a/src/documents/migrations/1004_sanity_check_schedule.py +++ /dev/null @@ -1,12 +0,0 @@ -# Generated by Django 3.1.3 on 2020-11-25 14:53 - -from django.db import migrations -from django.db.migrations import RunPython - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1003_mime_types"), - ] - - operations = [RunPython(migrations.RunPython.noop, migrations.RunPython.noop)] diff --git a/src/documents/migrations/1005_checksums.py b/src/documents/migrations/1005_checksums.py deleted file mode 100644 index 4637e06ce..000000000 --- a/src/documents/migrations/1005_checksums.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 3.1.3 on 2020-11-29 00:48 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1004_sanity_check_schedule"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="archive_checksum", - field=models.CharField( - blank=True, - editable=False, - help_text="The checksum of the archived document.", - max_length=32, - null=True, - ), - ), - migrations.AlterField( - model_name="document", - name="checksum", - field=models.CharField( - editable=False, - help_text="The checksum of the original document.", - max_length=32, - unique=True, - ), - ), - ] diff --git a/src/documents/migrations/1006_auto_20201208_2209.py b/src/documents/migrations/1006_auto_20201208_2209.py deleted file mode 100644 index 425f0a768..000000000 --- a/src/documents/migrations/1006_auto_20201208_2209.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 3.1.4 on 2020-12-08 22:09 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1005_checksums"), - ] - - operations = [ - migrations.RemoveField( - model_name="correspondent", - name="slug", - ), - migrations.RemoveField( - model_name="documenttype", - name="slug", - ), - migrations.RemoveField( - model_name="tag", - name="slug", - ), - ] diff --git a/src/documents/migrations/1006_auto_20201208_2209_squashed_1011_auto_20210101_2340.py b/src/documents/migrations/1006_auto_20201208_2209_squashed_1011_auto_20210101_2340.py deleted file mode 100644 index aa8cb6deb..000000000 --- a/src/documents/migrations/1006_auto_20201208_2209_squashed_1011_auto_20210101_2340.py +++ /dev/null @@ -1,485 +0,0 @@ -# Generated by Django 4.2.13 on 2024-06-28 18:01 - -import django.db.models.deletion -import django.utils.timezone -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - replaces = [ - ("documents", "1006_auto_20201208_2209"), - ("documents", "1007_savedview_savedviewfilterrule"), - ("documents", "1008_auto_20201216_1736"), - ("documents", "1009_auto_20201216_2005"), - ("documents", "1010_auto_20210101_2159"), - ("documents", "1011_auto_20210101_2340"), - ] - - dependencies = [ - ("documents", "1005_checksums"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.RemoveField( - model_name="correspondent", - name="slug", - ), - migrations.RemoveField( - model_name="documenttype", - name="slug", - ), - migrations.RemoveField( - model_name="tag", - name="slug", - ), - migrations.CreateModel( - name="SavedView", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=128, verbose_name="name")), - ( - "show_on_dashboard", - models.BooleanField(verbose_name="show on dashboard"), - ), - ( - "show_in_sidebar", - models.BooleanField(verbose_name="show in sidebar"), - ), - ( - "sort_field", - models.CharField(max_length=128, verbose_name="sort field"), - ), - ( - "sort_reverse", - models.BooleanField(default=False, verbose_name="sort reverse"), - ), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, - verbose_name="user", - ), - ), - ], - options={ - "ordering": ("name",), - "verbose_name": "saved view", - "verbose_name_plural": "saved views", - }, - ), - migrations.AlterModelOptions( - name="correspondent", - options={ - "ordering": ("name",), - "verbose_name": "correspondent", - "verbose_name_plural": "correspondents", - }, - ), - migrations.AlterModelOptions( - name="document", - options={ - "ordering": ("-created",), - "verbose_name": "document", - "verbose_name_plural": "documents", - }, - ), - migrations.AlterModelOptions( - name="documenttype", - options={ - "verbose_name": "document type", - "verbose_name_plural": "document types", - }, - ), - migrations.AlterModelOptions( - name="log", - options={ - "ordering": ("-created",), - "verbose_name": "log", - "verbose_name_plural": "logs", - }, - ), - migrations.AlterModelOptions( - name="tag", - options={"verbose_name": "tag", "verbose_name_plural": "tags"}, - ), - migrations.AlterField( - model_name="correspondent", - name="is_insensitive", - field=models.BooleanField(default=True, verbose_name="is insensitive"), - ), - migrations.AlterField( - model_name="correspondent", - name="match", - field=models.CharField(blank=True, max_length=256, verbose_name="match"), - ), - migrations.AlterField( - model_name="correspondent", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="correspondent", - name="name", - field=models.CharField(max_length=128, unique=True, verbose_name="name"), - ), - migrations.AlterField( - model_name="document", - name="added", - field=models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - editable=False, - verbose_name="added", - ), - ), - migrations.AlterField( - model_name="document", - name="archive_checksum", - field=models.CharField( - blank=True, - editable=False, - help_text="The checksum of the archived document.", - max_length=32, - null=True, - verbose_name="archive checksum", - ), - ), - migrations.AlterField( - model_name="document", - name="archive_serial_number", - field=models.IntegerField( - blank=True, - db_index=True, - help_text="The position of this document in your physical document archive.", - null=True, - unique=True, - verbose_name="archive serial number", - ), - ), - migrations.AlterField( - model_name="document", - name="checksum", - field=models.CharField( - editable=False, - help_text="The checksum of the original document.", - max_length=32, - unique=True, - verbose_name="checksum", - ), - ), - migrations.AlterField( - model_name="document", - name="content", - field=models.TextField( - blank=True, - help_text="The raw, text-only data of the document. This field is primarily used for searching.", - verbose_name="content", - ), - ), - migrations.AlterField( - model_name="document", - name="correspondent", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="documents", - to="documents.correspondent", - verbose_name="correspondent", - ), - ), - migrations.AlterField( - model_name="document", - name="created", - field=models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - verbose_name="created", - ), - ), - migrations.AlterField( - model_name="document", - name="document_type", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="documents", - to="documents.documenttype", - verbose_name="document type", - ), - ), - migrations.AlterField( - model_name="document", - name="filename", - field=models.FilePathField( - default=None, - editable=False, - help_text="Current filename in storage", - max_length=1024, - null=True, - verbose_name="filename", - ), - ), - migrations.AlterField( - model_name="document", - name="mime_type", - field=models.CharField( - editable=False, - max_length=256, - verbose_name="mime type", - ), - ), - migrations.AlterField( - model_name="document", - name="modified", - field=models.DateTimeField( - auto_now=True, - db_index=True, - verbose_name="modified", - ), - ), - migrations.AlterField( - model_name="document", - name="storage_type", - field=models.CharField( - choices=[ - ("unencrypted", "Unencrypted"), - ("gpg", "Encrypted with GNU Privacy Guard"), - ], - default="unencrypted", - editable=False, - max_length=11, - verbose_name="storage type", - ), - ), - migrations.AlterField( - model_name="document", - name="tags", - field=models.ManyToManyField( - blank=True, - related_name="documents", - to="documents.tag", - verbose_name="tags", - ), - ), - migrations.AlterField( - model_name="document", - name="title", - field=models.CharField( - blank=True, - db_index=True, - max_length=128, - verbose_name="title", - ), - ), - migrations.AlterField( - model_name="documenttype", - name="is_insensitive", - field=models.BooleanField(default=True, verbose_name="is insensitive"), - ), - migrations.AlterField( - model_name="documenttype", - name="match", - field=models.CharField(blank=True, max_length=256, verbose_name="match"), - ), - migrations.AlterField( - model_name="documenttype", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="documenttype", - name="name", - field=models.CharField(max_length=128, unique=True, verbose_name="name"), - ), - migrations.AlterField( - model_name="log", - name="created", - field=models.DateTimeField(auto_now_add=True, verbose_name="created"), - ), - migrations.AlterField( - model_name="log", - name="group", - field=models.UUIDField(blank=True, null=True, verbose_name="group"), - ), - migrations.AlterField( - model_name="log", - name="level", - field=models.PositiveIntegerField( - choices=[ - (10, "debug"), - (20, "information"), - (30, "warning"), - (40, "error"), - (50, "critical"), - ], - default=20, - verbose_name="level", - ), - ), - migrations.AlterField( - model_name="log", - name="message", - field=models.TextField(verbose_name="message"), - ), - migrations.CreateModel( - name="SavedViewFilterRule", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "rule_type", - models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - ], - verbose_name="rule type", - ), - ), - ( - "value", - models.CharField( - blank=True, - max_length=128, - null=True, - verbose_name="value", - ), - ), - ( - "saved_view", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="filter_rules", - to="documents.savedview", - verbose_name="saved view", - ), - ), - ], - options={ - "verbose_name": "filter rule", - "verbose_name_plural": "filter rules", - }, - ), - migrations.AlterField( - model_name="tag", - name="colour", - field=models.PositiveIntegerField( - choices=[ - (1, "#a6cee3"), - (2, "#1f78b4"), - (3, "#b2df8a"), - (4, "#33a02c"), - (5, "#fb9a99"), - (6, "#e31a1c"), - (7, "#fdbf6f"), - (8, "#ff7f00"), - (9, "#cab2d6"), - (10, "#6a3d9a"), - (11, "#b15928"), - (12, "#000000"), - (13, "#cccccc"), - ], - default=1, - verbose_name="color", - ), - ), - migrations.AlterField( - model_name="tag", - name="is_inbox_tag", - field=models.BooleanField( - default=False, - help_text="Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags.", - verbose_name="is inbox tag", - ), - ), - migrations.AlterField( - model_name="tag", - name="is_insensitive", - field=models.BooleanField(default=True, verbose_name="is insensitive"), - ), - migrations.AlterField( - model_name="tag", - name="match", - field=models.CharField(blank=True, max_length=256, verbose_name="match"), - ), - migrations.AlterField( - model_name="tag", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="tag", - name="name", - field=models.CharField(max_length=128, unique=True, verbose_name="name"), - ), - ] diff --git a/src/documents/migrations/1007_savedview_savedviewfilterrule.py b/src/documents/migrations/1007_savedview_savedviewfilterrule.py deleted file mode 100644 index 64564c6af..000000000 --- a/src/documents/migrations/1007_savedview_savedviewfilterrule.py +++ /dev/null @@ -1,90 +0,0 @@ -# Generated by Django 3.1.4 on 2020-12-12 14:41 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("documents", "1006_auto_20201208_2209"), - ] - - operations = [ - migrations.CreateModel( - name="SavedView", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=128)), - ("show_on_dashboard", models.BooleanField()), - ("show_in_sidebar", models.BooleanField()), - ("sort_field", models.CharField(max_length=128)), - ("sort_reverse", models.BooleanField(default=False)), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, - ), - ), - ], - ), - migrations.CreateModel( - name="SavedViewFilterRule", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "rule_type", - models.PositiveIntegerField( - choices=[ - (0, "Title contains"), - (1, "Content contains"), - (2, "ASN is"), - (3, "Correspondent is"), - (4, "Document type is"), - (5, "Is in inbox"), - (6, "Has tag"), - (7, "Has any tag"), - (8, "Created before"), - (9, "Created after"), - (10, "Created year is"), - (11, "Created month is"), - (12, "Created day is"), - (13, "Added before"), - (14, "Added after"), - (15, "Modified before"), - (16, "Modified after"), - (17, "Does not have tag"), - ], - ), - ), - ("value", models.CharField(max_length=128)), - ( - "saved_view", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="filter_rules", - to="documents.savedview", - ), - ), - ], - ), - ] diff --git a/src/documents/migrations/1008_auto_20201216_1736.py b/src/documents/migrations/1008_auto_20201216_1736.py deleted file mode 100644 index 76f0343b1..000000000 --- a/src/documents/migrations/1008_auto_20201216_1736.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 3.1.4 on 2020-12-16 17:36 - -import django.db.models.functions.text -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1007_savedview_savedviewfilterrule"), - ] - - operations = [ - migrations.AlterModelOptions( - name="correspondent", - options={"ordering": (django.db.models.functions.text.Lower("name"),)}, - ), - migrations.AlterModelOptions( - name="document", - options={"ordering": ("-created",)}, - ), - migrations.AlterModelOptions( - name="documenttype", - options={"ordering": (django.db.models.functions.text.Lower("name"),)}, - ), - migrations.AlterModelOptions( - name="savedview", - options={"ordering": (django.db.models.functions.text.Lower("name"),)}, - ), - migrations.AlterModelOptions( - name="tag", - options={"ordering": (django.db.models.functions.text.Lower("name"),)}, - ), - ] diff --git a/src/documents/migrations/1009_auto_20201216_2005.py b/src/documents/migrations/1009_auto_20201216_2005.py deleted file mode 100644 index 37bae8881..000000000 --- a/src/documents/migrations/1009_auto_20201216_2005.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.1.4 on 2020-12-16 20:05 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1008_auto_20201216_1736"), - ] - - operations = [ - migrations.AlterModelOptions( - name="correspondent", - options={"ordering": ("name",)}, - ), - migrations.AlterModelOptions( - name="documenttype", - options={"ordering": ("name",)}, - ), - migrations.AlterModelOptions( - name="savedview", - options={"ordering": ("name",)}, - ), - migrations.AlterModelOptions( - name="tag", - options={"ordering": ("name",)}, - ), - ] diff --git a/src/documents/migrations/1010_auto_20210101_2159.py b/src/documents/migrations/1010_auto_20210101_2159.py deleted file mode 100644 index 0c6a42d30..000000000 --- a/src/documents/migrations/1010_auto_20210101_2159.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1.4 on 2021-01-01 21:59 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1009_auto_20201216_2005"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="value", - field=models.CharField(blank=True, max_length=128, null=True), - ), - ] diff --git a/src/documents/migrations/1011_auto_20210101_2340.py b/src/documents/migrations/1011_auto_20210101_2340.py deleted file mode 100644 index dea107715..000000000 --- a/src/documents/migrations/1011_auto_20210101_2340.py +++ /dev/null @@ -1,454 +0,0 @@ -# Generated by Django 3.1.4 on 2021-01-01 23:40 - -import django.db.models.deletion -import django.utils.timezone -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("documents", "1010_auto_20210101_2159"), - ] - - operations = [ - migrations.AlterModelOptions( - name="correspondent", - options={ - "ordering": ("name",), - "verbose_name": "correspondent", - "verbose_name_plural": "correspondents", - }, - ), - migrations.AlterModelOptions( - name="document", - options={ - "ordering": ("-created",), - "verbose_name": "document", - "verbose_name_plural": "documents", - }, - ), - migrations.AlterModelOptions( - name="documenttype", - options={ - "verbose_name": "document type", - "verbose_name_plural": "document types", - }, - ), - migrations.AlterModelOptions( - name="log", - options={ - "ordering": ("-created",), - "verbose_name": "log", - "verbose_name_plural": "logs", - }, - ), - migrations.AlterModelOptions( - name="savedview", - options={ - "ordering": ("name",), - "verbose_name": "saved view", - "verbose_name_plural": "saved views", - }, - ), - migrations.AlterModelOptions( - name="savedviewfilterrule", - options={ - "verbose_name": "filter rule", - "verbose_name_plural": "filter rules", - }, - ), - migrations.AlterModelOptions( - name="tag", - options={"verbose_name": "tag", "verbose_name_plural": "tags"}, - ), - migrations.AlterField( - model_name="correspondent", - name="is_insensitive", - field=models.BooleanField(default=True, verbose_name="is insensitive"), - ), - migrations.AlterField( - model_name="correspondent", - name="match", - field=models.CharField(blank=True, max_length=256, verbose_name="match"), - ), - migrations.AlterField( - model_name="correspondent", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="correspondent", - name="name", - field=models.CharField(max_length=128, unique=True, verbose_name="name"), - ), - migrations.AlterField( - model_name="document", - name="added", - field=models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - editable=False, - verbose_name="added", - ), - ), - migrations.AlterField( - model_name="document", - name="archive_checksum", - field=models.CharField( - blank=True, - editable=False, - help_text="The checksum of the archived document.", - max_length=32, - null=True, - verbose_name="archive checksum", - ), - ), - migrations.AlterField( - model_name="document", - name="archive_serial_number", - field=models.IntegerField( - blank=True, - db_index=True, - help_text="The position of this document in your physical document archive.", - null=True, - unique=True, - verbose_name="archive serial number", - ), - ), - migrations.AlterField( - model_name="document", - name="checksum", - field=models.CharField( - editable=False, - help_text="The checksum of the original document.", - max_length=32, - unique=True, - verbose_name="checksum", - ), - ), - migrations.AlterField( - model_name="document", - name="content", - field=models.TextField( - blank=True, - help_text="The raw, text-only data of the document. This field is primarily used for searching.", - verbose_name="content", - ), - ), - migrations.AlterField( - model_name="document", - name="correspondent", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="documents", - to="documents.correspondent", - verbose_name="correspondent", - ), - ), - migrations.AlterField( - model_name="document", - name="created", - field=models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - verbose_name="created", - ), - ), - migrations.AlterField( - model_name="document", - name="document_type", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="documents", - to="documents.documenttype", - verbose_name="document type", - ), - ), - migrations.AlterField( - model_name="document", - name="filename", - field=models.FilePathField( - default=None, - editable=False, - help_text="Current filename in storage", - max_length=1024, - null=True, - verbose_name="filename", - ), - ), - migrations.AlterField( - model_name="document", - name="mime_type", - field=models.CharField( - editable=False, - max_length=256, - verbose_name="mime type", - ), - ), - migrations.AlterField( - model_name="document", - name="modified", - field=models.DateTimeField( - auto_now=True, - db_index=True, - verbose_name="modified", - ), - ), - migrations.AlterField( - model_name="document", - name="storage_type", - field=models.CharField( - choices=[ - ("unencrypted", "Unencrypted"), - ("gpg", "Encrypted with GNU Privacy Guard"), - ], - default="unencrypted", - editable=False, - max_length=11, - verbose_name="storage type", - ), - ), - migrations.AlterField( - model_name="document", - name="tags", - field=models.ManyToManyField( - blank=True, - related_name="documents", - to="documents.Tag", - verbose_name="tags", - ), - ), - migrations.AlterField( - model_name="document", - name="title", - field=models.CharField( - blank=True, - db_index=True, - max_length=128, - verbose_name="title", - ), - ), - migrations.AlterField( - model_name="documenttype", - name="is_insensitive", - field=models.BooleanField(default=True, verbose_name="is insensitive"), - ), - migrations.AlterField( - model_name="documenttype", - name="match", - field=models.CharField(blank=True, max_length=256, verbose_name="match"), - ), - migrations.AlterField( - model_name="documenttype", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="documenttype", - name="name", - field=models.CharField(max_length=128, unique=True, verbose_name="name"), - ), - migrations.AlterField( - model_name="log", - name="created", - field=models.DateTimeField(auto_now_add=True, verbose_name="created"), - ), - migrations.AlterField( - model_name="log", - name="group", - field=models.UUIDField(blank=True, null=True, verbose_name="group"), - ), - migrations.AlterField( - model_name="log", - name="level", - field=models.PositiveIntegerField( - choices=[ - (10, "debug"), - (20, "information"), - (30, "warning"), - (40, "error"), - (50, "critical"), - ], - default=20, - verbose_name="level", - ), - ), - migrations.AlterField( - model_name="log", - name="message", - field=models.TextField(verbose_name="message"), - ), - migrations.AlterField( - model_name="savedview", - name="name", - field=models.CharField(max_length=128, verbose_name="name"), - ), - migrations.AlterField( - model_name="savedview", - name="show_in_sidebar", - field=models.BooleanField(verbose_name="show in sidebar"), - ), - migrations.AlterField( - model_name="savedview", - name="show_on_dashboard", - field=models.BooleanField(verbose_name="show on dashboard"), - ), - migrations.AlterField( - model_name="savedview", - name="sort_field", - field=models.CharField(max_length=128, verbose_name="sort field"), - ), - migrations.AlterField( - model_name="savedview", - name="sort_reverse", - field=models.BooleanField(default=False, verbose_name="sort reverse"), - ), - migrations.AlterField( - model_name="savedview", - name="user", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, - verbose_name="user", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - ], - verbose_name="rule type", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="saved_view", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="filter_rules", - to="documents.savedview", - verbose_name="saved view", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="value", - field=models.CharField( - blank=True, - max_length=128, - null=True, - verbose_name="value", - ), - ), - migrations.AlterField( - model_name="tag", - name="colour", - field=models.PositiveIntegerField( - choices=[ - (1, "#a6cee3"), - (2, "#1f78b4"), - (3, "#b2df8a"), - (4, "#33a02c"), - (5, "#fb9a99"), - (6, "#e31a1c"), - (7, "#fdbf6f"), - (8, "#ff7f00"), - (9, "#cab2d6"), - (10, "#6a3d9a"), - (11, "#b15928"), - (12, "#000000"), - (13, "#cccccc"), - ], - default=1, - verbose_name="color", - ), - ), - migrations.AlterField( - model_name="tag", - name="is_inbox_tag", - field=models.BooleanField( - default=False, - help_text="Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags.", - verbose_name="is inbox tag", - ), - ), - migrations.AlterField( - model_name="tag", - name="is_insensitive", - field=models.BooleanField(default=True, verbose_name="is insensitive"), - ), - migrations.AlterField( - model_name="tag", - name="match", - field=models.CharField(blank=True, max_length=256, verbose_name="match"), - ), - migrations.AlterField( - model_name="tag", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="tag", - name="name", - field=models.CharField(max_length=128, unique=True, verbose_name="name"), - ), - ] diff --git a/src/documents/migrations/1012_fix_archive_files.py b/src/documents/migrations/1012_fix_archive_files.py deleted file mode 100644 index a97fa7a80..000000000 --- a/src/documents/migrations/1012_fix_archive_files.py +++ /dev/null @@ -1,367 +0,0 @@ -# Generated by Django 3.1.6 on 2021-02-07 22:26 -import datetime -import hashlib -import logging -import os -import shutil -from collections import defaultdict -from pathlib import Path -from time import sleep - -import pathvalidate -from django.conf import settings -from django.db import migrations -from django.db import models -from django.template.defaultfilters import slugify - -logger = logging.getLogger("paperless.migrations") - - -############################################################################### -# This is code copied straight paperless before the change. -############################################################################### -class defaultdictNoStr(defaultdict): - def __str__(self): # pragma: no cover - raise ValueError("Don't use {tags} directly.") - - -def many_to_dictionary(field): # pragma: no cover - # Converts ManyToManyField to dictionary by assuming, that field - # entries contain an _ or - which will be used as a delimiter - mydictionary = dict() - - for index, t in enumerate(field.all()): - # Populate tag names by index - mydictionary[index] = slugify(t.name) - - # Find delimiter - delimiter = t.name.find("_") - - if delimiter == -1: - delimiter = t.name.find("-") - - if delimiter == -1: - continue - - key = t.name[:delimiter] - value = t.name[delimiter + 1 :] - - mydictionary[slugify(key)] = slugify(value) - - return mydictionary - - -def archive_name_from_filename(filename: Path) -> Path: - return Path(filename.stem + ".pdf") - - -def archive_path_old(doc) -> Path: - if doc.filename: - fname = archive_name_from_filename(Path(doc.filename)) - else: - fname = Path(f"{doc.pk:07}.pdf") - - return settings.ARCHIVE_DIR / fname - - -STORAGE_TYPE_GPG = "gpg" - - -def archive_path_new(doc) -> Path | None: - if doc.archive_filename is not None: - return settings.ARCHIVE_DIR / doc.archive_filename - else: - return None - - -def source_path(doc) -> Path: - if doc.filename: - fname = doc.filename - else: - fname = f"{doc.pk:07}{doc.file_type}" - if doc.storage_type == STORAGE_TYPE_GPG: - fname = Path(str(fname) + ".gpg") # pragma: no cover - - return settings.ORIGINALS_DIR / fname - - -def generate_unique_filename(doc, *, archive_filename=False): - if archive_filename: - old_filename = doc.archive_filename - root = settings.ARCHIVE_DIR - else: - old_filename = doc.filename - root = settings.ORIGINALS_DIR - - counter = 0 - - while True: - new_filename = generate_filename( - doc, - counter=counter, - archive_filename=archive_filename, - ) - if new_filename == old_filename: - # still the same as before. - return new_filename - - if (root / new_filename).exists(): - counter += 1 - else: - return new_filename - - -def generate_filename(doc, *, counter=0, append_gpg=True, archive_filename=False): - path = "" - - try: - if settings.FILENAME_FORMAT is not None: - tags = defaultdictNoStr(lambda: slugify(None), many_to_dictionary(doc.tags)) - - tag_list = pathvalidate.sanitize_filename( - ",".join(sorted([tag.name for tag in doc.tags.all()])), - replacement_text="-", - ) - - if doc.correspondent: - correspondent = pathvalidate.sanitize_filename( - doc.correspondent.name, - replacement_text="-", - ) - else: - correspondent = "none" - - if doc.document_type: - document_type = pathvalidate.sanitize_filename( - doc.document_type.name, - replacement_text="-", - ) - else: - document_type = "none" - - path = settings.FILENAME_FORMAT.format( - title=pathvalidate.sanitize_filename(doc.title, replacement_text="-"), - correspondent=correspondent, - document_type=document_type, - created=datetime.date.isoformat(doc.created), - created_year=doc.created.year if doc.created else "none", - created_month=f"{doc.created.month:02}" if doc.created else "none", - created_day=f"{doc.created.day:02}" if doc.created else "none", - added=datetime.date.isoformat(doc.added), - added_year=doc.added.year if doc.added else "none", - added_month=f"{doc.added.month:02}" if doc.added else "none", - added_day=f"{doc.added.day:02}" if doc.added else "none", - tags=tags, - tag_list=tag_list, - ).strip() - - path = path.strip(os.sep) - - except (ValueError, KeyError, IndexError): - logger.warning( - f"Invalid PAPERLESS_FILENAME_FORMAT: " - f"{settings.FILENAME_FORMAT}, falling back to default", - ) - - counter_str = f"_{counter:02}" if counter else "" - - filetype_str = ".pdf" if archive_filename else doc.file_type - - if len(path) > 0: - filename = f"{path}{counter_str}{filetype_str}" - else: - filename = f"{doc.pk:07}{counter_str}{filetype_str}" - - # Append .gpg for encrypted files - if append_gpg and doc.storage_type == STORAGE_TYPE_GPG: - filename += ".gpg" - - return filename - - -############################################################################### -# This code performs bidirection archive file transformation. -############################################################################### - - -def parse_wrapper(parser, path, mime_type, file_name): - # this is here so that I can mock this out for testing. - parser.parse(path, mime_type, file_name) - - -def create_archive_version(doc, retry_count=3): - from documents.parsers import DocumentParser - from documents.parsers import ParseError - from documents.parsers import get_parser_class_for_mime_type - - logger.info(f"Regenerating archive document for document ID:{doc.id}") - parser_class = get_parser_class_for_mime_type(doc.mime_type) - for try_num in range(retry_count): - parser: DocumentParser = parser_class(None, None) - try: - parse_wrapper( - parser, - source_path(doc), - doc.mime_type, - Path(doc.filename).name, - ) - doc.content = parser.get_text() - - if parser.get_archive_path() and Path(parser.get_archive_path()).is_file(): - doc.archive_filename = generate_unique_filename( - doc, - archive_filename=True, - ) - with Path(parser.get_archive_path()).open("rb") as f: - doc.archive_checksum = hashlib.md5(f.read()).hexdigest() - archive_path_new(doc).parent.mkdir(parents=True, exist_ok=True) - shutil.copy2(parser.get_archive_path(), archive_path_new(doc)) - else: - doc.archive_checksum = None - logger.error( - f"Parser did not return an archive document for document " - f"ID:{doc.id}. Removing archive document.", - ) - doc.save() - return - except ParseError: - if try_num + 1 == retry_count: - logger.exception( - f"Unable to regenerate archive document for ID:{doc.id}. You " - f"need to invoke the document_archiver management command " - f"manually for that document.", - ) - doc.archive_checksum = None - doc.save() - return - else: - # This is mostly here for the tika parser in docker - # environments. The servers for parsing need to come up first, - # and the docker setup doesn't ensure that tika is running - # before attempting migrations. - logger.error("Parse error, will try again in 5 seconds...") - sleep(5) - finally: - parser.cleanup() - - -def move_old_to_new_locations(apps, schema_editor): - Document = apps.get_model("documents", "Document") - - affected_document_ids = set() - - old_archive_path_to_id = {} - - # check for documents that have incorrect archive versions - for doc in Document.objects.filter(archive_checksum__isnull=False): - old_path = archive_path_old(doc) - - if old_path in old_archive_path_to_id: - affected_document_ids.add(doc.id) - affected_document_ids.add(old_archive_path_to_id[old_path]) - else: - old_archive_path_to_id[old_path] = doc.id - - # check that archive files of all unaffected documents are in place - for doc in Document.objects.filter(archive_checksum__isnull=False): - old_path = archive_path_old(doc) - if doc.id not in affected_document_ids and not old_path.is_file(): - raise ValueError( - f"Archived document ID:{doc.id} does not exist at: {old_path}", - ) - - # check that we can regenerate affected archive versions - for doc_id in affected_document_ids: - from documents.parsers import get_parser_class_for_mime_type - - doc = Document.objects.get(id=doc_id) - parser_class = get_parser_class_for_mime_type(doc.mime_type) - if not parser_class: - raise ValueError( - f"Document ID:{doc.id} has an invalid archived document, " - f"but no parsers are available. Cannot migrate.", - ) - - for doc in Document.objects.filter(archive_checksum__isnull=False): - if doc.id in affected_document_ids: - old_path = archive_path_old(doc) - # remove affected archive versions - if old_path.is_file(): - logger.debug(f"Removing {old_path}") - old_path.unlink() - else: - # Set archive path for unaffected files - doc.archive_filename = archive_name_from_filename(Path(doc.filename)) - Document.objects.filter(id=doc.id).update( - archive_filename=doc.archive_filename, - ) - - # regenerate archive documents - for doc_id in affected_document_ids: - doc = Document.objects.get(id=doc_id) - create_archive_version(doc) - - -def move_new_to_old_locations(apps, schema_editor): - Document = apps.get_model("documents", "Document") - - old_archive_paths = set() - - for doc in Document.objects.filter(archive_checksum__isnull=False): - new_archive_path = archive_path_new(doc) - old_archive_path = archive_path_old(doc) - if old_archive_path in old_archive_paths: - raise ValueError( - f"Cannot migrate: Archive file name {old_archive_path} of " - f"document {doc.filename} would clash with another archive " - f"filename.", - ) - old_archive_paths.add(old_archive_path) - if new_archive_path != old_archive_path and old_archive_path.is_file(): - raise ValueError( - f"Cannot migrate: Cannot move {new_archive_path} to " - f"{old_archive_path}: file already exists.", - ) - - for doc in Document.objects.filter(archive_checksum__isnull=False): - new_archive_path = archive_path_new(doc) - old_archive_path = archive_path_old(doc) - if new_archive_path != old_archive_path: - logger.debug(f"Moving {new_archive_path} to {old_archive_path}") - shutil.move(new_archive_path, old_archive_path) - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1011_auto_20210101_2340"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="archive_filename", - field=models.FilePathField( - default=None, - editable=False, - help_text="Current archive filename in storage", - max_length=1024, - null=True, - unique=True, - verbose_name="archive filename", - ), - ), - migrations.AlterField( - model_name="document", - name="filename", - field=models.FilePathField( - default=None, - editable=False, - help_text="Current filename in storage", - max_length=1024, - null=True, - unique=True, - verbose_name="filename", - ), - ), - migrations.RunPython(move_old_to_new_locations, move_new_to_old_locations), - ] diff --git a/src/documents/migrations/1013_migrate_tag_colour.py b/src/documents/migrations/1013_migrate_tag_colour.py deleted file mode 100644 index 6cae10898..000000000 --- a/src/documents/migrations/1013_migrate_tag_colour.py +++ /dev/null @@ -1,74 +0,0 @@ -# Generated by Django 3.1.4 on 2020-12-02 21:43 - -from django.db import migrations -from django.db import models - -COLOURS_OLD = { - 1: "#a6cee3", - 2: "#1f78b4", - 3: "#b2df8a", - 4: "#33a02c", - 5: "#fb9a99", - 6: "#e31a1c", - 7: "#fdbf6f", - 8: "#ff7f00", - 9: "#cab2d6", - 10: "#6a3d9a", - 11: "#b15928", - 12: "#000000", - 13: "#cccccc", -} - - -def forward(apps, schema_editor): - Tag = apps.get_model("documents", "Tag") - - for tag in Tag.objects.all(): - colour_old_id = tag.colour_old - rgb = COLOURS_OLD[colour_old_id] - tag.color = rgb - tag.save() - - -def reverse(apps, schema_editor): - Tag = apps.get_model("documents", "Tag") - - def _get_colour_id(rdb): - for idx, rdbx in COLOURS_OLD.items(): - if rdbx == rdb: - return idx - # Return colour 1 if we can't match anything - return 1 - - for tag in Tag.objects.all(): - colour_id = _get_colour_id(tag.color) - tag.colour_old = colour_id - tag.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1012_fix_archive_files"), - ] - - operations = [ - migrations.RenameField( - model_name="tag", - old_name="colour", - new_name="colour_old", - ), - migrations.AddField( - model_name="tag", - name="color", - field=models.CharField( - default="#a6cee3", - max_length=7, - verbose_name="color", - ), - ), - migrations.RunPython(forward, reverse), - migrations.RemoveField( - model_name="tag", - name="colour_old", - ), - ] diff --git a/src/documents/migrations/1014_auto_20210228_1614.py b/src/documents/migrations/1014_auto_20210228_1614.py deleted file mode 100644 index 5785bcb53..000000000 --- a/src/documents/migrations/1014_auto_20210228_1614.py +++ /dev/null @@ -1,42 +0,0 @@ -# Generated by Django 3.1.7 on 2021-02-28 15:14 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1013_migrate_tag_colour"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1015_remove_null_characters.py b/src/documents/migrations/1015_remove_null_characters.py deleted file mode 100644 index 9872b3a75..000000000 --- a/src/documents/migrations/1015_remove_null_characters.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 3.1.7 on 2021-04-04 18:28 -import logging - -from django.db import migrations - -logger = logging.getLogger("paperless.migrations") - - -def remove_null_characters(apps, schema_editor): - Document = apps.get_model("documents", "Document") - - for doc in Document.objects.all(): - content: str = doc.content - if "\0" in content: - logger.info(f"Removing null characters from document {doc}...") - doc.content = content.replace("\0", " ") - doc.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1014_auto_20210228_1614"), - ] - - operations = [ - migrations.RunPython(remove_null_characters, migrations.RunPython.noop), - ] diff --git a/src/documents/migrations/1016_auto_20210317_1351.py b/src/documents/migrations/1016_auto_20210317_1351.py deleted file mode 100644 index 67147fd4c..000000000 --- a/src/documents/migrations/1016_auto_20210317_1351.py +++ /dev/null @@ -1,54 +0,0 @@ -# Generated by Django 3.1.7 on 2021-03-17 12:51 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1015_remove_null_characters"), - ] - - operations = [ - migrations.AlterField( - model_name="savedview", - name="sort_field", - field=models.CharField( - blank=True, - max_length=128, - null=True, - verbose_name="sort field", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1016_auto_20210317_1351_squashed_1020_merge_20220518_1839.py b/src/documents/migrations/1016_auto_20210317_1351_squashed_1020_merge_20220518_1839.py deleted file mode 100644 index a7f92e931..000000000 --- a/src/documents/migrations/1016_auto_20210317_1351_squashed_1020_merge_20220518_1839.py +++ /dev/null @@ -1,190 +0,0 @@ -# Generated by Django 4.2.13 on 2024-06-28 18:09 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - replaces = [ - ("documents", "1016_auto_20210317_1351"), - ("documents", "1017_alter_savedviewfilterrule_rule_type"), - ("documents", "1018_alter_savedviewfilterrule_value"), - ("documents", "1019_uisettings"), - ("documents", "1019_storagepath_document_storage_path"), - ("documents", "1020_merge_20220518_1839"), - ] - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("documents", "1015_remove_null_characters"), - ] - - operations = [ - migrations.AlterField( - model_name="savedview", - name="sort_field", - field=models.CharField( - blank=True, - max_length=128, - null=True, - verbose_name="sort field", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - ], - verbose_name="rule type", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - ], - verbose_name="rule type", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="value", - field=models.CharField( - blank=True, - max_length=255, - null=True, - verbose_name="value", - ), - ), - migrations.CreateModel( - name="UiSettings", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("settings", models.JSONField(null=True)), - ( - "user", - models.OneToOneField( - on_delete=django.db.models.deletion.CASCADE, - related_name="ui_settings", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - ), - migrations.CreateModel( - name="StoragePath", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "name", - models.CharField(max_length=128, unique=True, verbose_name="name"), - ), - ( - "match", - models.CharField(blank=True, max_length=256, verbose_name="match"), - ), - ( - "matching_algorithm", - models.PositiveIntegerField( - choices=[ - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - ( - "is_insensitive", - models.BooleanField(default=True, verbose_name="is insensitive"), - ), - ("path", models.CharField(max_length=512, verbose_name="path")), - ], - options={ - "verbose_name": "storage path", - "verbose_name_plural": "storage paths", - "ordering": ("name",), - }, - ), - migrations.AddField( - model_name="document", - name="storage_path", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="documents", - to="documents.storagepath", - verbose_name="storage path", - ), - ), - ] diff --git a/src/documents/migrations/1017_alter_savedviewfilterrule_rule_type.py b/src/documents/migrations/1017_alter_savedviewfilterrule_rule_type.py deleted file mode 100644 index ab18f1bc1..000000000 --- a/src/documents/migrations/1017_alter_savedviewfilterrule_rule_type.py +++ /dev/null @@ -1,45 +0,0 @@ -# Generated by Django 3.2.12 on 2022-03-17 11:59 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1016_auto_20210317_1351"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1018_alter_savedviewfilterrule_value.py b/src/documents/migrations/1018_alter_savedviewfilterrule_value.py deleted file mode 100644 index 95ef4861d..000000000 --- a/src/documents/migrations/1018_alter_savedviewfilterrule_value.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.0.3 on 2022-04-01 22:50 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1017_alter_savedviewfilterrule_rule_type"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="value", - field=models.CharField( - blank=True, - max_length=255, - null=True, - verbose_name="value", - ), - ), - ] diff --git a/src/documents/migrations/1019_storagepath_document_storage_path.py b/src/documents/migrations/1019_storagepath_document_storage_path.py deleted file mode 100644 index b09941bf5..000000000 --- a/src/documents/migrations/1019_storagepath_document_storage_path.py +++ /dev/null @@ -1,73 +0,0 @@ -# Generated by Django 4.0.4 on 2022-05-02 15:56 - -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1018_alter_savedviewfilterrule_value"), - ] - - operations = [ - migrations.CreateModel( - name="StoragePath", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "name", - models.CharField(max_length=128, unique=True, verbose_name="name"), - ), - ( - "match", - models.CharField(blank=True, max_length=256, verbose_name="match"), - ), - ( - "matching_algorithm", - models.PositiveIntegerField( - choices=[ - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - ( - "is_insensitive", - models.BooleanField(default=True, verbose_name="is insensitive"), - ), - ("path", models.CharField(max_length=512, verbose_name="path")), - ], - options={ - "verbose_name": "storage path", - "verbose_name_plural": "storage paths", - "ordering": ("name",), - }, - ), - migrations.AddField( - model_name="document", - name="storage_path", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="documents", - to="documents.storagepath", - verbose_name="storage path", - ), - ), - ] diff --git a/src/documents/migrations/1019_uisettings.py b/src/documents/migrations/1019_uisettings.py deleted file mode 100644 index e84138077..000000000 --- a/src/documents/migrations/1019_uisettings.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 4.0.4 on 2022-05-07 05:10 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("documents", "1018_alter_savedviewfilterrule_value"), - ] - - operations = [ - migrations.CreateModel( - name="UiSettings", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("settings", models.JSONField(null=True)), - ( - "user", - models.OneToOneField( - on_delete=django.db.models.deletion.CASCADE, - related_name="ui_settings", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - ), - ] diff --git a/src/documents/migrations/1020_merge_20220518_1839.py b/src/documents/migrations/1020_merge_20220518_1839.py deleted file mode 100644 index a766aaa20..000000000 --- a/src/documents/migrations/1020_merge_20220518_1839.py +++ /dev/null @@ -1,12 +0,0 @@ -# Generated by Django 4.0.4 on 2022-05-18 18:39 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1019_storagepath_document_storage_path"), - ("documents", "1019_uisettings"), - ] - - operations = [] diff --git a/src/documents/migrations/1021_webp_thumbnail_conversion.py b/src/documents/migrations/1021_webp_thumbnail_conversion.py deleted file mode 100644 index 50b12b156..000000000 --- a/src/documents/migrations/1021_webp_thumbnail_conversion.py +++ /dev/null @@ -1,104 +0,0 @@ -# Generated by Django 4.0.5 on 2022-06-11 15:40 -import logging -import multiprocessing.pool -import shutil -import tempfile -import time -from pathlib import Path - -from django.conf import settings -from django.db import migrations - -from documents.parsers import run_convert - -logger = logging.getLogger("paperless.migrations") - - -def _do_convert(work_package): - existing_thumbnail, converted_thumbnail = work_package - try: - logger.info(f"Converting thumbnail: {existing_thumbnail}") - - # Run actual conversion - run_convert( - density=300, - scale="500x5000>", - alpha="remove", - strip=True, - trim=False, - auto_orient=True, - input_file=f"{existing_thumbnail}[0]", - output_file=str(converted_thumbnail), - ) - - # Copy newly created thumbnail to thumbnail directory - shutil.copy(converted_thumbnail, existing_thumbnail.parent) - - # Remove the PNG version - existing_thumbnail.unlink() - - logger.info( - "Conversion to WebP completed, " - f"replaced {existing_thumbnail.name} with {converted_thumbnail.name}", - ) - - except Exception as e: - logger.error(f"Error converting thumbnail (existing file unchanged): {e}") - - -def _convert_thumbnails_to_webp(apps, schema_editor): - start = time.time() - - with tempfile.TemporaryDirectory() as tempdir: - work_packages = [] - - for file in Path(settings.THUMBNAIL_DIR).glob("*.png"): - existing_thumbnail = file.resolve() - - # Change the existing filename suffix from png to webp - converted_thumbnail_name = existing_thumbnail.with_suffix( - ".webp", - ).name - - # Create the expected output filename in the tempdir - converted_thumbnail = ( - Path(tempdir) / Path(converted_thumbnail_name) - ).resolve() - - # Package up the necessary info - work_packages.append( - (existing_thumbnail, converted_thumbnail), - ) - - if work_packages: - logger.info( - "\n\n" - " This is a one-time only migration to convert thumbnails for all of your\n" - " documents into WebP format. If you have a lot of documents though, \n" - " this may take a while, so a coffee break may be in order." - "\n", - ) - - with multiprocessing.pool.Pool( - processes=min(multiprocessing.cpu_count(), 4), - maxtasksperchild=4, - ) as pool: - pool.map(_do_convert, work_packages) - - end = time.time() - duration = end - start - - logger.info(f"Conversion completed in {duration:.3f}s") - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1020_merge_20220518_1839"), - ] - - operations = [ - migrations.RunPython( - code=_convert_thumbnails_to_webp, - reverse_code=migrations.RunPython.noop, - ), - ] diff --git a/src/documents/migrations/1022_paperlesstask.py b/src/documents/migrations/1022_paperlesstask.py deleted file mode 100644 index c7b3f7744..000000000 --- a/src/documents/migrations/1022_paperlesstask.py +++ /dev/null @@ -1,52 +0,0 @@ -# Generated by Django 4.0.4 on 2022-05-23 07:14 - -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1021_webp_thumbnail_conversion"), - ] - - operations = [ - migrations.CreateModel( - name="PaperlessTask", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("task_id", models.CharField(max_length=128)), - ("name", models.CharField(max_length=256, null=True)), - ( - "created", - models.DateTimeField(auto_now=True, verbose_name="created"), - ), - ( - "started", - models.DateTimeField(null=True, verbose_name="started"), - ), - ("acknowledged", models.BooleanField(default=False)), - ( - "attempted_task", - models.OneToOneField( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="attempted_task", - # This is a dummy field, 1026 will fix up the column - # This manual change is required, as django doesn't django doesn't really support - # removing an app which has migration deps like this - to="documents.document", - ), - ), - ], - ), - ] diff --git a/src/documents/migrations/1022_paperlesstask_squashed_1036_alter_savedviewfilterrule_rule_type.py b/src/documents/migrations/1022_paperlesstask_squashed_1036_alter_savedviewfilterrule_rule_type.py deleted file mode 100644 index dc73a51a2..000000000 --- a/src/documents/migrations/1022_paperlesstask_squashed_1036_alter_savedviewfilterrule_rule_type.py +++ /dev/null @@ -1,668 +0,0 @@ -# Generated by Django 4.2.13 on 2024-06-28 18:10 - -import django.core.validators -import django.db.models.deletion -import django.utils.timezone -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - replaces = [ - ("documents", "1022_paperlesstask"), - ("documents", "1023_add_comments"), - ("documents", "1024_document_original_filename"), - ("documents", "1025_alter_savedviewfilterrule_rule_type"), - ("documents", "1026_transition_to_celery"), - ("documents", "1027_remove_paperlesstask_attempted_task_and_more"), - ("documents", "1028_remove_paperlesstask_task_args_and_more"), - ("documents", "1029_alter_document_archive_serial_number"), - ("documents", "1030_alter_paperlesstask_task_file_name"), - ("documents", "1031_remove_savedview_user_correspondent_owner_and_more"), - ("documents", "1032_alter_correspondent_matching_algorithm_and_more"), - ("documents", "1033_alter_documenttype_options_alter_tag_options_and_more"), - ("documents", "1034_alter_savedviewfilterrule_rule_type"), - ("documents", "1035_rename_comment_note"), - ("documents", "1036_alter_savedviewfilterrule_rule_type"), - ] - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("django_celery_results", "0011_taskresult_periodic_task_name"), - ("documents", "1021_webp_thumbnail_conversion"), - ] - - operations = [ - migrations.CreateModel( - name="Comment", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "comment", - models.TextField( - blank=True, - help_text="Comment for the document", - verbose_name="content", - ), - ), - ( - "created", - models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - verbose_name="created", - ), - ), - ( - "document", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="documents", - to="documents.document", - verbose_name="document", - ), - ), - ( - "user", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="users", - to=settings.AUTH_USER_MODEL, - verbose_name="user", - ), - ), - ], - options={ - "verbose_name": "comment", - "verbose_name_plural": "comments", - "ordering": ("created",), - }, - ), - migrations.AddField( - model_name="document", - name="original_filename", - field=models.CharField( - default=None, - editable=False, - help_text="The original name of the file when it was uploaded", - max_length=1024, - null=True, - verbose_name="original filename", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - ], - verbose_name="rule type", - ), - ), - migrations.CreateModel( - name="PaperlessTask", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("task_id", models.CharField(max_length=128)), - ("acknowledged", models.BooleanField(default=False)), - ( - "attempted_task", - models.OneToOneField( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="attempted_task", - to="django_celery_results.taskresult", - ), - ), - ], - ), - migrations.RunSQL( - sql="DROP TABLE IF EXISTS django_q_ormq", - reverse_sql="", - ), - migrations.RunSQL( - sql="DROP TABLE IF EXISTS django_q_schedule", - reverse_sql="", - ), - migrations.RunSQL( - sql="DROP TABLE IF EXISTS django_q_task", - reverse_sql="", - ), - migrations.RemoveField( - model_name="paperlesstask", - name="attempted_task", - ), - migrations.AddField( - model_name="paperlesstask", - name="date_created", - field=models.DateTimeField( - default=django.utils.timezone.now, - help_text="Datetime field when the task result was created in UTC", - null=True, - verbose_name="Created DateTime", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="date_done", - field=models.DateTimeField( - default=None, - help_text="Datetime field when the task was completed in UTC", - null=True, - verbose_name="Completed DateTime", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="date_started", - field=models.DateTimeField( - default=None, - help_text="Datetime field when the task was started in UTC", - null=True, - verbose_name="Started DateTime", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="result", - field=models.TextField( - default=None, - help_text="The data returned by the task", - null=True, - verbose_name="Result Data", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="status", - field=models.CharField( - choices=[ - ("FAILURE", "FAILURE"), - ("PENDING", "PENDING"), - ("RECEIVED", "RECEIVED"), - ("RETRY", "RETRY"), - ("REVOKED", "REVOKED"), - ("STARTED", "STARTED"), - ("SUCCESS", "SUCCESS"), - ], - default="PENDING", - help_text="Current state of the task being run", - max_length=30, - verbose_name="Task State", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="task_name", - field=models.CharField( - help_text="Name of the Task which was run", - max_length=255, - null=True, - verbose_name="Task Name", - ), - ), - migrations.AlterField( - model_name="paperlesstask", - name="acknowledged", - field=models.BooleanField( - default=False, - help_text="If the task is acknowledged via the frontend or API", - verbose_name="Acknowledged", - ), - ), - migrations.AlterField( - model_name="paperlesstask", - name="task_id", - field=models.CharField( - help_text="Celery ID for the Task that was run", - max_length=255, - unique=True, - verbose_name="Task ID", - ), - ), - migrations.AlterField( - model_name="document", - name="archive_serial_number", - field=models.PositiveIntegerField( - blank=True, - db_index=True, - help_text="The position of this document in your physical document archive.", - null=True, - unique=True, - validators=[ - django.core.validators.MaxValueValidator(4294967295), - django.core.validators.MinValueValidator(0), - ], - verbose_name="archive serial number", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="task_file_name", - field=models.CharField( - help_text="Name of the file which the Task was run for", - max_length=255, - null=True, - verbose_name="Task Filename", - ), - ), - migrations.RenameField( - model_name="savedview", - old_name="user", - new_name="owner", - ), - migrations.AlterField( - model_name="savedview", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="correspondent", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="document", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="documenttype", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="storagepath", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="tag", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AlterField( - model_name="correspondent", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (0, "None"), - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="documenttype", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (0, "None"), - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="storagepath", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (0, "None"), - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="tag", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (0, "None"), - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterModelOptions( - name="documenttype", - options={ - "ordering": ("name",), - "verbose_name": "document type", - "verbose_name_plural": "document types", - }, - ), - migrations.AlterModelOptions( - name="tag", - options={ - "ordering": ("name",), - "verbose_name": "tag", - "verbose_name_plural": "tags", - }, - ), - migrations.AlterField( - model_name="correspondent", - name="name", - field=models.CharField(max_length=128, verbose_name="name"), - ), - migrations.AlterField( - model_name="documenttype", - name="name", - field=models.CharField(max_length=128, verbose_name="name"), - ), - migrations.AlterField( - model_name="storagepath", - name="name", - field=models.CharField(max_length=128, verbose_name="name"), - ), - migrations.AlterField( - model_name="tag", - name="name", - field=models.CharField(max_length=128, verbose_name="name"), - ), - migrations.AddConstraint( - model_name="correspondent", - constraint=models.UniqueConstraint( - fields=("name", "owner"), - name="documents_correspondent_unique_name_owner", - ), - ), - migrations.AddConstraint( - model_name="correspondent", - constraint=models.UniqueConstraint( - condition=models.Q(("owner__isnull", True)), - fields=("name",), - name="documents_correspondent_name_uniq", - ), - ), - migrations.AddConstraint( - model_name="documenttype", - constraint=models.UniqueConstraint( - fields=("name", "owner"), - name="documents_documenttype_unique_name_owner", - ), - ), - migrations.AddConstraint( - model_name="documenttype", - constraint=models.UniqueConstraint( - condition=models.Q(("owner__isnull", True)), - fields=("name",), - name="documents_documenttype_name_uniq", - ), - ), - migrations.AddConstraint( - model_name="storagepath", - constraint=models.UniqueConstraint( - fields=("name", "owner"), - name="documents_storagepath_unique_name_owner", - ), - ), - migrations.AddConstraint( - model_name="storagepath", - constraint=models.UniqueConstraint( - condition=models.Q(("owner__isnull", True)), - fields=("name",), - name="documents_storagepath_name_uniq", - ), - ), - migrations.AddConstraint( - model_name="tag", - constraint=models.UniqueConstraint( - fields=("name", "owner"), - name="documents_tag_unique_name_owner", - ), - ), - migrations.AddConstraint( - model_name="tag", - constraint=models.UniqueConstraint( - condition=models.Q(("owner__isnull", True)), - fields=("name",), - name="documents_tag_name_uniq", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - (26, "has correspondent in"), - (27, "does not have correspondent in"), - (28, "has document type in"), - (29, "does not have document type in"), - (30, "has storage path in"), - (31, "does not have storage path in"), - ], - verbose_name="rule type", - ), - ), - migrations.RenameModel( - old_name="Comment", - new_name="Note", - ), - migrations.RenameField( - model_name="note", - old_name="comment", - new_name="note", - ), - migrations.AlterModelOptions( - name="note", - options={ - "ordering": ("created",), - "verbose_name": "note", - "verbose_name_plural": "notes", - }, - ), - migrations.AlterField( - model_name="note", - name="document", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="notes", - to="documents.document", - verbose_name="document", - ), - ), - migrations.AlterField( - model_name="note", - name="note", - field=models.TextField( - blank=True, - help_text="Note for the document", - verbose_name="content", - ), - ), - migrations.AlterField( - model_name="note", - name="user", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="notes", - to=settings.AUTH_USER_MODEL, - verbose_name="user", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - (26, "has correspondent in"), - (27, "does not have correspondent in"), - (28, "has document type in"), - (29, "does not have document type in"), - (30, "has storage path in"), - (31, "does not have storage path in"), - (32, "owner is"), - (33, "has owner in"), - (34, "does not have owner"), - (35, "does not have owner in"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1023_add_comments.py b/src/documents/migrations/1023_add_comments.py deleted file mode 100644 index 0b26739bc..000000000 --- a/src/documents/migrations/1023_add_comments.py +++ /dev/null @@ -1,70 +0,0 @@ -import django.utils.timezone -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1022_paperlesstask"), - ] - - operations = [ - migrations.CreateModel( - name="Comment", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "comment", - models.TextField( - blank=True, - help_text="Comment for the document", - verbose_name="content", - ), - ), - ( - "created", - models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - verbose_name="created", - ), - ), - ( - "document", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="documents", - to="documents.document", - verbose_name="document", - ), - ), - ( - "user", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="users", - to=settings.AUTH_USER_MODEL, - verbose_name="user", - ), - ), - ], - options={ - "verbose_name": "comment", - "verbose_name_plural": "comments", - "ordering": ("created",), - }, - ), - ] diff --git a/src/documents/migrations/1024_document_original_filename.py b/src/documents/migrations/1024_document_original_filename.py deleted file mode 100644 index 05be7269e..000000000 --- a/src/documents/migrations/1024_document_original_filename.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 4.0.6 on 2022-07-25 06:34 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1023_add_comments"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="original_filename", - field=models.CharField( - default=None, - editable=False, - help_text="The original name of the file when it was uploaded", - max_length=1024, - null=True, - verbose_name="original filename", - ), - ), - ] diff --git a/src/documents/migrations/1025_alter_savedviewfilterrule_rule_type.py b/src/documents/migrations/1025_alter_savedviewfilterrule_rule_type.py deleted file mode 100644 index a2deb9579..000000000 --- a/src/documents/migrations/1025_alter_savedviewfilterrule_rule_type.py +++ /dev/null @@ -1,48 +0,0 @@ -# Generated by Django 4.0.5 on 2022-08-26 16:49 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1024_document_original_filename"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1026_transition_to_celery.py b/src/documents/migrations/1026_transition_to_celery.py deleted file mode 100644 index 227188d22..000000000 --- a/src/documents/migrations/1026_transition_to_celery.py +++ /dev/null @@ -1,60 +0,0 @@ -# Generated by Django 4.1.1 on 2022-09-27 19:31 - -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("django_celery_results", "0011_taskresult_periodic_task_name"), - ("documents", "1025_alter_savedviewfilterrule_rule_type"), - ] - - operations = [ - migrations.RemoveField( - model_name="paperlesstask", - name="created", - ), - migrations.RemoveField( - model_name="paperlesstask", - name="name", - ), - migrations.RemoveField( - model_name="paperlesstask", - name="started", - ), - # Remove the field from the model - migrations.RemoveField( - model_name="paperlesstask", - name="attempted_task", - ), - # Add the field back, pointing to the correct model - # This resolves a problem where the temporary change in 1022 - # results in a type mismatch - migrations.AddField( - model_name="paperlesstask", - name="attempted_task", - field=models.OneToOneField( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="attempted_task", - to="django_celery_results.taskresult", - ), - ), - # Drop the django-q tables entirely - # Must be done last or there could be references here - migrations.RunSQL( - "DROP TABLE IF EXISTS django_q_ormq", - reverse_sql=migrations.RunSQL.noop, - ), - migrations.RunSQL( - "DROP TABLE IF EXISTS django_q_schedule", - reverse_sql=migrations.RunSQL.noop, - ), - migrations.RunSQL( - "DROP TABLE IF EXISTS django_q_task", - reverse_sql=migrations.RunSQL.noop, - ), - ] diff --git a/src/documents/migrations/1027_remove_paperlesstask_attempted_task_and_more.py b/src/documents/migrations/1027_remove_paperlesstask_attempted_task_and_more.py deleted file mode 100644 index c169c3096..000000000 --- a/src/documents/migrations/1027_remove_paperlesstask_attempted_task_and_more.py +++ /dev/null @@ -1,134 +0,0 @@ -# Generated by Django 4.1.2 on 2022-10-17 16:31 - -import django.utils.timezone -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1026_transition_to_celery"), - ] - - operations = [ - migrations.RemoveField( - model_name="paperlesstask", - name="attempted_task", - ), - migrations.AddField( - model_name="paperlesstask", - name="date_created", - field=models.DateTimeField( - default=django.utils.timezone.now, - help_text="Datetime field when the task result was created in UTC", - null=True, - verbose_name="Created DateTime", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="date_done", - field=models.DateTimeField( - default=None, - help_text="Datetime field when the task was completed in UTC", - null=True, - verbose_name="Completed DateTime", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="date_started", - field=models.DateTimeField( - default=None, - help_text="Datetime field when the task was started in UTC", - null=True, - verbose_name="Started DateTime", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="result", - field=models.TextField( - default=None, - help_text="The data returned by the task", - null=True, - verbose_name="Result Data", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="status", - field=models.CharField( - choices=[ - ("FAILURE", "FAILURE"), - ("PENDING", "PENDING"), - ("RECEIVED", "RECEIVED"), - ("RETRY", "RETRY"), - ("REVOKED", "REVOKED"), - ("STARTED", "STARTED"), - ("SUCCESS", "SUCCESS"), - ], - default="PENDING", - help_text="Current state of the task being run", - max_length=30, - verbose_name="Task State", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="task_args", - field=models.JSONField( - help_text="JSON representation of the positional arguments used with the task", - null=True, - verbose_name="Task Positional Arguments", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="task_file_name", - field=models.CharField( - help_text="Name of the file which the Task was run for", - max_length=255, - null=True, - verbose_name="Task Name", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="task_kwargs", - field=models.JSONField( - help_text="JSON representation of the named arguments used with the task", - null=True, - verbose_name="Task Named Arguments", - ), - ), - migrations.AddField( - model_name="paperlesstask", - name="task_name", - field=models.CharField( - help_text="Name of the Task which was run", - max_length=255, - null=True, - verbose_name="Task Name", - ), - ), - migrations.AlterField( - model_name="paperlesstask", - name="acknowledged", - field=models.BooleanField( - default=False, - help_text="If the task is acknowledged via the frontend or API", - verbose_name="Acknowledged", - ), - ), - migrations.AlterField( - model_name="paperlesstask", - name="task_id", - field=models.CharField( - help_text="Celery ID for the Task that was run", - max_length=255, - unique=True, - verbose_name="Task ID", - ), - ), - ] diff --git a/src/documents/migrations/1028_remove_paperlesstask_task_args_and_more.py b/src/documents/migrations/1028_remove_paperlesstask_task_args_and_more.py deleted file mode 100644 index 6e03c124b..000000000 --- a/src/documents/migrations/1028_remove_paperlesstask_task_args_and_more.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 4.1.3 on 2022-11-22 17:50 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1027_remove_paperlesstask_attempted_task_and_more"), - ] - - operations = [ - migrations.RemoveField( - model_name="paperlesstask", - name="task_args", - ), - migrations.RemoveField( - model_name="paperlesstask", - name="task_kwargs", - ), - ] diff --git a/src/documents/migrations/1029_alter_document_archive_serial_number.py b/src/documents/migrations/1029_alter_document_archive_serial_number.py deleted file mode 100644 index 57848b2dc..000000000 --- a/src/documents/migrations/1029_alter_document_archive_serial_number.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 4.1.4 on 2023-01-24 17:56 - -import django.core.validators -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1028_remove_paperlesstask_task_args_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="document", - name="archive_serial_number", - field=models.PositiveIntegerField( - blank=True, - db_index=True, - help_text="The position of this document in your physical document archive.", - null=True, - unique=True, - validators=[ - django.core.validators.MaxValueValidator(4294967295), - django.core.validators.MinValueValidator(0), - ], - verbose_name="archive serial number", - ), - ), - ] diff --git a/src/documents/migrations/1030_alter_paperlesstask_task_file_name.py b/src/documents/migrations/1030_alter_paperlesstask_task_file_name.py deleted file mode 100644 index 37e918bee..000000000 --- a/src/documents/migrations/1030_alter_paperlesstask_task_file_name.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.1.5 on 2023-02-03 21:53 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1029_alter_document_archive_serial_number"), - ] - - operations = [ - migrations.AlterField( - model_name="paperlesstask", - name="task_file_name", - field=models.CharField( - help_text="Name of the file which the Task was run for", - max_length=255, - null=True, - verbose_name="Task Filename", - ), - ), - ] diff --git a/src/documents/migrations/1031_remove_savedview_user_correspondent_owner_and_more.py b/src/documents/migrations/1031_remove_savedview_user_correspondent_owner_and_more.py deleted file mode 100644 index 56e4355ef..000000000 --- a/src/documents/migrations/1031_remove_savedview_user_correspondent_owner_and_more.py +++ /dev/null @@ -1,87 +0,0 @@ -# Generated by Django 4.1.4 on 2022-02-03 04:24 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("documents", "1030_alter_paperlesstask_task_file_name"), - ] - - operations = [ - migrations.RenameField( - model_name="savedview", - old_name="user", - new_name="owner", - ), - migrations.AlterField( - model_name="savedview", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="correspondent", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="document", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="documenttype", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="storagepath", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AddField( - model_name="tag", - name="owner", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - ] diff --git a/src/documents/migrations/1032_alter_correspondent_matching_algorithm_and_more.py b/src/documents/migrations/1032_alter_correspondent_matching_algorithm_and_more.py deleted file mode 100644 index 3d1c5658a..000000000 --- a/src/documents/migrations/1032_alter_correspondent_matching_algorithm_and_more.py +++ /dev/null @@ -1,81 +0,0 @@ -# Generated by Django 4.1.7 on 2023-02-22 00:45 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1031_remove_savedview_user_correspondent_owner_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="correspondent", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (0, "None"), - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="documenttype", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (0, "None"), - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="storagepath", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (0, "None"), - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - migrations.AlterField( - model_name="tag", - name="matching_algorithm", - field=models.PositiveIntegerField( - choices=[ - (0, "None"), - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - (6, "Automatic"), - ], - default=1, - verbose_name="matching algorithm", - ), - ), - ] diff --git a/src/documents/migrations/1034_alter_savedviewfilterrule_rule_type.py b/src/documents/migrations/1034_alter_savedviewfilterrule_rule_type.py deleted file mode 100644 index b648ac839..000000000 --- a/src/documents/migrations/1034_alter_savedviewfilterrule_rule_type.py +++ /dev/null @@ -1,54 +0,0 @@ -# Generated by Django 4.1.5 on 2023-03-15 07:10 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1033_alter_documenttype_options_alter_tag_options_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - (26, "has correspondent in"), - (27, "does not have correspondent in"), - (28, "has document type in"), - (29, "does not have document type in"), - (30, "has storage path in"), - (31, "does not have storage path in"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1035_rename_comment_note.py b/src/documents/migrations/1035_rename_comment_note.py deleted file mode 100644 index 9f9aaca94..000000000 --- a/src/documents/migrations/1035_rename_comment_note.py +++ /dev/null @@ -1,62 +0,0 @@ -# Generated by Django 4.1.5 on 2023-03-17 22:15 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("documents", "1034_alter_savedviewfilterrule_rule_type"), - ] - - operations = [ - migrations.RenameModel( - old_name="Comment", - new_name="Note", - ), - migrations.RenameField(model_name="note", old_name="comment", new_name="note"), - migrations.AlterModelOptions( - name="note", - options={ - "ordering": ("created",), - "verbose_name": "note", - "verbose_name_plural": "notes", - }, - ), - migrations.AlterField( - model_name="note", - name="document", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="notes", - to="documents.document", - verbose_name="document", - ), - ), - migrations.AlterField( - model_name="note", - name="note", - field=models.TextField( - blank=True, - help_text="Note for the document", - verbose_name="content", - ), - ), - migrations.AlterField( - model_name="note", - name="user", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="notes", - to=settings.AUTH_USER_MODEL, - verbose_name="user", - ), - ), - ] diff --git a/src/documents/migrations/1036_alter_savedviewfilterrule_rule_type.py b/src/documents/migrations/1036_alter_savedviewfilterrule_rule_type.py deleted file mode 100644 index e65586ad8..000000000 --- a/src/documents/migrations/1036_alter_savedviewfilterrule_rule_type.py +++ /dev/null @@ -1,58 +0,0 @@ -# Generated by Django 4.1.7 on 2023-05-04 04:11 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1035_rename_comment_note"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - (26, "has correspondent in"), - (27, "does not have correspondent in"), - (28, "has document type in"), - (29, "does not have document type in"), - (30, "has storage path in"), - (31, "does not have storage path in"), - (32, "owner is"), - (33, "has owner in"), - (34, "does not have owner"), - (35, "does not have owner in"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1037_webp_encrypted_thumbnail_conversion.py b/src/documents/migrations/1037_webp_encrypted_thumbnail_conversion.py deleted file mode 100644 index 13996132f..000000000 --- a/src/documents/migrations/1037_webp_encrypted_thumbnail_conversion.py +++ /dev/null @@ -1,164 +0,0 @@ -# Generated by Django 4.1.9 on 2023-06-29 19:29 -import logging -import multiprocessing.pool -import shutil -import tempfile -import time -from pathlib import Path - -import gnupg -from django.conf import settings -from django.db import migrations - -from documents.parsers import run_convert - -logger = logging.getLogger("paperless.migrations") - - -def _do_convert(work_package) -> None: - ( - existing_encrypted_thumbnail, - converted_encrypted_thumbnail, - passphrase, - ) = work_package - - try: - gpg = gnupg.GPG(gnupghome=settings.GNUPG_HOME) - - logger.info(f"Decrypting thumbnail: {existing_encrypted_thumbnail}") - - # Decrypt png - decrypted_thumbnail = existing_encrypted_thumbnail.with_suffix("").resolve() - - with existing_encrypted_thumbnail.open("rb") as existing_encrypted_file: - raw_thumb = gpg.decrypt_file( - existing_encrypted_file, - passphrase=passphrase, - always_trust=True, - ).data - with Path(decrypted_thumbnail).open("wb") as decrypted_file: - decrypted_file.write(raw_thumb) - - converted_decrypted_thumbnail = Path( - str(converted_encrypted_thumbnail).replace("webp.gpg", "webp"), - ).resolve() - - logger.info(f"Converting decrypted thumbnail: {decrypted_thumbnail}") - - # Convert to webp - run_convert( - density=300, - scale="500x5000>", - alpha="remove", - strip=True, - trim=False, - auto_orient=True, - input_file=f"{decrypted_thumbnail}[0]", - output_file=str(converted_decrypted_thumbnail), - ) - - logger.info( - f"Encrypting converted thumbnail: {converted_decrypted_thumbnail}", - ) - - # Encrypt webp - with Path(converted_decrypted_thumbnail).open("rb") as converted_decrypted_file: - encrypted = gpg.encrypt_file( - fileobj_or_path=converted_decrypted_file, - recipients=None, - passphrase=passphrase, - symmetric=True, - always_trust=True, - ).data - - with Path(converted_encrypted_thumbnail).open( - "wb", - ) as converted_encrypted_file: - converted_encrypted_file.write(encrypted) - - # Copy newly created thumbnail to thumbnail directory - shutil.copy(converted_encrypted_thumbnail, existing_encrypted_thumbnail.parent) - - # Remove the existing encrypted PNG version - existing_encrypted_thumbnail.unlink() - - # Remove the decrypted PNG version - decrypted_thumbnail.unlink() - - # Remove the decrypted WebP version - converted_decrypted_thumbnail.unlink() - - logger.info( - "Conversion to WebP completed, " - f"replaced {existing_encrypted_thumbnail.name} with {converted_encrypted_thumbnail.name}", - ) - - except Exception as e: - logger.error(f"Error converting thumbnail (existing file unchanged): {e}") - - -def _convert_encrypted_thumbnails_to_webp(apps, schema_editor) -> None: - start: float = time.time() - - with tempfile.TemporaryDirectory() as tempdir: - work_packages = [] - - if len(list(Path(settings.THUMBNAIL_DIR).glob("*.png.gpg"))) > 0: - passphrase = settings.PASSPHRASE - - if not passphrase: - raise Exception( - "Passphrase not defined, encrypted thumbnails cannot be migrated" - "without this", - ) - - for file in Path(settings.THUMBNAIL_DIR).glob("*.png.gpg"): - existing_thumbnail: Path = file.resolve() - - # Change the existing filename suffix from png to webp - converted_thumbnail_name: str = Path( - str(existing_thumbnail).replace(".png.gpg", ".webp.gpg"), - ).name - - # Create the expected output filename in the tempdir - converted_thumbnail: Path = ( - Path(tempdir) / Path(converted_thumbnail_name) - ).resolve() - - # Package up the necessary info - work_packages.append( - (existing_thumbnail, converted_thumbnail, passphrase), - ) - - if work_packages: - logger.info( - "\n\n" - " This is a one-time only migration to convert thumbnails for all of your\n" - " *encrypted* documents into WebP format. If you have a lot of encrypted documents, \n" - " this may take a while, so a coffee break may be in order." - "\n", - ) - - with multiprocessing.pool.Pool( - processes=min(multiprocessing.cpu_count(), 4), - maxtasksperchild=4, - ) as pool: - pool.map(_do_convert, work_packages) - - end: float = time.time() - duration: float = end - start - - logger.info(f"Conversion completed in {duration:.3f}s") - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1036_alter_savedviewfilterrule_rule_type"), - ] - - operations = [ - migrations.RunPython( - code=_convert_encrypted_thumbnails_to_webp, - reverse_code=migrations.RunPython.noop, - ), - ] diff --git a/src/documents/migrations/1038_sharelink.py b/src/documents/migrations/1038_sharelink.py deleted file mode 100644 index fa2860b6f..000000000 --- a/src/documents/migrations/1038_sharelink.py +++ /dev/null @@ -1,126 +0,0 @@ -# Generated by Django 4.1.10 on 2023-08-14 14:51 - -import django.db.models.deletion -import django.utils.timezone -from django.conf import settings -from django.contrib.auth.management import create_permissions -from django.contrib.auth.models import Group -from django.contrib.auth.models import Permission -from django.contrib.auth.models import User -from django.db import migrations -from django.db import models -from django.db.models import Q - - -def add_sharelink_permissions(apps, schema_editor): - # create permissions without waiting for post_migrate signal - for app_config in apps.get_app_configs(): - app_config.models_module = True - create_permissions(app_config, apps=apps, verbosity=0) - app_config.models_module = None - - add_permission = Permission.objects.get(codename="add_document") - sharelink_permissions = Permission.objects.filter(codename__contains="sharelink") - - for user in User.objects.filter(Q(user_permissions=add_permission)).distinct(): - user.user_permissions.add(*sharelink_permissions) - - for group in Group.objects.filter(Q(permissions=add_permission)).distinct(): - group.permissions.add(*sharelink_permissions) - - -def remove_sharelink_permissions(apps, schema_editor): - sharelink_permissions = Permission.objects.filter(codename__contains="sharelink") - - for user in User.objects.all(): - user.user_permissions.remove(*sharelink_permissions) - - for group in Group.objects.all(): - group.permissions.remove(*sharelink_permissions) - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("documents", "1037_webp_encrypted_thumbnail_conversion"), - ] - - operations = [ - migrations.CreateModel( - name="ShareLink", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "created", - models.DateTimeField( - blank=True, - db_index=True, - default=django.utils.timezone.now, - editable=False, - verbose_name="created", - ), - ), - ( - "expiration", - models.DateTimeField( - blank=True, - db_index=True, - null=True, - verbose_name="expiration", - ), - ), - ( - "slug", - models.SlugField( - blank=True, - editable=False, - unique=True, - verbose_name="slug", - ), - ), - ( - "file_version", - models.CharField( - choices=[("archive", "Archive"), ("original", "Original")], - default="archive", - max_length=50, - ), - ), - ( - "document", - models.ForeignKey( - blank=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="share_links", - to="documents.document", - verbose_name="document", - ), - ), - ( - "owner", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="share_links", - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - ], - options={ - "verbose_name": "share link", - "verbose_name_plural": "share links", - "ordering": ("created",), - }, - ), - migrations.RunPython(add_sharelink_permissions, remove_sharelink_permissions), - ] diff --git a/src/documents/migrations/1039_consumptiontemplate.py b/src/documents/migrations/1039_consumptiontemplate.py deleted file mode 100644 index cf8b9fd91..000000000 --- a/src/documents/migrations/1039_consumptiontemplate.py +++ /dev/null @@ -1,219 +0,0 @@ -# Generated by Django 4.1.11 on 2023-09-16 18:04 - -import django.db.models.deletion -import multiselectfield.db.fields -from django.conf import settings -from django.contrib.auth.management import create_permissions -from django.contrib.auth.models import Group -from django.contrib.auth.models import Permission -from django.contrib.auth.models import User -from django.db import migrations -from django.db import models -from django.db.models import Q - - -def add_consumptiontemplate_permissions(apps, schema_editor): - # create permissions without waiting for post_migrate signal - for app_config in apps.get_app_configs(): - app_config.models_module = True - create_permissions(app_config, apps=apps, verbosity=0) - app_config.models_module = None - - add_permission = Permission.objects.get(codename="add_document") - consumptiontemplate_permissions = Permission.objects.filter( - codename__contains="consumptiontemplate", - ) - - for user in User.objects.filter(Q(user_permissions=add_permission)).distinct(): - user.user_permissions.add(*consumptiontemplate_permissions) - - for group in Group.objects.filter(Q(permissions=add_permission)).distinct(): - group.permissions.add(*consumptiontemplate_permissions) - - -def remove_consumptiontemplate_permissions(apps, schema_editor): - consumptiontemplate_permissions = Permission.objects.filter( - codename__contains="consumptiontemplate", - ) - - for user in User.objects.all(): - user.user_permissions.remove(*consumptiontemplate_permissions) - - for group in Group.objects.all(): - group.permissions.remove(*consumptiontemplate_permissions) - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("auth", "0012_alter_user_first_name_max_length"), - ("documents", "1038_sharelink"), - ("paperless_mail", "0021_alter_mailaccount_password"), - ] - - operations = [ - migrations.CreateModel( - name="ConsumptionTemplate", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "name", - models.CharField(max_length=256, unique=True, verbose_name="name"), - ), - ("order", models.IntegerField(default=0, verbose_name="order")), - ( - "sources", - multiselectfield.db.fields.MultiSelectField( - choices=[ - (1, "Consume Folder"), - (2, "Api Upload"), - (3, "Mail Fetch"), - ], - default="1,2,3", - max_length=3, - ), - ), - ( - "filter_path", - models.CharField( - blank=True, - help_text="Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive.", - max_length=256, - null=True, - verbose_name="filter path", - ), - ), - ( - "filter_filename", - models.CharField( - blank=True, - help_text="Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.", - max_length=256, - null=True, - verbose_name="filter filename", - ), - ), - ( - "filter_mailrule", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="paperless_mail.mailrule", - verbose_name="filter documents from this mail rule", - ), - ), - ( - "assign_change_groups", - models.ManyToManyField( - blank=True, - related_name="+", - to="auth.group", - verbose_name="grant change permissions to these groups", - ), - ), - ( - "assign_change_users", - models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="grant change permissions to these users", - ), - ), - ( - "assign_correspondent", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.correspondent", - verbose_name="assign this correspondent", - ), - ), - ( - "assign_document_type", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.documenttype", - verbose_name="assign this document type", - ), - ), - ( - "assign_owner", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="assign this owner", - ), - ), - ( - "assign_storage_path", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.storagepath", - verbose_name="assign this storage path", - ), - ), - ( - "assign_tags", - models.ManyToManyField( - blank=True, - to="documents.tag", - verbose_name="assign this tag", - ), - ), - ( - "assign_title", - models.CharField( - blank=True, - help_text="Assign a document title, can include some placeholders, see documentation.", - max_length=256, - null=True, - verbose_name="assign title", - ), - ), - ( - "assign_view_groups", - models.ManyToManyField( - blank=True, - related_name="+", - to="auth.group", - verbose_name="grant view permissions to these groups", - ), - ), - ( - "assign_view_users", - models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="grant view permissions to these users", - ), - ), - ], - options={ - "verbose_name": "consumption template", - "verbose_name_plural": "consumption templates", - }, - ), - migrations.RunPython( - add_consumptiontemplate_permissions, - remove_consumptiontemplate_permissions, - ), - ] diff --git a/src/documents/migrations/1040_customfield_customfieldinstance_and_more.py b/src/documents/migrations/1040_customfield_customfieldinstance_and_more.py deleted file mode 100644 index ecd715a57..000000000 --- a/src/documents/migrations/1040_customfield_customfieldinstance_and_more.py +++ /dev/null @@ -1,171 +0,0 @@ -# Generated by Django 4.2.6 on 2023-11-02 17:38 - -import django.db.models.deletion -import django.utils.timezone -from django.contrib.auth.management import create_permissions -from django.contrib.auth.models import Group -from django.contrib.auth.models import Permission -from django.contrib.auth.models import User -from django.db import migrations -from django.db import models -from django.db.models import Q - - -def add_customfield_permissions(apps, schema_editor): - # create permissions without waiting for post_migrate signal - for app_config in apps.get_app_configs(): - app_config.models_module = True - create_permissions(app_config, apps=apps, verbosity=0) - app_config.models_module = None - - add_permission = Permission.objects.get(codename="add_document") - customfield_permissions = Permission.objects.filter( - codename__contains="customfield", - ) - - for user in User.objects.filter(Q(user_permissions=add_permission)).distinct(): - user.user_permissions.add(*customfield_permissions) - - for group in Group.objects.filter(Q(permissions=add_permission)).distinct(): - group.permissions.add(*customfield_permissions) - - -def remove_customfield_permissions(apps, schema_editor): - customfield_permissions = Permission.objects.filter( - codename__contains="customfield", - ) - - for user in User.objects.all(): - user.user_permissions.remove(*customfield_permissions) - - for group in Group.objects.all(): - group.permissions.remove(*customfield_permissions) - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1039_consumptiontemplate"), - ] - - operations = [ - migrations.CreateModel( - name="CustomField", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "created", - models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - editable=False, - verbose_name="created", - ), - ), - ("name", models.CharField(max_length=128)), - ( - "data_type", - models.CharField( - choices=[ - ("string", "String"), - ("url", "URL"), - ("date", "Date"), - ("boolean", "Boolean"), - ("integer", "Integer"), - ("float", "Float"), - ("monetary", "Monetary"), - ], - editable=False, - max_length=50, - verbose_name="data type", - ), - ), - ], - options={ - "verbose_name": "custom field", - "verbose_name_plural": "custom fields", - "ordering": ("created",), - }, - ), - migrations.CreateModel( - name="CustomFieldInstance", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "created", - models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - editable=False, - verbose_name="created", - ), - ), - ("value_text", models.CharField(max_length=128, null=True)), - ("value_bool", models.BooleanField(null=True)), - ("value_url", models.URLField(null=True)), - ("value_date", models.DateField(null=True)), - ("value_int", models.IntegerField(null=True)), - ("value_float", models.FloatField(null=True)), - ( - "value_monetary", - models.DecimalField(decimal_places=2, max_digits=12, null=True), - ), - ( - "document", - models.ForeignKey( - editable=False, - on_delete=django.db.models.deletion.CASCADE, - related_name="custom_fields", - to="documents.document", - ), - ), - ( - "field", - models.ForeignKey( - editable=False, - on_delete=django.db.models.deletion.CASCADE, - related_name="fields", - to="documents.customfield", - ), - ), - ], - options={ - "verbose_name": "custom field instance", - "verbose_name_plural": "custom field instances", - "ordering": ("created",), - }, - ), - migrations.AddConstraint( - model_name="customfield", - constraint=models.UniqueConstraint( - fields=("name",), - name="documents_customfield_unique_name", - ), - ), - migrations.AddConstraint( - model_name="customfieldinstance", - constraint=models.UniqueConstraint( - fields=("document", "field"), - name="documents_customfieldinstance_unique_document_field", - ), - ), - migrations.RunPython( - add_customfield_permissions, - remove_customfield_permissions, - ), - ] diff --git a/src/documents/migrations/1041_alter_consumptiontemplate_sources.py b/src/documents/migrations/1041_alter_consumptiontemplate_sources.py deleted file mode 100644 index c96dc53cf..000000000 --- a/src/documents/migrations/1041_alter_consumptiontemplate_sources.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.2.7 on 2023-11-30 14:29 - -import multiselectfield.db.fields -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1040_customfield_customfieldinstance_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="consumptiontemplate", - name="sources", - field=multiselectfield.db.fields.MultiSelectField( - choices=[(1, "Consume Folder"), (2, "Api Upload"), (3, "Mail Fetch")], - default="1,2,3", - max_length=5, - ), - ), - ] diff --git a/src/documents/migrations/1042_consumptiontemplate_assign_custom_fields_and_more.py b/src/documents/migrations/1042_consumptiontemplate_assign_custom_fields_and_more.py deleted file mode 100644 index ffd0dbefa..000000000 --- a/src/documents/migrations/1042_consumptiontemplate_assign_custom_fields_and_more.py +++ /dev/null @@ -1,47 +0,0 @@ -# Generated by Django 4.2.7 on 2023-12-04 04:03 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1041_alter_consumptiontemplate_sources"), - ] - - operations = [ - migrations.AddField( - model_name="consumptiontemplate", - name="assign_custom_fields", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.customfield", - verbose_name="assign these custom fields", - ), - ), - migrations.AddField( - model_name="customfieldinstance", - name="value_document_ids", - field=models.JSONField(null=True), - ), - migrations.AlterField( - model_name="customfield", - name="data_type", - field=models.CharField( - choices=[ - ("string", "String"), - ("url", "URL"), - ("date", "Date"), - ("boolean", "Boolean"), - ("integer", "Integer"), - ("float", "Float"), - ("monetary", "Monetary"), - ("documentlink", "Document Link"), - ], - editable=False, - max_length=50, - verbose_name="data type", - ), - ), - ] diff --git a/src/documents/migrations/1043_alter_savedviewfilterrule_rule_type.py b/src/documents/migrations/1043_alter_savedviewfilterrule_rule_type.py deleted file mode 100644 index bd62673df..000000000 --- a/src/documents/migrations/1043_alter_savedviewfilterrule_rule_type.py +++ /dev/null @@ -1,60 +0,0 @@ -# Generated by Django 4.2.7 on 2023-12-09 18:13 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1042_consumptiontemplate_assign_custom_fields_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - (26, "has correspondent in"), - (27, "does not have correspondent in"), - (28, "has document type in"), - (29, "does not have document type in"), - (30, "has storage path in"), - (31, "does not have storage path in"), - (32, "owner is"), - (33, "has owner in"), - (34, "does not have owner"), - (35, "does not have owner in"), - (36, "has custom field value"), - (37, "is shared by me"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py b/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py deleted file mode 100644 index 2cdd631bb..000000000 --- a/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py +++ /dev/null @@ -1,524 +0,0 @@ -# Generated by Django 4.2.7 on 2023-12-23 22:51 - -import django.db.models.deletion -import multiselectfield.db.fields -from django.conf import settings -from django.contrib.auth.management import create_permissions -from django.db import migrations -from django.db import models -from django.db import transaction -from django.db.models import Q - - -def add_workflow_permissions(apps, schema_editor): - app_name = "auth" - User = apps.get_model(app_label=app_name, model_name="User") - Group = apps.get_model(app_label=app_name, model_name="Group") - Permission = apps.get_model(app_label=app_name, model_name="Permission") - # create permissions without waiting for post_migrate signal - for app_config in apps.get_app_configs(): - app_config.models_module = True - create_permissions(app_config, apps=apps, verbosity=0) - app_config.models_module = None - - add_permission = Permission.objects.get(codename="add_document") - workflow_permissions = Permission.objects.filter( - codename__contains="workflow", - ) - - for user in User.objects.filter(Q(user_permissions=add_permission)).distinct(): - user.user_permissions.add(*workflow_permissions) - - for group in Group.objects.filter(Q(permissions=add_permission)).distinct(): - group.permissions.add(*workflow_permissions) - - -def remove_workflow_permissions(apps, schema_editor): - app_name = "auth" - User = apps.get_model(app_label=app_name, model_name="User") - Group = apps.get_model(app_label=app_name, model_name="Group") - Permission = apps.get_model(app_label=app_name, model_name="Permission") - workflow_permissions = Permission.objects.filter( - codename__contains="workflow", - ) - - for user in User.objects.all(): - user.user_permissions.remove(*workflow_permissions) - - for group in Group.objects.all(): - group.permissions.remove(*workflow_permissions) - - -def migrate_consumption_templates(apps, schema_editor): - """ - Migrate consumption templates to workflows. At this point ConsumptionTemplate still exists - but objects are not returned as their true model so we have to manually do that - """ - app_name = "documents" - - ConsumptionTemplate = apps.get_model( - app_label=app_name, - model_name="ConsumptionTemplate", - ) - Workflow = apps.get_model(app_label=app_name, model_name="Workflow") - WorkflowAction = apps.get_model(app_label=app_name, model_name="WorkflowAction") - WorkflowTrigger = apps.get_model(app_label=app_name, model_name="WorkflowTrigger") - DocumentType = apps.get_model(app_label=app_name, model_name="DocumentType") - Correspondent = apps.get_model(app_label=app_name, model_name="Correspondent") - StoragePath = apps.get_model(app_label=app_name, model_name="StoragePath") - Tag = apps.get_model(app_label=app_name, model_name="Tag") - CustomField = apps.get_model(app_label=app_name, model_name="CustomField") - MailRule = apps.get_model(app_label="paperless_mail", model_name="MailRule") - User = apps.get_model(app_label="auth", model_name="User") - Group = apps.get_model(app_label="auth", model_name="Group") - - with transaction.atomic(): - for template in ConsumptionTemplate.objects.all(): - trigger = WorkflowTrigger( - type=1, # WorkflowTriggerType.CONSUMPTION - sources=template.sources, - filter_path=template.filter_path, - filter_filename=template.filter_filename, - ) - if template.filter_mailrule is not None: - trigger.filter_mailrule = MailRule.objects.get( - id=template.filter_mailrule.id, - ) - trigger.save() - - action = WorkflowAction.objects.create( - assign_title=template.assign_title, - ) - if template.assign_document_type is not None: - action.assign_document_type = DocumentType.objects.get( - id=template.assign_document_type.id, - ) - if template.assign_correspondent is not None: - action.assign_correspondent = Correspondent.objects.get( - id=template.assign_correspondent.id, - ) - if template.assign_storage_path is not None: - action.assign_storage_path = StoragePath.objects.get( - id=template.assign_storage_path.id, - ) - if template.assign_owner is not None: - action.assign_owner = User.objects.get(id=template.assign_owner.id) - if template.assign_tags is not None: - action.assign_tags.set( - Tag.objects.filter( - id__in=[t.id for t in template.assign_tags.all()], - ).all(), - ) - if template.assign_view_users is not None: - action.assign_view_users.set( - User.objects.filter( - id__in=[u.id for u in template.assign_view_users.all()], - ).all(), - ) - if template.assign_view_groups is not None: - action.assign_view_groups.set( - Group.objects.filter( - id__in=[g.id for g in template.assign_view_groups.all()], - ).all(), - ) - if template.assign_change_users is not None: - action.assign_change_users.set( - User.objects.filter( - id__in=[u.id for u in template.assign_change_users.all()], - ).all(), - ) - if template.assign_change_groups is not None: - action.assign_change_groups.set( - Group.objects.filter( - id__in=[g.id for g in template.assign_change_groups.all()], - ).all(), - ) - if template.assign_custom_fields is not None: - action.assign_custom_fields.set( - CustomField.objects.filter( - id__in=[cf.id for cf in template.assign_custom_fields.all()], - ).all(), - ) - action.save() - - workflow = Workflow.objects.create( - name=template.name, - order=template.order, - ) - workflow.triggers.set([trigger]) - workflow.actions.set([action]) - workflow.save() - - -def unmigrate_consumption_templates(apps, schema_editor): - app_name = "documents" - - ConsumptionTemplate = apps.get_model( - app_label=app_name, - model_name="ConsumptionTemplate", - ) - Workflow = apps.get_model(app_label=app_name, model_name="Workflow") - - for workflow in Workflow.objects.all(): - template = ConsumptionTemplate.objects.create( - name=workflow.name, - order=workflow.order, - sources=workflow.triggers.first().sources, - filter_path=workflow.triggers.first().filter_path, - filter_filename=workflow.triggers.first().filter_filename, - filter_mailrule=workflow.triggers.first().filter_mailrule, - assign_title=workflow.actions.first().assign_title, - assign_document_type=workflow.actions.first().assign_document_type, - assign_correspondent=workflow.actions.first().assign_correspondent, - assign_storage_path=workflow.actions.first().assign_storage_path, - assign_owner=workflow.actions.first().assign_owner, - ) - template.assign_tags.set(workflow.actions.first().assign_tags.all()) - template.assign_view_users.set(workflow.actions.first().assign_view_users.all()) - template.assign_view_groups.set( - workflow.actions.first().assign_view_groups.all(), - ) - template.assign_change_users.set( - workflow.actions.first().assign_change_users.all(), - ) - template.assign_change_groups.set( - workflow.actions.first().assign_change_groups.all(), - ) - template.assign_custom_fields.set( - workflow.actions.first().assign_custom_fields.all(), - ) - template.save() - - -def delete_consumption_template_content_type(apps, schema_editor): - with transaction.atomic(): - apps.get_model("contenttypes", "ContentType").objects.filter( - app_label="documents", - model="consumptiontemplate", - ).delete() - - -def undelete_consumption_template_content_type(apps, schema_editor): - apps.get_model("contenttypes", "ContentType").objects.create( - app_label="documents", - model="consumptiontemplate", - ) - - -class Migration(migrations.Migration): - dependencies = [ - ("paperless_mail", "0023_remove_mailrule_filter_attachment_filename_and_more"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("auth", "0012_alter_user_first_name_max_length"), - ("documents", "1043_alter_savedviewfilterrule_rule_type"), - ] - - operations = [ - migrations.CreateModel( - name="Workflow", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "name", - models.CharField(max_length=256, unique=True, verbose_name="name"), - ), - ("order", models.IntegerField(default=0, verbose_name="order")), - ( - "enabled", - models.BooleanField(default=True, verbose_name="enabled"), - ), - ], - ), - migrations.CreateModel( - name="WorkflowAction", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "type", - models.PositiveIntegerField( - choices=[(1, "Assignment")], - default=1, - verbose_name="Workflow Action Type", - ), - ), - ( - "assign_title", - models.CharField( - blank=True, - help_text="Assign a document title, can include some placeholders, see documentation.", - max_length=256, - null=True, - verbose_name="assign title", - ), - ), - ( - "assign_change_groups", - models.ManyToManyField( - blank=True, - related_name="+", - to="auth.group", - verbose_name="grant change permissions to these groups", - ), - ), - ( - "assign_change_users", - models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="grant change permissions to these users", - ), - ), - ( - "assign_correspondent", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.correspondent", - verbose_name="assign this correspondent", - ), - ), - ( - "assign_custom_fields", - models.ManyToManyField( - blank=True, - related_name="+", - to="documents.customfield", - verbose_name="assign these custom fields", - ), - ), - ( - "assign_document_type", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.documenttype", - verbose_name="assign this document type", - ), - ), - ( - "assign_owner", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="assign this owner", - ), - ), - ( - "assign_storage_path", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.storagepath", - verbose_name="assign this storage path", - ), - ), - ( - "assign_tags", - models.ManyToManyField( - blank=True, - to="documents.tag", - verbose_name="assign this tag", - ), - ), - ( - "assign_view_groups", - models.ManyToManyField( - blank=True, - related_name="+", - to="auth.group", - verbose_name="grant view permissions to these groups", - ), - ), - ( - "assign_view_users", - models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="grant view permissions to these users", - ), - ), - ], - options={ - "verbose_name": "workflow action", - "verbose_name_plural": "workflow actions", - }, - ), - migrations.CreateModel( - name="WorkflowTrigger", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "type", - models.PositiveIntegerField( - choices=[ - (1, "Consumption Started"), - (2, "Document Added"), - (3, "Document Updated"), - ], - default=1, - verbose_name="Workflow Trigger Type", - ), - ), - ( - "sources", - multiselectfield.db.fields.MultiSelectField( - choices=[ - (1, "Consume Folder"), - (2, "Api Upload"), - (3, "Mail Fetch"), - ], - default="1,2,3", - max_length=5, - ), - ), - ( - "filter_path", - models.CharField( - blank=True, - help_text="Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive.", - max_length=256, - null=True, - verbose_name="filter path", - ), - ), - ( - "filter_filename", - models.CharField( - blank=True, - help_text="Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.", - max_length=256, - null=True, - verbose_name="filter filename", - ), - ), - ( - "filter_mailrule", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="paperless_mail.mailrule", - verbose_name="filter documents from this mail rule", - ), - ), - ( - "matching_algorithm", - models.PositiveIntegerField( - choices=[ - (0, "None"), - (1, "Any word"), - (2, "All words"), - (3, "Exact match"), - (4, "Regular expression"), - (5, "Fuzzy word"), - ], - default=0, - verbose_name="matching algorithm", - ), - ), - ( - "match", - models.CharField(blank=True, max_length=256, verbose_name="match"), - ), - ( - "is_insensitive", - models.BooleanField(default=True, verbose_name="is insensitive"), - ), - ( - "filter_has_tags", - models.ManyToManyField( - blank=True, - to="documents.tag", - verbose_name="has these tag(s)", - ), - ), - ( - "filter_has_document_type", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.documenttype", - verbose_name="has this document type", - ), - ), - ( - "filter_has_correspondent", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.correspondent", - verbose_name="has this correspondent", - ), - ), - ], - options={ - "verbose_name": "workflow trigger", - "verbose_name_plural": "workflow triggers", - }, - ), - migrations.RunPython( - add_workflow_permissions, - remove_workflow_permissions, - ), - migrations.AddField( - model_name="workflow", - name="actions", - field=models.ManyToManyField( - related_name="workflows", - to="documents.workflowaction", - verbose_name="actions", - ), - ), - migrations.AddField( - model_name="workflow", - name="triggers", - field=models.ManyToManyField( - related_name="workflows", - to="documents.workflowtrigger", - verbose_name="triggers", - ), - ), - migrations.RunPython( - migrate_consumption_templates, - unmigrate_consumption_templates, - ), - migrations.DeleteModel("ConsumptionTemplate"), - migrations.RunPython( - delete_consumption_template_content_type, - undelete_consumption_template_content_type, - ), - ] diff --git a/src/documents/migrations/1045_alter_customfieldinstance_value_monetary.py b/src/documents/migrations/1045_alter_customfieldinstance_value_monetary.py deleted file mode 100644 index 597fbb7f9..000000000 --- a/src/documents/migrations/1045_alter_customfieldinstance_value_monetary.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.2.10 on 2024-02-22 03:52 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1044_workflow_workflowaction_workflowtrigger_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="customfieldinstance", - name="value_monetary", - field=models.CharField(max_length=128, null=True), - ), - ] diff --git a/src/documents/migrations/1045_alter_customfieldinstance_value_monetary_squashed_1049_document_deleted_at_document_restored_at.py b/src/documents/migrations/1045_alter_customfieldinstance_value_monetary_squashed_1049_document_deleted_at_document_restored_at.py deleted file mode 100644 index 2987e4812..000000000 --- a/src/documents/migrations/1045_alter_customfieldinstance_value_monetary_squashed_1049_document_deleted_at_document_restored_at.py +++ /dev/null @@ -1,331 +0,0 @@ -# Generated by Django 4.2.13 on 2024-06-28 19:39 - -import django.core.validators -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - replaces = [ - ("documents", "1045_alter_customfieldinstance_value_monetary"), - ("documents", "1046_workflowaction_remove_all_correspondents_and_more"), - ("documents", "1047_savedview_display_mode_and_more"), - ("documents", "1048_alter_savedviewfilterrule_rule_type"), - ("documents", "1049_document_deleted_at_document_restored_at"), - ] - - dependencies = [ - ("documents", "1044_workflow_workflowaction_workflowtrigger_and_more"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("auth", "0012_alter_user_first_name_max_length"), - ] - - operations = [ - migrations.AlterField( - model_name="customfieldinstance", - name="value_monetary", - field=models.CharField(max_length=128, null=True), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_correspondents", - field=models.BooleanField( - default=False, - verbose_name="remove all correspondents", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_custom_fields", - field=models.BooleanField( - default=False, - verbose_name="remove all custom fields", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_document_types", - field=models.BooleanField( - default=False, - verbose_name="remove all document types", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_owners", - field=models.BooleanField(default=False, verbose_name="remove all owners"), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_permissions", - field=models.BooleanField( - default=False, - verbose_name="remove all permissions", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_storage_paths", - field=models.BooleanField( - default=False, - verbose_name="remove all storage paths", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_tags", - field=models.BooleanField(default=False, verbose_name="remove all tags"), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_change_groups", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="auth.group", - verbose_name="remove change permissions for these groups", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_change_users", - field=models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="remove change permissions for these users", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_correspondents", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.correspondent", - verbose_name="remove these correspondent(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_custom_fields", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.customfield", - verbose_name="remove these custom fields", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_document_types", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.documenttype", - verbose_name="remove these document type(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_owners", - field=models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="remove these owner(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_storage_paths", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.storagepath", - verbose_name="remove these storage path(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_tags", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.tag", - verbose_name="remove these tag(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_view_groups", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="auth.group", - verbose_name="remove view permissions for these groups", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_view_users", - field=models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="remove view permissions for these users", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="assign_correspondent", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="documents.correspondent", - verbose_name="assign this correspondent", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="assign_document_type", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="documents.documenttype", - verbose_name="assign this document type", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="assign_storage_path", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="documents.storagepath", - verbose_name="assign this storage path", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="assign_tags", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.tag", - verbose_name="assign this tag", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="type", - field=models.PositiveIntegerField( - choices=[(1, "Assignment"), (2, "Removal")], - default=1, - verbose_name="Workflow Action Type", - ), - ), - migrations.AddField( - model_name="savedview", - name="display_mode", - field=models.CharField( - blank=True, - choices=[ - ("table", "Table"), - ("smallCards", "Small Cards"), - ("largeCards", "Large Cards"), - ], - max_length=128, - null=True, - verbose_name="View display mode", - ), - ), - migrations.AddField( - model_name="savedview", - name="page_size", - field=models.PositiveIntegerField( - blank=True, - null=True, - validators=[django.core.validators.MinValueValidator(1)], - verbose_name="View page size", - ), - ), - migrations.AddField( - model_name="savedview", - name="display_fields", - field=models.JSONField( - blank=True, - null=True, - verbose_name="Document display fields", - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - (26, "has correspondent in"), - (27, "does not have correspondent in"), - (28, "has document type in"), - (29, "does not have document type in"), - (30, "has storage path in"), - (31, "does not have storage path in"), - (32, "owner is"), - (33, "has owner in"), - (34, "does not have owner"), - (35, "does not have owner in"), - (36, "has custom field value"), - (37, "is shared by me"), - (38, "has custom fields"), - (39, "has custom field in"), - (40, "does not have custom field in"), - (41, "does not have custom field"), - ], - verbose_name="rule type", - ), - ), - migrations.AddField( - model_name="document", - name="deleted_at", - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name="document", - name="restored_at", - field=models.DateTimeField(blank=True, null=True), - ), - ] diff --git a/src/documents/migrations/1046_workflowaction_remove_all_correspondents_and_more.py b/src/documents/migrations/1046_workflowaction_remove_all_correspondents_and_more.py deleted file mode 100644 index 3ab010a3c..000000000 --- a/src/documents/migrations/1046_workflowaction_remove_all_correspondents_and_more.py +++ /dev/null @@ -1,222 +0,0 @@ -# Generated by Django 4.2.10 on 2024-02-21 21:19 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("auth", "0012_alter_user_first_name_max_length"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("documents", "1045_alter_customfieldinstance_value_monetary"), - ] - - operations = [ - migrations.AddField( - model_name="workflowaction", - name="remove_all_correspondents", - field=models.BooleanField( - default=False, - verbose_name="remove all correspondents", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_custom_fields", - field=models.BooleanField( - default=False, - verbose_name="remove all custom fields", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_document_types", - field=models.BooleanField( - default=False, - verbose_name="remove all document types", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_owners", - field=models.BooleanField(default=False, verbose_name="remove all owners"), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_permissions", - field=models.BooleanField( - default=False, - verbose_name="remove all permissions", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_storage_paths", - field=models.BooleanField( - default=False, - verbose_name="remove all storage paths", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_all_tags", - field=models.BooleanField(default=False, verbose_name="remove all tags"), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_change_groups", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="auth.group", - verbose_name="remove change permissions for these groups", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_change_users", - field=models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="remove change permissions for these users", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_correspondents", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.correspondent", - verbose_name="remove these correspondent(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_custom_fields", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.customfield", - verbose_name="remove these custom fields", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_document_types", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.documenttype", - verbose_name="remove these document type(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_owners", - field=models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="remove these owner(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_storage_paths", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.storagepath", - verbose_name="remove these storage path(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_tags", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.tag", - verbose_name="remove these tag(s)", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_view_groups", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="auth.group", - verbose_name="remove view permissions for these groups", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="remove_view_users", - field=models.ManyToManyField( - blank=True, - related_name="+", - to=settings.AUTH_USER_MODEL, - verbose_name="remove view permissions for these users", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="assign_correspondent", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="documents.correspondent", - verbose_name="assign this correspondent", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="assign_document_type", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="documents.documenttype", - verbose_name="assign this document type", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="assign_storage_path", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="documents.storagepath", - verbose_name="assign this storage path", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="assign_tags", - field=models.ManyToManyField( - blank=True, - related_name="+", - to="documents.tag", - verbose_name="assign this tag", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="type", - field=models.PositiveIntegerField( - choices=[(1, "Assignment"), (2, "Removal")], - default=1, - verbose_name="Workflow Action Type", - ), - ), - ] diff --git a/src/documents/migrations/1047_savedview_display_mode_and_more.py b/src/documents/migrations/1047_savedview_display_mode_and_more.py deleted file mode 100644 index 904f86bb1..000000000 --- a/src/documents/migrations/1047_savedview_display_mode_and_more.py +++ /dev/null @@ -1,48 +0,0 @@ -# Generated by Django 4.2.11 on 2024-04-16 18:35 - -import django.core.validators -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1046_workflowaction_remove_all_correspondents_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="savedview", - name="display_mode", - field=models.CharField( - blank=True, - choices=[ - ("table", "Table"), - ("smallCards", "Small Cards"), - ("largeCards", "Large Cards"), - ], - max_length=128, - null=True, - verbose_name="View display mode", - ), - ), - migrations.AddField( - model_name="savedview", - name="page_size", - field=models.PositiveIntegerField( - blank=True, - null=True, - validators=[django.core.validators.MinValueValidator(1)], - verbose_name="View page size", - ), - ), - migrations.AddField( - model_name="savedview", - name="display_fields", - field=models.JSONField( - blank=True, - null=True, - verbose_name="Document display fields", - ), - ), - ] diff --git a/src/documents/migrations/1048_alter_savedviewfilterrule_rule_type.py b/src/documents/migrations/1048_alter_savedviewfilterrule_rule_type.py deleted file mode 100644 index 904ad242c..000000000 --- a/src/documents/migrations/1048_alter_savedviewfilterrule_rule_type.py +++ /dev/null @@ -1,64 +0,0 @@ -# Generated by Django 4.2.11 on 2024-04-24 04:58 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1047_savedview_display_mode_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - (26, "has correspondent in"), - (27, "does not have correspondent in"), - (28, "has document type in"), - (29, "does not have document type in"), - (30, "has storage path in"), - (31, "does not have storage path in"), - (32, "owner is"), - (33, "has owner in"), - (34, "does not have owner"), - (35, "does not have owner in"), - (36, "has custom field value"), - (37, "is shared by me"), - (38, "has custom fields"), - (39, "has custom field in"), - (40, "does not have custom field in"), - (41, "does not have custom field"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1049_document_deleted_at_document_restored_at.py b/src/documents/migrations/1049_document_deleted_at_document_restored_at.py deleted file mode 100644 index 39fb41353..000000000 --- a/src/documents/migrations/1049_document_deleted_at_document_restored_at.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.2.11 on 2024-04-23 07:56 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1048_alter_savedviewfilterrule_rule_type"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="deleted_at", - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name="document", - name="restored_at", - field=models.DateTimeField(blank=True, null=True), - ), - ] diff --git a/src/documents/migrations/1050_customfield_extra_data_and_more.py b/src/documents/migrations/1050_customfield_extra_data_and_more.py deleted file mode 100644 index 0c6a77ccc..000000000 --- a/src/documents/migrations/1050_customfield_extra_data_and_more.py +++ /dev/null @@ -1,48 +0,0 @@ -# Generated by Django 4.2.13 on 2024-07-04 01:02 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1049_document_deleted_at_document_restored_at"), - ] - - operations = [ - migrations.AddField( - model_name="customfield", - name="extra_data", - field=models.JSONField( - blank=True, - help_text="Extra data for the custom field, such as select options", - null=True, - verbose_name="extra data", - ), - ), - migrations.AddField( - model_name="customfieldinstance", - name="value_select", - field=models.PositiveSmallIntegerField(null=True), - ), - migrations.AlterField( - model_name="customfield", - name="data_type", - field=models.CharField( - choices=[ - ("string", "String"), - ("url", "URL"), - ("date", "Date"), - ("boolean", "Boolean"), - ("integer", "Integer"), - ("float", "Float"), - ("monetary", "Monetary"), - ("documentlink", "Document Link"), - ("select", "Select"), - ], - editable=False, - max_length=50, - verbose_name="data type", - ), - ), - ] diff --git a/src/documents/migrations/1051_alter_correspondent_owner_alter_document_owner_and_more.py b/src/documents/migrations/1051_alter_correspondent_owner_alter_document_owner_and_more.py deleted file mode 100644 index e8f0bb97c..000000000 --- a/src/documents/migrations/1051_alter_correspondent_owner_alter_document_owner_and_more.py +++ /dev/null @@ -1,88 +0,0 @@ -# Generated by Django 4.2.13 on 2024-07-09 16:39 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("documents", "1050_customfield_extra_data_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="correspondent", - name="owner", - field=models.ForeignKey( - blank=True, - default=None, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AlterField( - model_name="document", - name="owner", - field=models.ForeignKey( - blank=True, - default=None, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AlterField( - model_name="documenttype", - name="owner", - field=models.ForeignKey( - blank=True, - default=None, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AlterField( - model_name="savedview", - name="owner", - field=models.ForeignKey( - blank=True, - default=None, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AlterField( - model_name="storagepath", - name="owner", - field=models.ForeignKey( - blank=True, - default=None, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - migrations.AlterField( - model_name="tag", - name="owner", - field=models.ForeignKey( - blank=True, - default=None, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - ] diff --git a/src/documents/migrations/1052_document_transaction_id.py b/src/documents/migrations/1052_document_transaction_id.py deleted file mode 100644 index 5eb8e2ef9..000000000 --- a/src/documents/migrations/1052_document_transaction_id.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.2.15 on 2024-08-20 02:41 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1051_alter_correspondent_owner_alter_document_owner_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="transaction_id", - field=models.UUIDField(blank=True, null=True), - ), - ] diff --git a/src/documents/migrations/1053_document_page_count.py b/src/documents/migrations/1053_document_page_count.py deleted file mode 100644 index 3a8bc5d79..000000000 --- a/src/documents/migrations/1053_document_page_count.py +++ /dev/null @@ -1,67 +0,0 @@ -# Generated by Django 5.1.1 on 2024-09-28 04:42 - -from pathlib import Path - -import pikepdf -from django.conf import settings -from django.core.validators import MinValueValidator -from django.db import migrations -from django.db import models -from django.utils.termcolors import colorize as colourise - - -def source_path(self): - if self.filename: - fname = str(self.filename) - - return Path(settings.ORIGINALS_DIR / fname).resolve() - - -def add_number_of_pages_to_page_count(apps, schema_editor): - Document = apps.get_model("documents", "Document") - - if not Document.objects.all().exists(): - return - - for doc in Document.objects.filter(mime_type="application/pdf"): - print( - " {} {} {}".format( - colourise("*", fg="green"), - colourise("Calculating number of pages for", fg="white"), - colourise(doc.filename, fg="cyan"), - ), - ) - - try: - with pikepdf.Pdf.open(source_path(doc)) as pdf: - if pdf.pages is not None: - doc.page_count = len(pdf.pages) - doc.save() - except Exception as e: # pragma: no cover - print(f"Error retrieving number of pages for {doc.filename}: {e}") - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1052_document_transaction_id"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="page_count", - field=models.PositiveIntegerField( - blank=False, - help_text="The number of pages of the document.", - null=True, - unique=False, - validators=[MinValueValidator(1)], - verbose_name="page count", - db_index=False, - ), - ), - migrations.RunPython( - add_number_of_pages_to_page_count, - migrations.RunPython.noop, - ), - ] diff --git a/src/documents/migrations/1054_customfieldinstance_value_monetary_amount_and_more.py b/src/documents/migrations/1054_customfieldinstance_value_monetary_amount_and_more.py deleted file mode 100644 index 92d45de33..000000000 --- a/src/documents/migrations/1054_customfieldinstance_value_monetary_amount_and_more.py +++ /dev/null @@ -1,95 +0,0 @@ -# Generated by Django 5.1.1 on 2024-09-29 16:26 - -import django.db.models.functions.comparison -import django.db.models.functions.text -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1053_document_page_count"), - ] - - operations = [ - migrations.AddField( - model_name="customfieldinstance", - name="value_monetary_amount", - field=models.GeneratedField( - db_persist=True, - expression=models.Case( - models.When( - then=django.db.models.functions.comparison.Cast( - django.db.models.functions.text.Substr("value_monetary", 1), - output_field=models.DecimalField( - decimal_places=2, - max_digits=65, - ), - ), - value_monetary__regex="^\\d+", - ), - default=django.db.models.functions.comparison.Cast( - django.db.models.functions.text.Substr("value_monetary", 4), - output_field=models.DecimalField( - decimal_places=2, - max_digits=65, - ), - ), - output_field=models.DecimalField(decimal_places=2, max_digits=65), - ), - output_field=models.DecimalField(decimal_places=2, max_digits=65), - ), - ), - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - (26, "has correspondent in"), - (27, "does not have correspondent in"), - (28, "has document type in"), - (29, "does not have document type in"), - (30, "has storage path in"), - (31, "does not have storage path in"), - (32, "owner is"), - (33, "has owner in"), - (34, "does not have owner"), - (35, "does not have owner in"), - (36, "has custom field value"), - (37, "is shared by me"), - (38, "has custom fields"), - (39, "has custom field in"), - (40, "does not have custom field in"), - (41, "does not have custom field"), - (42, "custom fields query"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1055_alter_storagepath_path.py b/src/documents/migrations/1055_alter_storagepath_path.py deleted file mode 100644 index 1421bf824..000000000 --- a/src/documents/migrations/1055_alter_storagepath_path.py +++ /dev/null @@ -1,36 +0,0 @@ -# Generated by Django 5.1.1 on 2024-10-03 14:47 - -from django.conf import settings -from django.db import migrations -from django.db import models -from django.db import transaction -from filelock import FileLock - -from documents.templating.utils import convert_format_str_to_template_format - - -def convert_from_format_to_template(apps, schema_editor): - StoragePath = apps.get_model("documents", "StoragePath") - - with transaction.atomic(), FileLock(settings.MEDIA_LOCK): - for storage_path in StoragePath.objects.all(): - storage_path.path = convert_format_str_to_template_format(storage_path.path) - storage_path.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1054_customfieldinstance_value_monetary_amount_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="storagepath", - name="path", - field=models.TextField(verbose_name="path"), - ), - migrations.RunPython( - convert_from_format_to_template, - migrations.RunPython.noop, - ), - ] diff --git a/src/documents/migrations/1056_customfieldinstance_deleted_at_and_more.py b/src/documents/migrations/1056_customfieldinstance_deleted_at_and_more.py deleted file mode 100644 index eba1e4281..000000000 --- a/src/documents/migrations/1056_customfieldinstance_deleted_at_and_more.py +++ /dev/null @@ -1,58 +0,0 @@ -# Generated by Django 5.1.2 on 2024-10-28 01:55 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1055_alter_storagepath_path"), - ] - - operations = [ - migrations.AddField( - model_name="customfieldinstance", - name="deleted_at", - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name="customfieldinstance", - name="restored_at", - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name="customfieldinstance", - name="transaction_id", - field=models.UUIDField(blank=True, null=True), - ), - migrations.AddField( - model_name="note", - name="deleted_at", - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name="note", - name="restored_at", - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name="note", - name="transaction_id", - field=models.UUIDField(blank=True, null=True), - ), - migrations.AddField( - model_name="sharelink", - name="deleted_at", - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name="sharelink", - name="restored_at", - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name="sharelink", - name="transaction_id", - field=models.UUIDField(blank=True, null=True), - ), - ] diff --git a/src/documents/migrations/1057_paperlesstask_owner.py b/src/documents/migrations/1057_paperlesstask_owner.py deleted file mode 100644 index e9f108d3a..000000000 --- a/src/documents/migrations/1057_paperlesstask_owner.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 5.1.1 on 2024-11-04 21:56 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1056_customfieldinstance_deleted_at_and_more"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name="paperlesstask", - name="owner", - field=models.ForeignKey( - blank=True, - default=None, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="owner", - ), - ), - ] diff --git a/src/documents/migrations/1058_workflowtrigger_schedule_date_custom_field_and_more.py b/src/documents/migrations/1058_workflowtrigger_schedule_date_custom_field_and_more.py deleted file mode 100644 index 05d38578a..000000000 --- a/src/documents/migrations/1058_workflowtrigger_schedule_date_custom_field_and_more.py +++ /dev/null @@ -1,143 +0,0 @@ -# Generated by Django 5.1.1 on 2024-11-05 05:19 - -import django.core.validators -import django.db.models.deletion -import django.utils.timezone -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1057_paperlesstask_owner"), - ] - - operations = [ - migrations.AddField( - model_name="workflowtrigger", - name="schedule_date_custom_field", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.customfield", - verbose_name="schedule date custom field", - ), - ), - migrations.AddField( - model_name="workflowtrigger", - name="schedule_date_field", - field=models.CharField( - choices=[ - ("added", "Added"), - ("created", "Created"), - ("modified", "Modified"), - ("custom_field", "Custom Field"), - ], - default="added", - help_text="The field to check for a schedule trigger.", - max_length=20, - verbose_name="schedule date field", - ), - ), - migrations.AddField( - model_name="workflowtrigger", - name="schedule_is_recurring", - field=models.BooleanField( - default=False, - help_text="If the schedule should be recurring.", - verbose_name="schedule is recurring", - ), - ), - migrations.AddField( - model_name="workflowtrigger", - name="schedule_offset_days", - field=models.PositiveIntegerField( - default=0, - help_text="The number of days to offset the schedule trigger by.", - verbose_name="schedule offset days", - ), - ), - migrations.AddField( - model_name="workflowtrigger", - name="schedule_recurring_interval_days", - field=models.PositiveIntegerField( - default=1, - help_text="The number of days between recurring schedule triggers.", - validators=[django.core.validators.MinValueValidator(1)], - verbose_name="schedule recurring delay in days", - ), - ), - migrations.AlterField( - model_name="workflowtrigger", - name="type", - field=models.PositiveIntegerField( - choices=[ - (1, "Consumption Started"), - (2, "Document Added"), - (3, "Document Updated"), - (4, "Scheduled"), - ], - default=1, - verbose_name="Workflow Trigger Type", - ), - ), - migrations.CreateModel( - name="WorkflowRun", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "type", - models.PositiveIntegerField( - choices=[ - (1, "Consumption Started"), - (2, "Document Added"), - (3, "Document Updated"), - (4, "Scheduled"), - ], - null=True, - verbose_name="workflow trigger type", - ), - ), - ( - "run_at", - models.DateTimeField( - db_index=True, - default=django.utils.timezone.now, - verbose_name="date run", - ), - ), - ( - "document", - models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="workflow_runs", - to="documents.document", - verbose_name="document", - ), - ), - ( - "workflow", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="runs", - to="documents.workflow", - verbose_name="workflow", - ), - ), - ], - options={ - "verbose_name": "workflow run", - "verbose_name_plural": "workflow runs", - }, - ), - ] diff --git a/src/documents/migrations/1059_workflowactionemail_workflowactionwebhook_and_more.py b/src/documents/migrations/1059_workflowactionemail_workflowactionwebhook_and_more.py deleted file mode 100644 index d94470285..000000000 --- a/src/documents/migrations/1059_workflowactionemail_workflowactionwebhook_and_more.py +++ /dev/null @@ -1,154 +0,0 @@ -# Generated by Django 5.1.3 on 2024-11-26 04:07 - -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1058_workflowtrigger_schedule_date_custom_field_and_more"), - ] - - operations = [ - migrations.CreateModel( - name="WorkflowActionEmail", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "subject", - models.CharField( - help_text="The subject of the email, can include some placeholders, see documentation.", - max_length=256, - verbose_name="email subject", - ), - ), - ( - "body", - models.TextField( - help_text="The body (message) of the email, can include some placeholders, see documentation.", - verbose_name="email body", - ), - ), - ( - "to", - models.TextField( - help_text="The destination email addresses, comma separated.", - verbose_name="emails to", - ), - ), - ( - "include_document", - models.BooleanField( - default=False, - verbose_name="include document in email", - ), - ), - ], - ), - migrations.CreateModel( - name="WorkflowActionWebhook", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "url", - models.URLField( - help_text="The destination URL for the notification.", - verbose_name="webhook url", - ), - ), - ( - "use_params", - models.BooleanField(default=True, verbose_name="use parameters"), - ), - ( - "params", - models.JSONField( - blank=True, - help_text="The parameters to send with the webhook URL if body not used.", - null=True, - verbose_name="webhook parameters", - ), - ), - ( - "body", - models.TextField( - blank=True, - help_text="The body to send with the webhook URL if parameters not used.", - null=True, - verbose_name="webhook body", - ), - ), - ( - "headers", - models.JSONField( - blank=True, - help_text="The headers to send with the webhook URL.", - null=True, - verbose_name="webhook headers", - ), - ), - ( - "include_document", - models.BooleanField( - default=False, - verbose_name="include document in webhook", - ), - ), - ], - ), - migrations.AlterField( - model_name="workflowaction", - name="type", - field=models.PositiveIntegerField( - choices=[ - (1, "Assignment"), - (2, "Removal"), - (3, "Email"), - (4, "Webhook"), - ], - default=1, - verbose_name="Workflow Action Type", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="email", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="action", - to="documents.workflowactionemail", - verbose_name="email", - ), - ), - migrations.AddField( - model_name="workflowaction", - name="webhook", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="action", - to="documents.workflowactionwebhook", - verbose_name="webhook", - ), - ), - ] diff --git a/src/documents/migrations/1060_alter_customfieldinstance_value_select.py b/src/documents/migrations/1060_alter_customfieldinstance_value_select.py deleted file mode 100644 index 21f3f8b41..000000000 --- a/src/documents/migrations/1060_alter_customfieldinstance_value_select.py +++ /dev/null @@ -1,79 +0,0 @@ -# Generated by Django 5.1.1 on 2024-11-13 05:14 - -from django.db import migrations -from django.db import models -from django.db import transaction -from django.utils.crypto import get_random_string - - -def migrate_customfield_selects(apps, schema_editor): - """ - Migrate the custom field selects from a simple list of strings to a list of dictionaries with - label and id. Then update all instances of the custom field to use the new format. - """ - CustomFieldInstance = apps.get_model("documents", "CustomFieldInstance") - CustomField = apps.get_model("documents", "CustomField") - - with transaction.atomic(): - for custom_field in CustomField.objects.filter( - data_type="select", - ): # CustomField.FieldDataType.SELECT - old_select_options = custom_field.extra_data["select_options"] - custom_field.extra_data["select_options"] = [ - {"id": get_random_string(16), "label": value} - for value in old_select_options - ] - custom_field.save() - - for instance in CustomFieldInstance.objects.filter(field=custom_field): - if instance.value_select: - instance.value_select = custom_field.extra_data["select_options"][ - int(instance.value_select) - ]["id"] - instance.save() - - -def reverse_migrate_customfield_selects(apps, schema_editor): - """ - Reverse the migration of the custom field selects from a list of dictionaries with label and id - to a simple list of strings. Then update all instances of the custom field to use the old format, - which is just the index of the selected option. - """ - CustomFieldInstance = apps.get_model("documents", "CustomFieldInstance") - CustomField = apps.get_model("documents", "CustomField") - - with transaction.atomic(): - for custom_field in CustomField.objects.all(): - if custom_field.data_type == "select": # CustomField.FieldDataType.SELECT - old_select_options = custom_field.extra_data["select_options"] - custom_field.extra_data["select_options"] = [ - option["label"] - for option in custom_field.extra_data["select_options"] - ] - custom_field.save() - - for instance in CustomFieldInstance.objects.filter(field=custom_field): - instance.value_select = next( - index - for index, option in enumerate(old_select_options) - if option.get("id") == instance.value_select - ) - instance.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1059_workflowactionemail_workflowactionwebhook_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="customfieldinstance", - name="value_select", - field=models.CharField(max_length=16, null=True), - ), - migrations.RunPython( - migrate_customfield_selects, - reverse_migrate_customfield_selects, - ), - ] diff --git a/src/documents/migrations/1061_workflowactionwebhook_as_json.py b/src/documents/migrations/1061_workflowactionwebhook_as_json.py deleted file mode 100644 index f1945cfc1..000000000 --- a/src/documents/migrations/1061_workflowactionwebhook_as_json.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.1.4 on 2025-01-18 19:35 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1060_alter_customfieldinstance_value_select"), - ] - - operations = [ - migrations.AddField( - model_name="workflowactionwebhook", - name="as_json", - field=models.BooleanField(default=False, verbose_name="send as JSON"), - ), - ] diff --git a/src/documents/migrations/1062_alter_savedviewfilterrule_rule_type.py b/src/documents/migrations/1062_alter_savedviewfilterrule_rule_type.py deleted file mode 100644 index c5a6bb90e..000000000 --- a/src/documents/migrations/1062_alter_savedviewfilterrule_rule_type.py +++ /dev/null @@ -1,70 +0,0 @@ -# Generated by Django 5.1.4 on 2025-02-06 05:54 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1061_workflowactionwebhook_as_json"), - ] - - operations = [ - migrations.AlterField( - model_name="savedviewfilterrule", - name="rule_type", - field=models.PositiveIntegerField( - choices=[ - (0, "title contains"), - (1, "content contains"), - (2, "ASN is"), - (3, "correspondent is"), - (4, "document type is"), - (5, "is in inbox"), - (6, "has tag"), - (7, "has any tag"), - (8, "created before"), - (9, "created after"), - (10, "created year is"), - (11, "created month is"), - (12, "created day is"), - (13, "added before"), - (14, "added after"), - (15, "modified before"), - (16, "modified after"), - (17, "does not have tag"), - (18, "does not have ASN"), - (19, "title or content contains"), - (20, "fulltext query"), - (21, "more like this"), - (22, "has tags in"), - (23, "ASN greater than"), - (24, "ASN less than"), - (25, "storage path is"), - (26, "has correspondent in"), - (27, "does not have correspondent in"), - (28, "has document type in"), - (29, "does not have document type in"), - (30, "has storage path in"), - (31, "does not have storage path in"), - (32, "owner is"), - (33, "has owner in"), - (34, "does not have owner"), - (35, "does not have owner in"), - (36, "has custom field value"), - (37, "is shared by me"), - (38, "has custom fields"), - (39, "has custom field in"), - (40, "does not have custom field in"), - (41, "does not have custom field"), - (42, "custom fields query"), - (43, "created to"), - (44, "created from"), - (45, "added to"), - (46, "added from"), - (47, "mime type is"), - ], - verbose_name="rule type", - ), - ), - ] diff --git a/src/documents/migrations/1063_paperlesstask_type_alter_paperlesstask_task_name_and_more.py b/src/documents/migrations/1063_paperlesstask_type_alter_paperlesstask_task_name_and_more.py deleted file mode 100644 index aeedbd6a0..000000000 --- a/src/documents/migrations/1063_paperlesstask_type_alter_paperlesstask_task_name_and_more.py +++ /dev/null @@ -1,92 +0,0 @@ -# Generated by Django 5.1.6 on 2025-02-21 16:34 - -import multiselectfield.db.fields -from django.db import migrations -from django.db import models - - -# WebUI source was added, so all existing APIUpload sources should be updated to include WebUI -def update_workflow_sources(apps, schema_editor): - WorkflowTrigger = apps.get_model("documents", "WorkflowTrigger") - for trigger in WorkflowTrigger.objects.all(): - sources = list(trigger.sources) - if 2 in sources: - sources.append(4) - trigger.sources = sources - trigger.save() - - -def make_existing_tasks_consume_auto(apps, schema_editor): - PaperlessTask = apps.get_model("documents", "PaperlessTask") - PaperlessTask.objects.all().update(type="auto_task", task_name="consume_file") - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1062_alter_savedviewfilterrule_rule_type"), - ] - - operations = [ - migrations.AddField( - model_name="paperlesstask", - name="type", - field=models.CharField( - choices=[ - ("auto_task", "Auto Task"), - ("scheduled_task", "Scheduled Task"), - ("manual_task", "Manual Task"), - ], - default="auto_task", - help_text="The type of task that was run", - max_length=30, - verbose_name="Task Type", - ), - ), - migrations.AlterField( - model_name="paperlesstask", - name="task_name", - field=models.CharField( - choices=[ - ("consume_file", "Consume File"), - ("train_classifier", "Train Classifier"), - ("check_sanity", "Check Sanity"), - ("index_optimize", "Index Optimize"), - ], - help_text="Name of the task that was run", - max_length=255, - null=True, - verbose_name="Task Name", - ), - ), - migrations.RunPython( - code=make_existing_tasks_consume_auto, - reverse_code=migrations.RunPython.noop, - ), - migrations.AlterField( - model_name="workflowactionwebhook", - name="url", - field=models.CharField( - help_text="The destination URL for the notification.", - max_length=256, - verbose_name="webhook url", - ), - ), - migrations.AlterField( - model_name="workflowtrigger", - name="sources", - field=multiselectfield.db.fields.MultiSelectField( - choices=[ - (1, "Consume Folder"), - (2, "Api Upload"), - (3, "Mail Fetch"), - (4, "Web UI"), - ], - default="1,2,3,4", - max_length=7, - ), - ), - migrations.RunPython( - code=update_workflow_sources, - reverse_code=migrations.RunPython.noop, - ), - ] diff --git a/src/documents/migrations/1064_delete_log.py b/src/documents/migrations/1064_delete_log.py deleted file mode 100644 index ec0830a91..000000000 --- a/src/documents/migrations/1064_delete_log.py +++ /dev/null @@ -1,15 +0,0 @@ -# Generated by Django 5.1.6 on 2025-02-28 15:19 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1063_paperlesstask_type_alter_paperlesstask_task_name_and_more"), - ] - - operations = [ - migrations.DeleteModel( - name="Log", - ), - ] diff --git a/src/documents/migrations/1065_workflowaction_assign_custom_fields_values.py b/src/documents/migrations/1065_workflowaction_assign_custom_fields_values.py deleted file mode 100644 index 35fae02be..000000000 --- a/src/documents/migrations/1065_workflowaction_assign_custom_fields_values.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 5.1.6 on 2025-03-01 18:10 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1064_delete_log"), - ] - - operations = [ - migrations.AddField( - model_name="workflowaction", - name="assign_custom_fields_values", - field=models.JSONField( - blank=True, - help_text="Optional values to assign to the custom fields.", - null=True, - verbose_name="custom field values", - default=dict, - ), - ), - ] diff --git a/src/documents/migrations/1066_alter_workflowtrigger_schedule_offset_days.py b/src/documents/migrations/1066_alter_workflowtrigger_schedule_offset_days.py deleted file mode 100644 index eaf23ad64..000000000 --- a/src/documents/migrations/1066_alter_workflowtrigger_schedule_offset_days.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 5.1.7 on 2025-04-15 19:18 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1065_workflowaction_assign_custom_fields_values"), - ] - - operations = [ - migrations.AlterField( - model_name="workflowtrigger", - name="schedule_offset_days", - field=models.IntegerField( - default=0, - help_text="The number of days to offset the schedule trigger by.", - verbose_name="schedule offset days", - ), - ), - ] diff --git a/src/documents/migrations/1067_alter_document_created.py b/src/documents/migrations/1067_alter_document_created.py deleted file mode 100644 index 0f96bce3d..000000000 --- a/src/documents/migrations/1067_alter_document_created.py +++ /dev/null @@ -1,76 +0,0 @@ -# Generated by Django 5.1.7 on 2025-04-04 01:08 - - -import datetime - -from django.db import migrations -from django.db import models -from django.utils.timezone import localtime - - -def migrate_date(apps, schema_editor): - Document = apps.get_model("documents", "Document") - - # Batch to avoid loading all objects into memory at once, - # which would be problematic for large datasets. - batch_size = 500 - updates = [] - total_updated = 0 - total_checked = 0 - - for doc in Document.objects.only("id", "created").iterator(chunk_size=batch_size): - total_checked += 1 - if doc.created: - doc.created_date = localtime(doc.created).date() - updates.append(doc) - - if len(updates) >= batch_size: - Document.objects.bulk_update(updates, ["created_date"]) - total_updated += len(updates) - print( - f"[1067_alter_document_created] {total_updated} of {total_checked} processed...", - ) - updates.clear() - - if updates: - Document.objects.bulk_update(updates, ["created_date"]) - total_updated += len(updates) - print( - f"[1067_alter_document_created] {total_updated} of {total_checked} processed...", - ) - - if total_checked > 0: - print(f"[1067_alter_document_created] completed for {total_checked} documents.") - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1066_alter_workflowtrigger_schedule_offset_days"), - ] - - operations = [ - migrations.AddField( - model_name="document", - name="created_date", - field=models.DateField(null=True), - ), - migrations.RunPython(migrate_date, reverse_code=migrations.RunPython.noop), - migrations.RemoveField( - model_name="document", - name="created", - ), - migrations.RenameField( - model_name="document", - old_name="created_date", - new_name="created", - ), - migrations.AlterField( - model_name="document", - name="created", - field=models.DateField( - db_index=True, - default=datetime.datetime.today, - verbose_name="created", - ), - ), - ] diff --git a/src/documents/migrations/1068_alter_document_created.py b/src/documents/migrations/1068_alter_document_created.py deleted file mode 100644 index b673f6584..000000000 --- a/src/documents/migrations/1068_alter_document_created.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 5.1.8 on 2025-05-23 05:50 - -import datetime - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1067_alter_document_created"), - ] - - operations = [ - migrations.AlterField( - model_name="document", - name="created", - field=models.DateField( - db_index=True, - default=datetime.date.today, - verbose_name="created", - ), - ), - ] diff --git a/src/documents/migrations/1069_workflowtrigger_filter_has_storage_path_and_more.py b/src/documents/migrations/1069_workflowtrigger_filter_has_storage_path_and_more.py deleted file mode 100644 index 47db2fd91..000000000 --- a/src/documents/migrations/1069_workflowtrigger_filter_has_storage_path_and_more.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 5.2.6 on 2025-09-11 17:29 - -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1068_alter_document_created"), - ] - - operations = [ - migrations.AddField( - model_name="workflowtrigger", - name="filter_has_storage_path", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="documents.storagepath", - verbose_name="has this storage path", - ), - ), - migrations.AlterField( - model_name="workflowaction", - name="assign_title", - field=models.TextField( - blank=True, - help_text="Assign a document title, must be a Jinja2 template, see documentation.", - null=True, - verbose_name="assign title", - ), - ), - ] diff --git a/src/documents/migrations/1070_customfieldinstance_value_long_text_and_more.py b/src/documents/migrations/1070_customfieldinstance_value_long_text_and_more.py deleted file mode 100644 index 69c77d29a..000000000 --- a/src/documents/migrations/1070_customfieldinstance_value_long_text_and_more.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 5.2.6 on 2025-09-13 17:11 - -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1069_workflowtrigger_filter_has_storage_path_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="customfieldinstance", - name="value_long_text", - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name="customfield", - name="data_type", - field=models.CharField( - choices=[ - ("string", "String"), - ("url", "URL"), - ("date", "Date"), - ("boolean", "Boolean"), - ("integer", "Integer"), - ("float", "Float"), - ("monetary", "Monetary"), - ("documentlink", "Document Link"), - ("select", "Select"), - ("longtext", "Long Text"), - ], - editable=False, - max_length=50, - verbose_name="data type", - ), - ), - ] diff --git a/src/documents/migrations/1071_tag_tn_ancestors_count_tag_tn_ancestors_pks_and_more.py b/src/documents/migrations/1071_tag_tn_ancestors_count_tag_tn_ancestors_pks_and_more.py deleted file mode 100644 index 3e097620e..000000000 --- a/src/documents/migrations/1071_tag_tn_ancestors_count_tag_tn_ancestors_pks_and_more.py +++ /dev/null @@ -1,159 +0,0 @@ -# Generated by Django 5.2.6 on 2025-09-12 18:42 - -import django.core.validators -import django.db.models.deletion -from django.db import migrations -from django.db import models - - -class Migration(migrations.Migration): - dependencies = [ - ("documents", "1070_customfieldinstance_value_long_text_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="tag", - name="tn_ancestors_count", - field=models.PositiveIntegerField( - default=0, - editable=False, - verbose_name="Ancestors count", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_ancestors_pks", - field=models.TextField( - blank=True, - default="", - editable=False, - verbose_name="Ancestors pks", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_children_count", - field=models.PositiveIntegerField( - default=0, - editable=False, - verbose_name="Children count", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_children_pks", - field=models.TextField( - blank=True, - default="", - editable=False, - verbose_name="Children pks", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_depth", - field=models.PositiveIntegerField( - default=0, - editable=False, - validators=[ - django.core.validators.MinValueValidator(0), - django.core.validators.MaxValueValidator(10), - ], - verbose_name="Depth", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_descendants_count", - field=models.PositiveIntegerField( - default=0, - editable=False, - verbose_name="Descendants count", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_descendants_pks", - field=models.TextField( - blank=True, - default="", - editable=False, - verbose_name="Descendants pks", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_index", - field=models.PositiveIntegerField( - default=0, - editable=False, - verbose_name="Index", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_level", - field=models.PositiveIntegerField( - default=1, - editable=False, - validators=[ - django.core.validators.MinValueValidator(1), - django.core.validators.MaxValueValidator(10), - ], - verbose_name="Level", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_order", - field=models.PositiveIntegerField( - default=0, - editable=False, - verbose_name="Order", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_parent", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="tn_children", - to="documents.tag", - verbose_name="Parent", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_priority", - field=models.PositiveIntegerField( - default=0, - validators=[ - django.core.validators.MinValueValidator(0), - django.core.validators.MaxValueValidator(9999999999), - ], - verbose_name="Priority", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_siblings_count", - field=models.PositiveIntegerField( - default=0, - editable=False, - verbose_name="Siblings count", - ), - ), - migrations.AddField( - model_name="tag", - name="tn_siblings_pks", - field=models.TextField( - blank=True, - default="", - editable=False, - verbose_name="Siblings pks", - ), - ), - ] diff --git a/src/documents/models.py b/src/documents/models.py index 12216194d..c3b748656 100644 --- a/src/documents/models.py +++ b/src/documents/models.py @@ -20,7 +20,9 @@ if settings.AUDIT_LOG_ENABLED: from auditlog.registry import auditlog from django.db.models import Case +from django.db.models import PositiveIntegerField from django.db.models.functions import Cast +from django.db.models.functions import Length from django.db.models.functions import Substr from django_softdelete.models import SoftDeleteModel @@ -116,7 +118,7 @@ class Tag(MatchingModel, TreeNodeModel): verbose_name = _("tag") verbose_name_plural = _("tags") - def clean(self): + def clean(self) -> None: # Prevent self-parenting and assigning a descendant as parent parent = self.get_parent() if parent == self: @@ -132,7 +134,7 @@ class Tag(MatchingModel, TreeNodeModel): height = 0 if self.pk is None else self.get_depth() deepest_new_depth = (new_parent_depth + 1) + height if deepest_new_depth > self.MAX_NESTING_DEPTH: - raise ValidationError(_("Maximum nesting depth exceeded.")) + raise ValidationError({"parent": _("Maximum nesting depth exceeded.")}) return super().clean() @@ -154,13 +156,6 @@ class StoragePath(MatchingModel): class Document(SoftDeleteModel, ModelWithOwner): - STORAGE_TYPE_UNENCRYPTED = "unencrypted" - STORAGE_TYPE_GPG = "gpg" - STORAGE_TYPES = ( - (STORAGE_TYPE_UNENCRYPTED, _("Unencrypted")), - (STORAGE_TYPE_GPG, _("Encrypted with GNU Privacy Guard")), - ) - correspondent = models.ForeignKey( Correspondent, blank=True, @@ -199,6 +194,15 @@ class Document(SoftDeleteModel, ModelWithOwner): ), ) + content_length = models.GeneratedField( + expression=Length("content"), + output_field=PositiveIntegerField(default=0), + db_persist=True, + null=False, + serialize=False, + help_text="Length of the content field in characters. Automatically maintained by the database for faster statistics computation.", + ) + mime_type = models.CharField(_("mime type"), max_length=256, editable=False) tags = models.ManyToManyField( @@ -212,7 +216,6 @@ class Document(SoftDeleteModel, ModelWithOwner): _("checksum"), max_length=32, editable=False, - unique=True, help_text=_("The checksum of the original document."), ) @@ -250,14 +253,6 @@ class Document(SoftDeleteModel, ModelWithOwner): db_index=True, ) - storage_type = models.CharField( - _("storage type"), - max_length=11, - choices=STORAGE_TYPES, - default=STORAGE_TYPE_UNENCRYPTED, - editable=False, - ) - added = models.DateTimeField( _("added"), default=timezone.now, @@ -362,12 +357,7 @@ class Document(SoftDeleteModel, ModelWithOwner): @property def source_path(self) -> Path: - if self.filename: - fname = str(self.filename) - else: - fname = f"{self.pk:07}{self.file_type}" - if self.storage_type == self.STORAGE_TYPE_GPG: - fname += ".gpg" # pragma: no cover + fname = str(self.filename) if self.filename else f"{self.pk:07}{self.file_type}" return (settings.ORIGINALS_DIR / Path(fname)).resolve() @@ -416,8 +406,6 @@ class Document(SoftDeleteModel, ModelWithOwner): @property def thumbnail_path(self) -> Path: webp_file_name = f"{self.pk:07}.webp" - if self.storage_type == self.STORAGE_TYPE_GPG: - webp_file_name += ".gpg" webp_file_path = settings.THUMBNAIL_DIR / Path(webp_file_name) @@ -431,7 +419,7 @@ class Document(SoftDeleteModel, ModelWithOwner): def created_date(self): return self.created - def add_nested_tags(self, tags): + def add_nested_tags(self, tags) -> None: tag_ids = set() for tag in tags: tag_ids.add(tag.id) @@ -607,6 +595,7 @@ class PaperlessTask(ModelWithOwner): TRAIN_CLASSIFIER = ("train_classifier", _("Train Classifier")) CHECK_SANITY = ("check_sanity", _("Check Sanity")) INDEX_OPTIMIZE = ("index_optimize", _("Index Optimize")) + LLMINDEX_UPDATE = ("llmindex_update", _("LLM Index Update")) task_id = models.CharField( max_length=255, @@ -786,6 +775,114 @@ class ShareLink(SoftDeleteModel): return f"Share Link for {self.document.title}" +class ShareLinkBundle(models.Model): + class Status(models.TextChoices): + PENDING = ("pending", _("Pending")) + PROCESSING = ("processing", _("Processing")) + READY = ("ready", _("Ready")) + FAILED = ("failed", _("Failed")) + + created = models.DateTimeField( + _("created"), + default=timezone.now, + db_index=True, + blank=True, + editable=False, + ) + + expiration = models.DateTimeField( + _("expiration"), + blank=True, + null=True, + db_index=True, + ) + + slug = models.SlugField( + _("slug"), + db_index=True, + unique=True, + blank=True, + editable=False, + ) + + owner = models.ForeignKey( + User, + blank=True, + null=True, + related_name="share_link_bundles", + on_delete=models.SET_NULL, + verbose_name=_("owner"), + ) + + file_version = models.CharField( + max_length=50, + choices=ShareLink.FileVersion.choices, + default=ShareLink.FileVersion.ARCHIVE, + ) + + status = models.CharField( + max_length=50, + choices=Status.choices, + default=Status.PENDING, + ) + + size_bytes = models.PositiveIntegerField( + _("size (bytes)"), + blank=True, + null=True, + ) + + last_error = models.JSONField( + _("last error"), + blank=True, + null=True, + default=None, + ) + + file_path = models.CharField( + _("file path"), + max_length=512, + blank=True, + ) + + built_at = models.DateTimeField( + _("built at"), + null=True, + blank=True, + ) + + documents = models.ManyToManyField( + "documents.Document", + related_name="share_link_bundles", + verbose_name=_("documents"), + ) + + class Meta: + ordering = ("-created",) + verbose_name = _("share link bundle") + verbose_name_plural = _("share link bundles") + + def __str__(self): + return _("Share link bundle %(slug)s") % {"slug": self.slug} + + @property + def absolute_file_path(self) -> Path | None: + if not self.file_path: + return None + return (settings.SHARE_LINK_BUNDLE_DIR / Path(self.file_path)).resolve() + + def remove_file(self) -> None: + if self.absolute_file_path is not None and self.absolute_file_path.exists(): + try: + self.absolute_file_path.unlink() + except OSError: + pass + + def delete(self, using=None, *, keep_parents=False): + self.remove_file() + return super().delete(using=using, keep_parents=keep_parents) + + class CustomField(models.Model): """ Defines the name and type of a custom field @@ -976,7 +1073,7 @@ if settings.AUDIT_LOG_ENABLED: auditlog.register( Document, m2m_fields={"tags"}, - exclude_fields=["modified"], + exclude_fields=["content_length", "modified"], ) auditlog.register(Correspondent) auditlog.register(Tag) @@ -1074,6 +1171,20 @@ class WorkflowTrigger(models.Model): verbose_name=_("has these tag(s)"), ) + filter_has_all_tags = models.ManyToManyField( + Tag, + blank=True, + related_name="workflowtriggers_has_all", + verbose_name=_("has all of these tag(s)"), + ) + + filter_has_not_tags = models.ManyToManyField( + Tag, + blank=True, + related_name="workflowtriggers_has_not", + verbose_name=_("does not have these tag(s)"), + ) + filter_has_document_type = models.ForeignKey( DocumentType, null=True, @@ -1082,6 +1193,20 @@ class WorkflowTrigger(models.Model): verbose_name=_("has this document type"), ) + filter_has_any_document_types = models.ManyToManyField( + DocumentType, + blank=True, + related_name="workflowtriggers_has_any_document_type", + verbose_name=_("has one of these document types"), + ) + + filter_has_not_document_types = models.ManyToManyField( + DocumentType, + blank=True, + related_name="workflowtriggers_has_not_document_type", + verbose_name=_("does not have these document type(s)"), + ) + filter_has_correspondent = models.ForeignKey( Correspondent, null=True, @@ -1090,6 +1215,20 @@ class WorkflowTrigger(models.Model): verbose_name=_("has this correspondent"), ) + filter_has_not_correspondents = models.ManyToManyField( + Correspondent, + blank=True, + related_name="workflowtriggers_has_not_correspondent", + verbose_name=_("does not have these correspondent(s)"), + ) + + filter_has_any_correspondents = models.ManyToManyField( + Correspondent, + blank=True, + related_name="workflowtriggers_has_any_correspondent", + verbose_name=_("has one of these correspondents"), + ) + filter_has_storage_path = models.ForeignKey( StoragePath, null=True, @@ -1098,6 +1237,27 @@ class WorkflowTrigger(models.Model): verbose_name=_("has this storage path"), ) + filter_has_any_storage_paths = models.ManyToManyField( + StoragePath, + blank=True, + related_name="workflowtriggers_has_any_storage_path", + verbose_name=_("has one of these storage paths"), + ) + + filter_has_not_storage_paths = models.ManyToManyField( + StoragePath, + blank=True, + related_name="workflowtriggers_has_not_storage_path", + verbose_name=_("does not have these storage path(s)"), + ) + + filter_custom_field_query = models.TextField( + _("filter custom field query"), + null=True, + blank=True, + help_text=_("JSON-encoded custom field query expression."), + ) + schedule_offset_days = models.IntegerField( _("schedule offset days"), default=0, @@ -1254,6 +1414,10 @@ class WorkflowAction(models.Model): 4, _("Webhook"), ) + PASSWORD_REMOVAL = ( + 5, + _("Password removal"), + ) type = models.PositiveIntegerField( _("Workflow Action Type"), @@ -1261,6 +1425,8 @@ class WorkflowAction(models.Model): default=WorkflowActionType.ASSIGNMENT, ) + order = models.PositiveIntegerField(_("order"), default=0) + assign_title = models.TextField( _("assign title"), null=True, @@ -1481,6 +1647,15 @@ class WorkflowAction(models.Model): verbose_name=_("webhook"), ) + passwords = models.JSONField( + _("passwords"), + null=True, + blank=True, + help_text=_( + "Passwords to try when removing PDF protection. Separate with commas or new lines.", + ), + ) + class Meta: verbose_name = _("workflow action") verbose_name_plural = _("workflow actions") @@ -1514,7 +1689,7 @@ class Workflow(models.Model): return f"Workflow: {self.name}" -class WorkflowRun(models.Model): +class WorkflowRun(SoftDeleteModel): workflow = models.ForeignKey( Workflow, on_delete=models.CASCADE, diff --git a/src/documents/parsers.py b/src/documents/parsers.py index f6417e285..372cf0491 100644 --- a/src/documents/parsers.py +++ b/src/documents/parsers.py @@ -9,22 +9,17 @@ import subprocess import tempfile from functools import lru_cache from pathlib import Path -from re import Match from typing import TYPE_CHECKING from django.conf import settings -from django.utils import timezone from documents.loggers import LoggingMixin from documents.signals import document_consumer_declaration from documents.utils import copy_file_with_basic_stats from documents.utils import run_subprocess -from paperless.config import OcrConfig -from paperless.utils import ocr_to_dateparser_languages if TYPE_CHECKING: import datetime - from collections.abc import Iterator # This regular expression will try to find dates in the document at # hand and will match the following formats: @@ -155,7 +150,15 @@ def run_convert( ) -> None: environment = os.environ.copy() if settings.CONVERT_MEMORY_LIMIT: + # MAGICK_MEMORY_LIMIT sets the maximum amount of RAM the pixel cache can use. + # MAGICK_MAP_LIMIT sets the maximum amount of memory-mapped I/O allowed. + # + # For large-format documents ImageMagick will hit the RAM limit and + # immediately try to "map" the remaining data. If MAGICK_MAP_LIMIT isn't + # also set, the process may trigger an OOM kill because the default + # system/policy map limit is often too restrictive for these massive bitmaps. environment["MAGICK_MEMORY_LIMIT"] = settings.CONVERT_MEMORY_LIMIT + environment["MAGICK_MAP_LIMIT"] = settings.CONVERT_MEMORY_LIMIT if settings.CONVERT_TMPDIR: environment["MAGICK_TMPDIR"] = settings.CONVERT_TMPDIR @@ -259,75 +262,6 @@ def make_thumbnail_from_pdf(in_path: Path, temp_dir: Path, logging_group=None) - return out_path -def parse_date(filename, text) -> datetime.datetime | None: - return next(parse_date_generator(filename, text), None) - - -def parse_date_generator(filename, text) -> Iterator[datetime.datetime]: - """ - Returns the date of the document. - """ - - def __parser(ds: str, date_order: str) -> datetime.datetime: - """ - Call dateparser.parse with a particular date ordering - """ - import dateparser - - ocr_config = OcrConfig() - languages = settings.DATE_PARSER_LANGUAGES or ocr_to_dateparser_languages( - ocr_config.language, - ) - - return dateparser.parse( - ds, - settings={ - "DATE_ORDER": date_order, - "PREFER_DAY_OF_MONTH": "first", - "RETURN_AS_TIMEZONE_AWARE": True, - "TIMEZONE": settings.TIME_ZONE, - }, - locales=languages, - ) - - def __filter(date: datetime.datetime) -> datetime.datetime | None: - if ( - date is not None - and date.year > 1900 - and date <= timezone.now() - and date.date() not in settings.IGNORE_DATES - ): - return date - return None - - def __process_match( - match: Match[str], - date_order: str, - ) -> datetime.datetime | None: - date_string = match.group(0) - - try: - date = __parser(date_string, date_order) - except Exception: - # Skip all matches that do not parse to a proper date - date = None - - return __filter(date) - - def __process_content(content: str, date_order: str) -> Iterator[datetime.datetime]: - for m in re.finditer(DATE_REGEX, content): - date = __process_match(m, date_order) - if date is not None: - yield date - - # if filename date parsing is enabled, search there first: - if settings.FILENAME_DATE_ORDER: - yield from __process_content(filename, settings.FILENAME_DATE_ORDER) - - # Iterate through all regex matches in text and try to parse the date - yield from __process_content(text, settings.DATE_ORDER) - - class ParseError(Exception): pass @@ -340,7 +274,7 @@ class DocumentParser(LoggingMixin): logging_name = "paperless.parsing" - def __init__(self, logging_group, progress_callback=None): + def __init__(self, logging_group, progress_callback=None) -> None: super().__init__() self.renew_logging_group() self.logging_group = logging_group @@ -355,7 +289,7 @@ class DocumentParser(LoggingMixin): self.date: datetime.datetime | None = None self.progress_callback = progress_callback - def progress(self, current_progress, max_progress): + def progress(self, current_progress, max_progress) -> None: if self.progress_callback: self.progress_callback(current_progress, max_progress) @@ -380,7 +314,7 @@ class DocumentParser(LoggingMixin): def extract_metadata(self, document_path, mime_type): return [] - def get_page_count(self, document_path, mime_type): + def get_page_count(self, document_path, mime_type) -> None: return None def parse(self, document_path, mime_type, file_name=None): @@ -401,6 +335,6 @@ class DocumentParser(LoggingMixin): def get_date(self) -> datetime.datetime | None: return self.date - def cleanup(self): + def cleanup(self) -> None: self.log.debug(f"Deleting directory {self.tempdir}") shutil.rmtree(self.tempdir) diff --git a/src/documents/permissions.py b/src/documents/permissions.py index c5de34607..a47762c46 100644 --- a/src/documents/permissions.py +++ b/src/documents/permissions.py @@ -2,6 +2,7 @@ from django.contrib.auth.models import Group from django.contrib.auth.models import Permission from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType +from django.db.models import Q from django.db.models import QuerySet from guardian.core import ObjectPermissionChecker from guardian.models import GroupObjectPermission @@ -12,6 +13,8 @@ from guardian.shortcuts import remove_perm from rest_framework.permissions import BasePermission from rest_framework.permissions import DjangoObjectPermissions +from documents.models import Document + class PaperlessObjectPermissions(DjangoObjectPermissions): """ @@ -58,21 +61,27 @@ def get_groups_with_only_permission(obj, codename): return Group.objects.filter(id__in=group_object_perm_group_ids).distinct() -def set_permissions_for_object(permissions: list[str], object, *, merge: bool = False): +def set_permissions_for_object( + permissions: dict, + object, + *, + merge: bool = False, +) -> None: """ - Set permissions for an object. The permissions are given as a list of strings - in the format "action_modelname", e.g. "view_document". + Set permissions for an object. The permissions are given as a mapping of actions + to a dict of user / group id lists, e.g. + {"view": {"users": [1], "groups": [2]}, "change": {"users": [], "groups": []}}. If merge is True, the permissions are merged with the existing permissions and no users or groups are removed. If False, the permissions are set to exactly the given list of users and groups. """ - for action in permissions: + for action, entry in permissions.items(): permission = f"{action}_{object.__class__.__name__.lower()}" - if "users" in permissions[action]: + if "users" in entry: # users - users_to_add = User.objects.filter(id__in=permissions[action]["users"]) + users_to_add = User.objects.filter(id__in=entry["users"]) users_to_remove = ( get_users_with_perms( object, @@ -82,12 +91,12 @@ def set_permissions_for_object(permissions: list[str], object, *, merge: bool = if not merge else User.objects.none() ) - if len(users_to_add) > 0 and len(users_to_remove) > 0: + if users_to_add.exists() and users_to_remove.exists(): users_to_remove = users_to_remove.exclude(id__in=users_to_add) - if len(users_to_remove) > 0: + if users_to_remove.exists(): for user in users_to_remove: remove_perm(permission, user, object) - if len(users_to_add) > 0: + if users_to_add.exists(): for user in users_to_add: assign_perm(permission, user, object) if action == "change": @@ -97,9 +106,9 @@ def set_permissions_for_object(permissions: list[str], object, *, merge: bool = user, object, ) - if "groups" in permissions[action]: + if "groups" in entry: # groups - groups_to_add = Group.objects.filter(id__in=permissions[action]["groups"]) + groups_to_add = Group.objects.filter(id__in=entry["groups"]) groups_to_remove = ( get_groups_with_only_permission( object, @@ -108,12 +117,12 @@ def set_permissions_for_object(permissions: list[str], object, *, merge: bool = if not merge else Group.objects.none() ) - if len(groups_to_add) > 0 and len(groups_to_remove) > 0: + if groups_to_add.exists() and groups_to_remove.exists(): groups_to_remove = groups_to_remove.exclude(id__in=groups_to_add) - if len(groups_to_remove) > 0: + if groups_to_remove.exists(): for group in groups_to_remove: remove_perm(permission, group, object) - if len(groups_to_add) > 0: + if groups_to_add.exists(): for group in groups_to_add: assign_perm(permission, group, object) if action == "change": @@ -125,13 +134,48 @@ def set_permissions_for_object(permissions: list[str], object, *, merge: bool = ) -def get_objects_for_user_owner_aware(user, perms, Model) -> QuerySet: - objects_owned = Model.objects.filter(owner=user) - objects_unowned = Model.objects.filter(owner__isnull=True) +def get_document_count_filter_for_user(user): + """ + Return the Q object used to filter document counts for the given user. + """ + + if user is None or not getattr(user, "is_authenticated", False): + return Q(documents__deleted_at__isnull=True, documents__owner__isnull=True) + if getattr(user, "is_superuser", False): + return Q(documents__deleted_at__isnull=True) + return Q( + documents__deleted_at__isnull=True, + documents__id__in=get_objects_for_user_owner_aware( + user, + "documents.view_document", + Document, + ).values_list("id", flat=True), + ) + + +def get_objects_for_user_owner_aware( + user, + perms, + Model, + *, + include_deleted=False, +) -> QuerySet: + """ + Returns objects the user owns, are unowned, or has explicit perms. + When include_deleted is True, soft-deleted items are also included. + """ + manager = ( + Model.global_objects + if include_deleted and hasattr(Model, "global_objects") + else Model.objects + ) + + objects_owned = manager.filter(owner=user) + objects_unowned = manager.filter(owner__isnull=True) objects_with_perms = get_objects_for_user( user=user, perms=perms, - klass=Model, + klass=manager.all(), accept_global_perms=False, ) return objects_owned | objects_unowned | objects_with_perms @@ -142,6 +186,24 @@ def has_perms_owner_aware(user, perms, obj): return obj.owner is None or obj.owner == user or checker.has_perm(perms, obj) +class ViewDocumentsPermissions(BasePermission): + """ + Permissions class that checks for model permissions for only viewing Documents. + """ + + perms_map = { + "OPTIONS": ["documents.view_document"], + "GET": ["documents.view_document"], + "POST": ["documents.view_document"], + } + + def has_permission(self, request, view): + if not request.user or (not request.user.is_authenticated): # pragma: no cover + return False + + return request.user.has_perms(self.perms_map.get(request.method, [])) + + class PaperlessNotePermissions(BasePermission): """ Permissions class that checks for model permissions for Notes. @@ -161,3 +223,21 @@ class PaperlessNotePermissions(BasePermission): perms = self.perms_map[request.method] return request.user.has_perms(perms) + + +class AcknowledgeTasksPermissions(BasePermission): + """ + Permissions class that checks for model permissions for acknowledging tasks. + """ + + perms_map = { + "POST": ["documents.change_paperlesstask"], + } + + def has_permission(self, request, view): + if not request.user or not request.user.is_authenticated: # pragma: no cover + return False + + perms = self.perms_map.get(request.method, []) + + return request.user.has_perms(perms) diff --git a/src/documents/plugins/date_parsing/__init__.py b/src/documents/plugins/date_parsing/__init__.py new file mode 100644 index 000000000..2eec1e242 --- /dev/null +++ b/src/documents/plugins/date_parsing/__init__.py @@ -0,0 +1,101 @@ +import logging +from functools import lru_cache +from importlib.metadata import EntryPoint +from importlib.metadata import entry_points +from typing import Final + +from django.conf import settings +from django.utils import timezone + +from documents.plugins.date_parsing.base import DateParserConfig +from documents.plugins.date_parsing.base import DateParserPluginBase +from documents.plugins.date_parsing.regex_parser import RegexDateParserPlugin +from paperless.config import OcrConfig +from paperless.utils import ocr_to_dateparser_languages + +logger = logging.getLogger(__name__) + +DATE_PARSER_ENTRY_POINT_GROUP: Final = "paperless_ngx.date_parsers" + + +@lru_cache(maxsize=1) +def _discover_parser_class() -> type[DateParserPluginBase]: + """ + Discovers the date parser plugin class to use. + + - If one or more plugins are found, sorts them by name and returns the first. + - If no plugins are found, returns the default RegexDateParser. + """ + + eps: tuple[EntryPoint, ...] + try: + eps = entry_points(group=DATE_PARSER_ENTRY_POINT_GROUP) + except Exception as e: + # Log a warning + logger.warning(f"Could not query entry points for date parsers: {e}") + eps = () + + valid_plugins: list[EntryPoint] = [] + for ep in eps: + try: + plugin_class = ep.load() + if plugin_class and issubclass(plugin_class, DateParserPluginBase): + valid_plugins.append(ep) + else: + logger.warning(f"Plugin {ep.name} does not subclass DateParser.") + except Exception as e: + logger.error(f"Unable to load date parser plugin {ep.name}: {e}") + + if not valid_plugins: + return RegexDateParserPlugin + + valid_plugins.sort(key=lambda ep: ep.name) + + if len(valid_plugins) > 1: + logger.warning( + f"Multiple date parsers found: " + f"{[ep.name for ep in valid_plugins]}. " + f"Using the first one by name: '{valid_plugins[0].name}'.", + ) + + return valid_plugins[0].load() + + +def get_date_parser() -> DateParserPluginBase: + """ + Factory function to get an initialized date parser instance. + + This function is responsible for: + 1. Discovering the correct parser class (plugin or default). + 2. Loading configuration from Django settings. + 3. Instantiating the parser with the configuration. + """ + # 1. Discover the class (this is cached) + parser_class = _discover_parser_class() + + # 2. Load configuration from settings + # TODO: Get the language from the settings and/or configuration object, depending + ocr_config = OcrConfig() + languages = settings.DATE_PARSER_LANGUAGES or ocr_to_dateparser_languages( + ocr_config.language, + ) + + config = DateParserConfig( + languages=languages, + timezone_str=settings.TIME_ZONE, + ignore_dates=settings.IGNORE_DATES, + reference_time=timezone.now(), + filename_date_order=settings.FILENAME_DATE_ORDER, + content_date_order=settings.DATE_ORDER, + ) + + # 3. Instantiate the discovered class with the config + return parser_class(config=config) + + +__all__ = [ + "DateParserConfig", + "DateParserPluginBase", + "RegexDateParserPlugin", + "get_date_parser", +] diff --git a/src/documents/plugins/date_parsing/base.py b/src/documents/plugins/date_parsing/base.py new file mode 100644 index 000000000..c6df1a70f --- /dev/null +++ b/src/documents/plugins/date_parsing/base.py @@ -0,0 +1,124 @@ +import datetime +import logging +from abc import ABC +from abc import abstractmethod +from collections.abc import Iterator +from dataclasses import dataclass +from types import TracebackType + +try: + from typing import Self +except ImportError: + from typing_extensions import Self + +import dateparser + +logger = logging.getLogger(__name__) + + +@dataclass(frozen=True, slots=True) +class DateParserConfig: + """ + Configuration for a DateParser instance. + + This object is created by the factory and passed to the + parser's constructor, decoupling the parser from settings. + """ + + languages: list[str] + timezone_str: str + ignore_dates: set[datetime.date] + + # A "now" timestamp for filtering future dates. + # Passed in by the factory. + reference_time: datetime.datetime + + # Settings for the default RegexDateParser + # Other plugins should use or consider these, but it is not required + filename_date_order: str | None + content_date_order: str + + +class DateParserPluginBase(ABC): + """ + Abstract base class for date parsing strategies. + + Instances are configured via a DateParserConfig object. + """ + + def __init__(self, config: DateParserConfig): + """ + Initializes the parser with its configuration. + """ + self.config = config + + def __enter__(self) -> Self: + """ + Enter the runtime context related to this object. + + Subclasses can override this to acquire resources (connections, handles). + """ + return self + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None, + ) -> None: + """ + Exit the runtime context related to this object. + + Subclasses can override this to release resources. + """ + # Default implementation does nothing. + # Returning None implies exceptions are propagated. + + def _parse_string( + self, + date_string: str, + date_order: str, + ) -> datetime.datetime | None: + """ + Helper method to parse a single date string using dateparser. + + Uses configuration from `self.config`. + """ + try: + return dateparser.parse( + date_string, + settings={ + "DATE_ORDER": date_order, + "PREFER_DAY_OF_MONTH": "first", + "RETURN_AS_TIMEZONE_AWARE": True, + "TIMEZONE": self.config.timezone_str, + }, + locales=self.config.languages, + ) + except Exception as e: + logger.error(f"Error while parsing date string '{date_string}': {e}") + return None + + def _filter_date( + self, + date: datetime.datetime | None, + ) -> datetime.datetime | None: + """ + Helper method to validate a parsed datetime object. + + Uses configuration from `self.config`. + """ + if ( + date is not None + and date.year > 1900 + and date <= self.config.reference_time + and date.date() not in self.config.ignore_dates + ): + return date + return None + + @abstractmethod + def parse(self, filename: str, content: str) -> Iterator[datetime.datetime]: + """ + Parses a document's filename and content, yielding valid datetime objects. + """ diff --git a/src/documents/plugins/date_parsing/regex_parser.py b/src/documents/plugins/date_parsing/regex_parser.py new file mode 100644 index 000000000..2df8f9295 --- /dev/null +++ b/src/documents/plugins/date_parsing/regex_parser.py @@ -0,0 +1,65 @@ +import datetime +import re +from collections.abc import Iterator +from re import Match + +from documents.plugins.date_parsing.base import DateParserPluginBase + + +class RegexDateParserPlugin(DateParserPluginBase): + """ + The default date parser, using a series of regular expressions. + + It is configured entirely by the DateParserConfig object + passed to its constructor. + """ + + DATE_REGEX = re.compile( + r"(\b|(?!=([_-])))(\d{1,2})[\.\/-](\d{1,2})[\.\/-](\d{4}|\d{2})(\b|(?=([_-])))|" + r"(\b|(?!=([_-])))(\d{4}|\d{2})[\.\/-](\d{1,2})[\.\/-](\d{1,2})(\b|(?=([_-])))|" + r"(\b|(?!=([_-])))(\d{1,2}[\. ]+[a-zéûäëčžúřěáíóńźçŞğü]{3,9} \d{4}|[a-zéûäëčžúřěáíóńźçŞğü]{3,9} \d{1,2}, \d{4})(\b|(?=([_-])))|" + r"(\b|(?!=([_-])))([^\W\d_]{3,9} \d{1,2}, (\d{4}))(\b|(?=([_-])))|" + r"(\b|(?!=([_-])))([^\W\d_]{3,9} \d{4})(\b|(?=([_-])))|" + r"(\b|(?!=([_-])))(\d{1,2}[^ 0-9]{2}[\. ]+[^ ]{3,9}[ \.\/-]\d{4})(\b|(?=([_-])))|" + r"(\b|(?!=([_-])))(\b\d{1,2}[ \.\/-][a-zéûäëčžúřěáíóńźçŞğü]{3}[ \.\/-]\d{4})(\b|(?=([_-])))", + re.IGNORECASE, + ) + + def _process_match( + self, + match: Match[str], + date_order: str, + ) -> datetime.datetime | None: + """ + Processes a single regex match using the base class helpers. + """ + date_string = match.group(0) + date = self._parse_string(date_string, date_order) + return self._filter_date(date) + + def _process_content( + self, + content: str, + date_order: str, + ) -> Iterator[datetime.datetime]: + """ + Finds all regex matches in content and yields valid dates. + """ + for m in re.finditer(self.DATE_REGEX, content): + date = self._process_match(m, date_order) + if date is not None: + yield date + + def parse(self, filename: str, content: str) -> Iterator[datetime.datetime]: + """ + Implementation of the abstract parse method. + + Reads its configuration from `self.config`. + """ + if self.config.filename_date_order: + yield from self._process_content( + filename, + self.config.filename_date_order, + ) + + yield from self._process_content(content, self.config.content_date_order) diff --git a/src/documents/regex.py b/src/documents/regex.py new file mode 100644 index 000000000..35acc5af0 --- /dev/null +++ b/src/documents/regex.py @@ -0,0 +1,50 @@ +from __future__ import annotations + +import logging +import textwrap + +import regex +from django.conf import settings + +logger = logging.getLogger("paperless.regex") + +REGEX_TIMEOUT_SECONDS: float = getattr(settings, "MATCH_REGEX_TIMEOUT_SECONDS", 0.1) + + +def validate_regex_pattern(pattern: str) -> None: + """ + Validate user provided regex for basic compile errors. + Raises ValueError on validation failure. + """ + + try: + regex.compile(pattern) + except regex.error as exc: + raise ValueError(exc.msg) from exc + + +def safe_regex_search(pattern: str, text: str, *, flags: int = 0): + """ + Run a regex search with a timeout. Returns a match object or None. + Validation errors and timeouts are logged and treated as no match. + """ + + try: + validate_regex_pattern(pattern) + compiled = regex.compile(pattern, flags=flags) + except (regex.error, ValueError) as exc: + logger.error( + "Error while processing regular expression %s: %s", + textwrap.shorten(pattern, width=80, placeholder="…"), + exc, + ) + return None + + try: + return compiled.search(text, timeout=REGEX_TIMEOUT_SECONDS) + except TimeoutError: + logger.warning( + "Regular expression matching timed out for pattern %s", + textwrap.shorten(pattern, width=80, placeholder="…"), + ) + return None diff --git a/src/documents/sanity_checker.py b/src/documents/sanity_checker.py index 76c35073c..08763d937 100644 --- a/src/documents/sanity_checker.py +++ b/src/documents/sanity_checker.py @@ -16,23 +16,23 @@ from paperless.config import GeneralConfig class SanityCheckMessages: - def __init__(self): + def __init__(self) -> None: self._messages: dict[int, list[dict]] = defaultdict(list) self.has_error = False self.has_warning = False - def error(self, doc_pk, message): + def error(self, doc_pk, message) -> None: self._messages[doc_pk].append({"level": logging.ERROR, "message": message}) self.has_error = True - def warning(self, doc_pk, message): + def warning(self, doc_pk, message) -> None: self._messages[doc_pk].append({"level": logging.WARNING, "message": message}) self.has_warning = True - def info(self, doc_pk, message): + def info(self, doc_pk, message) -> None: self._messages[doc_pk].append({"level": logging.INFO, "message": message}) - def log_messages(self): + def log_messages(self) -> None: logger = logging.getLogger("paperless.sanity_checker") if len(self._messages) == 0: @@ -76,7 +76,9 @@ def check_sanity(*, progress=False, scheduled=True) -> SanityCheckMessages: messages = SanityCheckMessages() present_files = { - x.resolve() for x in Path(settings.MEDIA_ROOT).glob("**/*") if not x.is_dir() + x.resolve() + for x in Path(settings.MEDIA_ROOT).glob("**/*") + if not x.is_dir() and x.name not in settings.IGNORABLE_FILES } lockfile = Path(settings.MEDIA_LOCK).resolve() diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index 760b80e66..4f4df3165 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -4,8 +4,10 @@ import logging import math import re from datetime import datetime +from datetime import timedelta from decimal import Decimal from typing import TYPE_CHECKING +from typing import Literal import magic from celery import states @@ -15,9 +17,16 @@ from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.core.validators import DecimalValidator +from django.core.validators import EmailValidator from django.core.validators import MaxLengthValidator +from django.core.validators import MaxValueValidator +from django.core.validators import MinValueValidator from django.core.validators import RegexValidator from django.core.validators import integer_validator +from django.db.models import Count +from django.db.models import Q +from django.db.models.functions import Lower +from django.utils import timezone from django.utils.crypto import get_random_string from django.utils.dateparse import parse_datetime from django.utils.text import slugify @@ -34,7 +43,9 @@ from guardian.utils import get_group_obj_perms_model from guardian.utils import get_user_obj_perms_model from rest_framework import fields from rest_framework import serializers +from rest_framework.exceptions import PermissionDenied from rest_framework.fields import SerializerMethodField +from rest_framework.filters import OrderingFilter if settings.AUDIT_LOG_ENABLED: from auditlog.context import set_actor @@ -42,6 +53,7 @@ if settings.AUDIT_LOG_ENABLED: from documents import bulk_edit from documents.data_models import DocumentSource +from documents.filters import CustomFieldQueryParser from documents.models import Correspondent from documents.models import CustomField from documents.models import CustomFieldInstance @@ -53,6 +65,7 @@ from documents.models import PaperlessTask from documents.models import SavedView from documents.models import SavedViewFilterRule from documents.models import ShareLink +from documents.models import ShareLinkBundle from documents.models import StoragePath from documents.models import Tag from documents.models import UiSettings @@ -62,8 +75,11 @@ from documents.models import WorkflowActionEmail from documents.models import WorkflowActionWebhook from documents.models import WorkflowTrigger from documents.parsers import is_mime_type_supported +from documents.permissions import get_document_count_filter_for_user from documents.permissions import get_groups_with_only_permission +from documents.permissions import get_objects_for_user_owner_aware from documents.permissions import set_permissions_for_object +from documents.regex import validate_regex_pattern from documents.templating.filepath import validate_filepath_template_and_render from documents.templating.utils import convert_format_str_to_template_format from documents.validators import uri_validator @@ -72,6 +88,9 @@ from documents.validators import url_validator if TYPE_CHECKING: from collections.abc import Iterable + from django.db.models.query import QuerySet + + logger = logging.getLogger("paperless.serializers") @@ -82,7 +101,7 @@ class DynamicFieldsModelSerializer(serializers.ModelSerializer): controls which fields should be displayed. """ - def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs) -> None: # Don't pass the 'fields' arg up to the superclass fields = kwargs.pop("fields", None) @@ -134,10 +153,11 @@ class MatchingModelSerializer(serializers.ModelSerializer): and self.initial_data["matching_algorithm"] == MatchingModel.MATCH_REGEX ): try: - re.compile(match) - except re.error as e: + validate_regex_pattern(match) + except ValueError as e: + logger.debug(f"Invalid regular expression: {e!s}") raise serializers.ValidationError( - _("Invalid regular expression: %(error)s") % {"error": str(e.msg)}, + "Invalid regular expression, see log for details.", ) return match @@ -185,12 +205,12 @@ class SetPermissionsMixin: del permissions_dict[action] return permissions_dict - def _set_permissions(self, permissions, object): + def _set_permissions(self, permissions, object) -> None: set_permissions_for_object(permissions, object) class SerializerWithPerms(serializers.Serializer): - def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs) -> None: self.user = kwargs.pop("user", None) self.full_perms = kwargs.pop("full_perms", False) self.all_fields = kwargs.pop("all_fields", False) @@ -239,7 +259,7 @@ class OwnedObjectSerializer( serializers.ModelSerializer, SetPermissionsMixin, ): - def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) if not self.all_fields: @@ -252,6 +272,35 @@ class OwnedObjectSerializer( except KeyError: pass + def _get_perms(self, obj, codename: str, target: Literal["users", "groups"]): + """ + Get the given permissions from context or from django-guardian. + + :param codename: The permission codename, e.g. 'view' or 'change' + :param target: 'users' or 'groups' + """ + key = f"{target}_{codename}_perms" + cached = self.context.get(key, {}).get(obj.pk) + if cached is not None: + return list(cached) + + # Permission not found in the context, get it from guardian + if target == "users": + return list( + get_users_with_perms( + obj, + only_with_perms_in=[f"{codename}_{obj.__class__.__name__.lower()}"], + with_group_users=False, + ).values_list("id", flat=True), + ) + else: # groups + return list( + get_groups_with_only_permission( + obj, + codename=f"{codename}_{obj.__class__.__name__.lower()}", + ).values_list("id", flat=True), + ) + @extend_schema_field( field={ "type": "object", @@ -286,31 +335,14 @@ class OwnedObjectSerializer( }, ) def get_permissions(self, obj) -> dict: - view_codename = f"view_{obj.__class__.__name__.lower()}" - change_codename = f"change_{obj.__class__.__name__.lower()}" - return { "view": { - "users": get_users_with_perms( - obj, - only_with_perms_in=[view_codename], - with_group_users=False, - ).values_list("id", flat=True), - "groups": get_groups_with_only_permission( - obj, - codename=view_codename, - ).values_list("id", flat=True), + "users": self._get_perms(obj, "view", "users"), + "groups": self._get_perms(obj, "view", "groups"), }, "change": { - "users": get_users_with_perms( - obj, - only_with_perms_in=[change_codename], - with_group_users=False, - ).values_list("id", flat=True), - "groups": get_groups_with_only_permission( - obj, - codename=change_codename, - ).values_list("id", flat=True), + "users": self._get_perms(obj, "change", "users"), + "groups": self._get_perms(obj, "change", "groups"), }, } @@ -377,7 +409,7 @@ class OwnedObjectSerializer( ) # other methods in mixin - def validate_unique_together(self, validated_data, instance=None): + def validate_unique_together(self, validated_data, instance=None) -> None: # workaround for https://github.com/encode/django-rest-framework/issues/9358 if "owner" in validated_data and "name" in self.Meta.fields: name = validated_data.get("name", instance.name if instance else None) @@ -413,6 +445,19 @@ class OwnedObjectSerializer( return instance def update(self, instance, validated_data): + user = getattr(self, "user", None) + is_superuser = user.is_superuser if user is not None else False + is_owner = instance.owner == user if user is not None else False + is_unowned = instance.owner is None + + if ( + ("owner" in validated_data and validated_data["owner"] != instance.owner) + or "set_permissions" in validated_data + ) and not (is_superuser or is_owner or is_unowned): + raise PermissionDenied( + _("Insufficient permissions."), + ) + if "set_permissions" in validated_data: self._set_permissions(validated_data["set_permissions"], instance) self.validate_unique_together(validated_data, instance) @@ -557,9 +602,38 @@ class TagSerializer(MatchingModelSerializer, OwnedObjectSerializer): ), ) def get_children(self, obj): + children_map = self.context.get("children_map") + if children_map is not None: + children = children_map.get(obj.pk, []) + else: + filter_q = self.context.get("document_count_filter") + request = self.context.get("request") + if filter_q is None: + user = getattr(request, "user", None) if request else None + filter_q = get_document_count_filter_for_user(user) + self.context["document_count_filter"] = filter_q + + children = ( + obj.get_children_queryset() + .select_related("owner") + .annotate(document_count=Count("documents", filter=filter_q)) + ) + + view = self.context.get("view") + ordering = ( + OrderingFilter().get_ordering(request, children, view) + if request and view + else None + ) + ordering = ordering or (Lower("name"),) + children = children.order_by(*ordering) + serializer = TagSerializer( - obj.get_children(), + children, many=True, + user=self.user, + full_perms=self.full_perms, + all_fields=self.all_fields, context=self.context, ) return serializer.data @@ -620,7 +694,7 @@ class TagSerializer(MatchingModelSerializer, OwnedObjectSerializer): temp.clean() except ValidationError as e: logger.debug("Tag parent validation failed: %s", e) - raise serializers.ValidationError({"parent": _("Invalid parent tag.")}) + raise e return super().validate(attrs) @@ -646,7 +720,7 @@ class StoragePathField(serializers.PrimaryKeyRelatedField): class CustomFieldSerializer(serializers.ModelSerializer): - def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs) -> None: context = kwargs.get("context") self.api_version = int( context.get("request").version @@ -772,7 +846,7 @@ class ReadWriteSerializerMethodField(serializers.SerializerMethodField): Based on https://stackoverflow.com/a/62579804 """ - def __init__(self, method_name=None, *args, **kwargs): + def __init__(self, method_name=None, *args, **kwargs) -> None: self.method_name = method_name kwargs["source"] = "*" super(serializers.SerializerMethodField, self).__init__(*args, **kwargs) @@ -829,6 +903,13 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer): uri_validator(data["value"]) elif field.data_type == CustomField.FieldDataType.INT: integer_validator(data["value"]) + try: + value_int = int(data["value"]) + except (TypeError, ValueError): + raise serializers.ValidationError("Enter a valid integer.") + # Keep values within the PostgreSQL integer range + MinValueValidator(-2147483648)(value_int) + MaxValueValidator(2147483647)(value_int) elif ( field.data_type == CustomField.FieldDataType.MONETARY and data["value"] != "" @@ -955,6 +1036,32 @@ class NotesSerializer(serializers.ModelSerializer): return ret +def _get_viewable_duplicates( + document: Document, + user: User | None, +) -> QuerySet[Document]: + checksums = {document.checksum} + if document.archive_checksum: + checksums.add(document.archive_checksum) + duplicates = Document.global_objects.filter( + Q(checksum__in=checksums) | Q(archive_checksum__in=checksums), + ).exclude(pk=document.pk) + duplicates = duplicates.order_by("-created") + allowed = get_objects_for_user_owner_aware( + user, + "documents.view_document", + Document, + include_deleted=True, + ) + return duplicates.filter(id__in=allowed) + + +class DuplicateDocumentSummarySerializer(serializers.Serializer): + id = serializers.IntegerField() + title = serializers.CharField() + deleted_at = serializers.DateTimeField(allow_null=True) + + @extend_schema_serializer( deprecate_fields=["created_date"], ) @@ -972,6 +1079,7 @@ class DocumentSerializer( archived_file_name = SerializerMethodField() created_date = serializers.DateField(required=False) page_count = SerializerMethodField() + duplicate_documents = SerializerMethodField() notes = NotesSerializer(many=True, required=False, read_only=True) head_version = serializers.PrimaryKeyRelatedField(read_only=True) @@ -999,6 +1107,16 @@ class DocumentSerializer( def get_page_count(self, obj) -> int | None: return obj.page_count + @extend_schema_field(DuplicateDocumentSummarySerializer(many=True)) + def get_duplicate_documents(self, obj): + view = self.context.get("view") + if view and getattr(view, "action", None) != "retrieve": + return [] + request = self.context.get("request") + user = request.user if request else None + duplicates = _get_viewable_duplicates(obj, user) + return list(duplicates.values("id", "title", "deleted_at")) + def get_original_file_name(self, obj) -> str | None: return obj.original_filename @@ -1022,7 +1140,7 @@ class DocumentSerializer( doc["versions"] = sorted(doc["versions"], reverse=True) doc["versions"].append(doc["id"]) - if api_version < 9: + if api_version < 9 and "created" in self.fields: # provide created as a datetime for backwards compatibility from django.utils import timezone @@ -1149,7 +1267,7 @@ class DocumentSerializer( CustomFieldInstance.deleted_objects.filter(document=instance).delete() return instance - def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs) -> None: self.truncate_content = kwargs.pop("truncate_content", False) # return full permissions if we're doing a PATCH or PUT @@ -1180,6 +1298,7 @@ class DocumentSerializer( "archive_serial_number", "original_file_name", "archived_file_name", + "duplicate_documents", "owner", "permissions", "user_can_change", @@ -1345,7 +1464,7 @@ class DocumentListSerializer(serializers.Serializer): child=serializers.IntegerField(), ) - def _validate_document_id_list(self, documents, name="documents"): + def _validate_document_id_list(self, documents, name="documents") -> None: if not isinstance(documents, list): raise serializers.ValidationError(f"{name} must be a list") if not all(isinstance(i, int) for i in documents): @@ -1383,6 +1502,7 @@ class BulkEditSerializer( "split", "delete_pages", "edit_pdf", + "remove_password", ], label="Method", write_only=True, @@ -1390,7 +1510,7 @@ class BulkEditSerializer( parameters = serializers.DictField(allow_empty=True, default={}, write_only=True) - def _validate_tag_id_list(self, tags, name="tags"): + def _validate_tag_id_list(self, tags, name="tags") -> None: if not isinstance(tags, list): raise serializers.ValidationError(f"{name} must be a list") if not all(isinstance(i, int) for i in tags): @@ -1405,7 +1525,7 @@ class BulkEditSerializer( self, custom_fields, name="custom_fields", - ): + ) -> None: ids = custom_fields if isinstance(custom_fields, dict): try: @@ -1458,11 +1578,13 @@ class BulkEditSerializer( return bulk_edit.delete_pages elif method == "edit_pdf": return bulk_edit.edit_pdf + elif method == "remove_password": + return bulk_edit.remove_password else: # pragma: no cover # This will never happen as it is handled by the ChoiceField raise serializers.ValidationError("Unsupported method.") - def _validate_parameters_tags(self, parameters): + def _validate_parameters_tags(self, parameters) -> None: if "tag" in parameters: tag_id = parameters["tag"] try: @@ -1472,7 +1594,7 @@ class BulkEditSerializer( else: raise serializers.ValidationError("tag not specified") - def _validate_parameters_document_type(self, parameters): + def _validate_parameters_document_type(self, parameters) -> None: if "document_type" in parameters: document_type_id = parameters["document_type"] if document_type_id is None: @@ -1485,7 +1607,7 @@ class BulkEditSerializer( else: raise serializers.ValidationError("document_type not specified") - def _validate_parameters_correspondent(self, parameters): + def _validate_parameters_correspondent(self, parameters) -> None: if "correspondent" in parameters: correspondent_id = parameters["correspondent"] if correspondent_id is None: @@ -1497,7 +1619,7 @@ class BulkEditSerializer( else: raise serializers.ValidationError("correspondent not specified") - def _validate_storage_path(self, parameters): + def _validate_storage_path(self, parameters) -> None: if "storage_path" in parameters: storage_path_id = parameters["storage_path"] if storage_path_id is None: @@ -1511,7 +1633,7 @@ class BulkEditSerializer( else: raise serializers.ValidationError("storage path not specified") - def _validate_parameters_modify_tags(self, parameters): + def _validate_parameters_modify_tags(self, parameters) -> None: if "add_tags" in parameters: self._validate_tag_id_list(parameters["add_tags"], "add_tags") else: @@ -1522,7 +1644,7 @@ class BulkEditSerializer( else: raise serializers.ValidationError("remove_tags not specified") - def _validate_parameters_modify_custom_fields(self, parameters): + def _validate_parameters_modify_custom_fields(self, parameters) -> None: if "add_custom_fields" in parameters: self._validate_custom_field_id_list_or_dict( parameters["add_custom_fields"], @@ -1545,7 +1667,7 @@ class BulkEditSerializer( raise serializers.ValidationError("Specified owner cannot be found") return ownerUser - def _validate_parameters_set_permissions(self, parameters): + def _validate_parameters_set_permissions(self, parameters) -> None: parameters["set_permissions"] = self.validate_set_permissions( parameters["set_permissions"], ) @@ -1554,7 +1676,7 @@ class BulkEditSerializer( if "merge" not in parameters: parameters["merge"] = False - def _validate_parameters_rotate(self, parameters): + def _validate_parameters_rotate(self, parameters) -> None: try: if ( "degrees" not in parameters @@ -1564,7 +1686,7 @@ class BulkEditSerializer( except ValueError: raise serializers.ValidationError("invalid rotation degrees") - def _validate_parameters_split(self, parameters): + def _validate_parameters_split(self, parameters) -> None: if "pages" not in parameters: raise serializers.ValidationError("pages not specified") try: @@ -1593,7 +1715,7 @@ class BulkEditSerializer( else: parameters["delete_originals"] = False - def _validate_parameters_delete_pages(self, parameters): + def _validate_parameters_delete_pages(self, parameters) -> None: if "pages" not in parameters: raise serializers.ValidationError("pages not specified") if not isinstance(parameters["pages"], list): @@ -1601,7 +1723,7 @@ class BulkEditSerializer( if not all(isinstance(i, int) for i in parameters["pages"]): raise serializers.ValidationError("pages must be a list of integers") - def _validate_parameters_merge(self, parameters): + def _validate_parameters_merge(self, parameters) -> None: if "delete_originals" in parameters: if not isinstance(parameters["delete_originals"], bool): raise serializers.ValidationError("delete_originals must be a boolean") @@ -1613,7 +1735,7 @@ class BulkEditSerializer( else: parameters["archive_fallback"] = False - def _validate_parameters_edit_pdf(self, parameters, document_id): + def _validate_parameters_edit_pdf(self, parameters, document_id) -> None: if "operations" not in parameters: raise serializers.ValidationError("operations not specified") if not isinstance(parameters["operations"], list): @@ -1654,6 +1776,12 @@ class BulkEditSerializer( f"Page {op['page']} is out of bounds for document with {doc.page_count} pages.", ) + def validate_parameters_remove_password(self, parameters): + if "password" not in parameters: + raise serializers.ValidationError("password not specified") + if not isinstance(parameters["password"], str): + raise serializers.ValidationError("password must be a string") + def validate(self, attrs): method = attrs["method"] parameters = attrs["parameters"] @@ -1694,6 +1822,8 @@ class BulkEditSerializer( "Edit PDF method only supports one document", ) self._validate_parameters_edit_pdf(parameters, attrs["documents"][0]) + elif method == bulk_edit.remove_password: + self.validate_parameters_remove_password(parameters) return attrs @@ -1910,6 +2040,51 @@ class BulkDownloadSerializer(DocumentListSerializer): }[compression] +class EmailSerializer(DocumentListSerializer): + addresses = serializers.CharField( + required=True, + label="Email addresses", + help_text="Comma-separated email addresses", + ) + + subject = serializers.CharField( + required=True, + label="Email subject", + ) + + message = serializers.CharField( + required=True, + label="Email message", + ) + + use_archive_version = serializers.BooleanField( + default=True, + label="Use archive version", + help_text="Use archive version of documents if available", + ) + + def validate_addresses(self, addresses): + address_list = [addr.strip() for addr in addresses.split(",")] + if not address_list: + raise serializers.ValidationError("At least one email address is required") + + email_validator = EmailValidator() + try: + for address in address_list: + email_validator(address) + except ValidationError: + raise serializers.ValidationError(f"Invalid email address: {address}") + + return ",".join(address_list) + + def validate_documents(self, documents): + super().validate_documents(documents) + if not documents: + raise serializers.ValidationError("At least one document is required") + + return documents + + class StoragePathSerializer(MatchingModelSerializer, OwnedObjectSerializer): class Meta: model = StoragePath @@ -1996,10 +2171,12 @@ class TasksViewSerializer(OwnedObjectSerializer): "result", "acknowledged", "related_document", + "duplicate_documents", "owner", ) related_document = serializers.SerializerMethodField() + duplicate_documents = serializers.SerializerMethodField() created_doc_re = re.compile(r"New document id (\d+) created") duplicate_doc_re = re.compile(r"It is a duplicate of .* \(#(\d+)\)") @@ -2024,6 +2201,17 @@ class TasksViewSerializer(OwnedObjectSerializer): return result + @extend_schema_field(DuplicateDocumentSummarySerializer(many=True)) + def get_duplicate_documents(self, obj): + related_document = self.get_related_document(obj) + request = self.context.get("request") + user = request.user if request else None + document = Document.global_objects.filter(pk=related_document).first() + if not related_document or not user or not document: + return [] + duplicates = _get_viewable_duplicates(document, user) + return list(duplicates.values("id", "title", "deleted_at")) + class RunTaskViewSerializer(serializers.Serializer): task_name = serializers.ChoiceField( @@ -2041,7 +2229,7 @@ class AcknowledgeTasksViewSerializer(serializers.Serializer): child=serializers.IntegerField(), ) - def _validate_task_id_list(self, tasks, name="tasks"): + def _validate_task_id_list(self, tasks, name="tasks") -> None: if not isinstance(tasks, list): raise serializers.ValidationError(f"{name} must be a list") if not all(isinstance(i, int) for i in tasks): @@ -2074,6 +2262,104 @@ class ShareLinkSerializer(OwnedObjectSerializer): return super().create(validated_data) +class ShareLinkBundleSerializer(OwnedObjectSerializer): + document_ids = serializers.ListField( + child=serializers.IntegerField(min_value=1), + allow_empty=False, + write_only=True, + ) + expiration_days = serializers.IntegerField( + required=False, + allow_null=True, + min_value=1, + write_only=True, + ) + documents = serializers.PrimaryKeyRelatedField( + many=True, + read_only=True, + ) + document_count = SerializerMethodField() + + class Meta: + model = ShareLinkBundle + fields = ( + "id", + "created", + "expiration", + "expiration_days", + "slug", + "file_version", + "status", + "size_bytes", + "last_error", + "built_at", + "documents", + "document_ids", + "document_count", + ) + read_only_fields = ( + "id", + "created", + "expiration", + "slug", + "status", + "size_bytes", + "last_error", + "built_at", + "documents", + "document_count", + ) + + def validate_document_ids(self, value): + unique_ids = set(value) + if len(unique_ids) != len(value): + raise serializers.ValidationError( + _("Duplicate document identifiers are not allowed."), + ) + return value + + def create(self, validated_data): + document_ids = validated_data.pop("document_ids") + expiration_days = validated_data.pop("expiration_days", None) + validated_data["slug"] = get_random_string(50) + if expiration_days: + validated_data["expiration"] = timezone.now() + timedelta( + days=expiration_days, + ) + else: + validated_data["expiration"] = None + + share_link_bundle = super().create(validated_data) + + documents = list( + Document.objects.filter(pk__in=document_ids).only( + "pk", + ), + ) + documents_by_id = {doc.pk: doc for doc in documents} + missing = [ + str(doc_id) for doc_id in document_ids if doc_id not in documents_by_id + ] + if missing: + raise serializers.ValidationError( + { + "document_ids": _( + "Documents not found: %(ids)s", + ) + % {"ids": ", ".join(missing)}, + }, + ) + + ordered_documents = [documents_by_id[doc_id] for doc_id in document_ids] + share_link_bundle.documents.set(ordered_documents) + share_link_bundle.document_total = len(ordered_documents) + + return share_link_bundle + + def get_document_count(self, obj: ShareLinkBundle) -> int: + return getattr(obj, "document_total") or obj.documents.count() + + class BulkEditObjectsSerializer(SerializerWithPerms, SetPermissionsMixin): objects = serializers.ListField( required=True, @@ -2148,7 +2434,7 @@ class BulkEditObjectsSerializer(SerializerWithPerms, SetPermissionsMixin): ) return objects - def _validate_permissions(self, permissions): + def _validate_permissions(self, permissions) -> None: self.validate_set_permissions( permissions, ) @@ -2198,6 +2484,15 @@ class WorkflowTriggerSerializer(serializers.ModelSerializer): "match", "is_insensitive", "filter_has_tags", + "filter_has_all_tags", + "filter_has_not_tags", + "filter_custom_field_query", + "filter_has_any_correspondents", + "filter_has_not_correspondents", + "filter_has_any_document_types", + "filter_has_not_document_types", + "filter_has_any_storage_paths", + "filter_has_not_storage_paths", "filter_has_correspondent", "filter_has_document_type", "filter_has_storage_path", @@ -2223,6 +2518,20 @@ class WorkflowTriggerSerializer(serializers.ModelSerializer): ): attrs["filter_path"] = None + if ( + "filter_custom_field_query" in attrs + and attrs["filter_custom_field_query"] is not None + and len(attrs["filter_custom_field_query"]) == 0 + ): + attrs["filter_custom_field_query"] = None + + if ( + "filter_custom_field_query" in attrs + and attrs["filter_custom_field_query"] is not None + ): + parser = CustomFieldQueryParser("filter_custom_field_query") + parser.parse(attrs["filter_custom_field_query"]) + trigger_type = attrs.get("type", getattr(self.instance, "type", None)) if ( trigger_type == WorkflowTrigger.WorkflowTriggerType.CONSUMPTION @@ -2237,7 +2546,7 @@ class WorkflowTriggerSerializer(serializers.ModelSerializer): return attrs @staticmethod - def normalize_workflow_trigger_sources(trigger): + def normalize_workflow_trigger_sources(trigger) -> None: """ Convert sources to strings to handle django-multiselectfield v1.0 changes """ @@ -2335,6 +2644,7 @@ class WorkflowActionSerializer(serializers.ModelSerializer): "remove_change_groups", "email", "webhook", + "passwords", ] def validate(self, attrs): @@ -2391,6 +2701,23 @@ class WorkflowActionSerializer(serializers.ModelSerializer): "Webhook data is required for webhook actions", ) + if ( + "type" in attrs + and attrs["type"] == WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL + ): + passwords = attrs.get("passwords") + # ensure passwords is a non-empty list of non-empty strings + if ( + passwords is None + or not isinstance(passwords, list) + or len(passwords) == 0 + or any(not isinstance(pw, str) for pw in passwords) + or any(len(pw.strip()) == 0 for pw in passwords) + ): + raise serializers.ValidationError( + "Passwords are required for password removal actions", + ) + return attrs @@ -2411,13 +2738,44 @@ class WorkflowSerializer(serializers.ModelSerializer): "actions", ] - def update_triggers_and_actions(self, instance: Workflow, triggers, actions): + def update_triggers_and_actions( + self, + instance: Workflow, + triggers, + actions, + ) -> None: set_triggers = [] set_actions = [] if triggers is not None and triggers is not serializers.empty: for trigger in triggers: filter_has_tags = trigger.pop("filter_has_tags", None) + filter_has_all_tags = trigger.pop("filter_has_all_tags", None) + filter_has_not_tags = trigger.pop("filter_has_not_tags", None) + filter_has_any_correspondents = trigger.pop( + "filter_has_any_correspondents", + None, + ) + filter_has_not_correspondents = trigger.pop( + "filter_has_not_correspondents", + None, + ) + filter_has_any_document_types = trigger.pop( + "filter_has_any_document_types", + None, + ) + filter_has_not_document_types = trigger.pop( + "filter_has_not_document_types", + None, + ) + filter_has_any_storage_paths = trigger.pop( + "filter_has_any_storage_paths", + None, + ) + filter_has_not_storage_paths = trigger.pop( + "filter_has_not_storage_paths", + None, + ) # Convert sources to strings to handle django-multiselectfield v1.0 changes WorkflowTriggerSerializer.normalize_workflow_trigger_sources(trigger) trigger_instance, _ = WorkflowTrigger.objects.update_or_create( @@ -2426,10 +2784,39 @@ class WorkflowSerializer(serializers.ModelSerializer): ) if filter_has_tags is not None: trigger_instance.filter_has_tags.set(filter_has_tags) + if filter_has_all_tags is not None: + trigger_instance.filter_has_all_tags.set(filter_has_all_tags) + if filter_has_not_tags is not None: + trigger_instance.filter_has_not_tags.set(filter_has_not_tags) + if filter_has_any_correspondents is not None: + trigger_instance.filter_has_any_correspondents.set( + filter_has_any_correspondents, + ) + if filter_has_not_correspondents is not None: + trigger_instance.filter_has_not_correspondents.set( + filter_has_not_correspondents, + ) + if filter_has_any_document_types is not None: + trigger_instance.filter_has_any_document_types.set( + filter_has_any_document_types, + ) + if filter_has_not_document_types is not None: + trigger_instance.filter_has_not_document_types.set( + filter_has_not_document_types, + ) + if filter_has_any_storage_paths is not None: + trigger_instance.filter_has_any_storage_paths.set( + filter_has_any_storage_paths, + ) + if filter_has_not_storage_paths is not None: + trigger_instance.filter_has_not_storage_paths.set( + filter_has_not_storage_paths, + ) set_triggers.append(trigger_instance) if actions is not None and actions is not serializers.empty: - for action in actions: + for index, action in enumerate(actions): + action["order"] = index assign_tags = action.pop("assign_tags", None) assign_view_users = action.pop("assign_view_users", None) assign_view_groups = action.pop("assign_view_groups", None) @@ -2516,7 +2903,7 @@ class WorkflowSerializer(serializers.ModelSerializer): instance.actions.set(set_actions) instance.save() - def prune_triggers_and_actions(self): + def prune_triggers_and_actions(self) -> None: """ ManyToMany fields dont support e.g. on_delete so we need to discard unattached triggers and actions manually @@ -2556,6 +2943,16 @@ class WorkflowSerializer(serializers.ModelSerializer): return instance + def to_representation(self, instance): + data = super().to_representation(instance) + actions = instance.actions.order_by("order", "pk") + data["actions"] = WorkflowActionSerializer( + actions, + many=True, + context=self.context, + ).data + return data + class TrashSerializer(SerializerWithPerms): documents = serializers.ListField( diff --git a/src/documents/signals/handlers.py b/src/documents/signals/handlers.py index 97903fd66..41fb03d9e 100644 --- a/src/documents/signals/handlers.py +++ b/src/documents/signals/handlers.py @@ -1,14 +1,10 @@ from __future__ import annotations -import ipaddress import logging import shutil -import socket from pathlib import Path from typing import TYPE_CHECKING -from urllib.parse import urlparse -import httpx from celery import shared_task from celery import states from celery.signals import before_task_publish @@ -27,19 +23,18 @@ from django.db.models import Q from django.dispatch import receiver from django.utils import timezone from filelock import FileLock -from guardian.shortcuts import remove_perm from documents import matching from documents.caching import clear_document_caches +from documents.caching import invalidate_llm_suggestions_cache +from documents.data_models import ConsumableDocument from documents.file_handling import create_source_path_directory from documents.file_handling import delete_empty_directories +from documents.file_handling import generate_filename from documents.file_handling import generate_unique_filename -from documents.mail import send_email -from documents.models import Correspondent from documents.models import CustomField from documents.models import CustomFieldInstance from documents.models import Document -from documents.models import DocumentType from documents.models import MatchingModel from documents.models import PaperlessTask from documents.models import SavedView @@ -50,8 +45,17 @@ from documents.models import WorkflowAction from documents.models import WorkflowRun from documents.models import WorkflowTrigger from documents.permissions import get_objects_for_user_owner_aware -from documents.permissions import set_permissions_for_object -from documents.templating.workflows import parse_w_workflow_placeholders +from documents.templating.utils import convert_format_str_to_template_format +from documents.workflows.actions import build_workflow_action_context +from documents.workflows.actions import execute_email_action +from documents.workflows.actions import execute_password_removal_action +from documents.workflows.actions import execute_webhook_action +from documents.workflows.mutations import apply_assignment_to_document +from documents.workflows.mutations import apply_assignment_to_overrides +from documents.workflows.mutations import apply_removal_to_document +from documents.workflows.mutations import apply_removal_to_overrides +from documents.workflows.utils import get_workflows_for_trigger +from paperless.config import AIConfig if TYPE_CHECKING: from documents.classifier import DocumentClassifier @@ -61,7 +65,7 @@ if TYPE_CHECKING: logger = logging.getLogger("paperless.handlers") -def add_inbox_tags(sender, document: Document, logging_group=None, **kwargs): +def add_inbox_tags(sender, document: Document, logging_group=None, **kwargs) -> None: if document.owner is not None: tags = get_objects_for_user_owner_aware( document.owner, @@ -81,7 +85,7 @@ def _suggestion_printer( document: Document, selected: MatchingModel, base_url: str | None = None, -): +) -> None: """ Smaller helper to reduce duplication when just outputting suggestions to the console """ @@ -107,7 +111,7 @@ def set_correspondent( stdout=None, style_func=None, **kwargs, -): +) -> None: if document.correspondent and not replace: return @@ -163,7 +167,7 @@ def set_document_type( stdout=None, style_func=None, **kwargs, -): +) -> None: if document.document_type and not replace: return @@ -219,7 +223,7 @@ def set_tags( stdout=None, style_func=None, **kwargs, -): +) -> None: if replace: Document.tags.through.objects.filter(document=document).exclude( Q(tag__is_inbox_tag=True), @@ -276,7 +280,7 @@ def set_storage_path( stdout=None, style_func=None, **kwargs, -): +) -> None: if document.storage_path and not replace: return @@ -324,7 +328,7 @@ def set_storage_path( # see empty_trash in documents/tasks.py for signal handling -def cleanup_document_deletion(sender, instance, **kwargs): +def cleanup_document_deletion(sender, instance, **kwargs) -> None: with FileLock(settings.MEDIA_LOCK): if settings.EMPTY_TRASH_DIR: # Find a non-conflicting filename in case a document with the same @@ -391,19 +395,42 @@ class CannotMoveFilesException(Exception): pass +def _filename_template_uses_custom_fields(doc: Document) -> bool: + template = None + if doc.storage_path is not None: + template = doc.storage_path.path + elif settings.FILENAME_FORMAT is not None: + template = convert_format_str_to_template_format(settings.FILENAME_FORMAT) + + if not template: + return False + + return "custom_fields" in template + + # should be disabled in /src/documents/management/commands/document_importer.py handle -@receiver(models.signals.post_save, sender=CustomFieldInstance) -@receiver(models.signals.m2m_changed, sender=Document.tags.through) -@receiver(models.signals.post_save, sender=Document) +@receiver(models.signals.post_save, sender=CustomFieldInstance, weak=False) +@receiver(models.signals.m2m_changed, sender=Document.tags.through, weak=False) +@receiver(models.signals.post_save, sender=Document, weak=False) def update_filename_and_move_files( sender, instance: Document | CustomFieldInstance, **kwargs, -): +) -> None: if isinstance(instance, CustomFieldInstance): + if not _filename_template_uses_custom_fields(instance.document): + return instance = instance.document - def validate_move(instance, old_path: Path, new_path: Path): + def validate_move(instance, old_path: Path, new_path: Path, root: Path) -> None: + if not new_path.is_relative_to(root): + msg = ( + f"Document {instance!s}: Refusing to move file outside root {root}: " + f"{new_path}." + ) + logger.warning(msg) + raise CannotMoveFilesException(msg) + if not old_path.is_file(): # Can't do anything if the old file does not exist anymore. msg = f"Document {instance!s}: File {old_path} doesn't exist." @@ -438,21 +465,47 @@ def update_filename_and_move_files( old_filename = instance.filename old_source_path = instance.source_path + candidate_filename = generate_filename(instance) + candidate_source_path = ( + settings.ORIGINALS_DIR / candidate_filename + ).resolve() + if candidate_filename == Path(old_filename): + new_filename = Path(old_filename) + elif ( + candidate_source_path.exists() + and candidate_source_path != old_source_path + ): + # Only fall back to unique search when there is an actual conflict + new_filename = generate_unique_filename(instance) + else: + new_filename = candidate_filename + # Need to convert to string to be able to save it to the db - instance.filename = str(generate_unique_filename(instance)) + instance.filename = str(new_filename) move_original = old_filename != instance.filename old_archive_filename = instance.archive_filename old_archive_path = instance.archive_path if instance.has_archive_version: - # Need to convert to string to be able to save it to the db - instance.archive_filename = str( - generate_unique_filename( + archive_candidate = generate_filename(instance, archive_filename=True) + archive_candidate_path = ( + settings.ARCHIVE_DIR / archive_candidate + ).resolve() + if archive_candidate == Path(old_archive_filename): + new_archive_filename = Path(old_archive_filename) + elif ( + archive_candidate_path.exists() + and archive_candidate_path != old_archive_path + ): + new_archive_filename = generate_unique_filename( instance, archive_filename=True, - ), - ) + ) + else: + new_archive_filename = archive_candidate + + instance.archive_filename = str(new_archive_filename) move_archive = old_archive_filename != instance.archive_filename else: @@ -466,12 +519,22 @@ def update_filename_and_move_files( return if move_original: - validate_move(instance, old_source_path, instance.source_path) + validate_move( + instance, + old_source_path, + instance.source_path, + settings.ORIGINALS_DIR, + ) create_source_path_directory(instance.source_path) shutil.move(old_source_path, instance.source_path) if move_archive: - validate_move(instance, old_archive_path, instance.archive_path) + validate_move( + instance, + old_archive_path, + instance.archive_path, + settings.ARCHIVE_DIR, + ) create_source_path_directory(instance.archive_path) shutil.move(old_archive_path, instance.archive_path) @@ -531,38 +594,51 @@ def update_filename_and_move_files( ) -# should be disabled in /src/documents/management/commands/document_importer.py handle -@receiver(models.signals.post_save, sender=CustomField) -def check_paths_and_prune_custom_fields(sender, instance: CustomField, **kwargs): +@shared_task +def process_cf_select_update(custom_field: CustomField) -> None: """ - When a custom field is updated: + Update documents tied to a select custom field: + 1. 'Select' custom field instances get their end-user value (e.g. in file names) from the select_options in extra_data, which is contained in the custom field itself. So when the field is changed, we (may) need to update the file names of all documents that have this custom field. 2. If a 'Select' field option was removed, we need to nullify the custom field instances that have the option. """ + select_options = { + option["id"]: option["label"] + for option in custom_field.extra_data.get("select_options", []) + } + + # Clear select values that no longer exist + custom_field.fields.exclude( + value_select__in=select_options.keys(), + ).update(value_select=None) + + for cf_instance in custom_field.fields.select_related("document").iterator(): + # Update the filename and move files if necessary + update_filename_and_move_files(CustomFieldInstance, cf_instance) + + +# should be disabled in /src/documents/management/commands/document_importer.py handle +@receiver(models.signals.post_save, sender=CustomField) +def check_paths_and_prune_custom_fields( + sender, + instance: CustomField, + **kwargs, +) -> None: + """ + When a custom field is updated, check if we need to update any documents. Done async to avoid slowing down the save operation. + """ if ( instance.data_type == CustomField.FieldDataType.SELECT and instance.fields.count() > 0 and instance.extra_data ): # Only select fields, for now - select_options = { - option["id"]: option["label"] - for option in instance.extra_data.get("select_options", []) - } - - for cf_instance in instance.fields.all(): - # Check if the current value is still a valid option - if cf_instance.value not in select_options: - cf_instance.value_select = None - cf_instance.save(update_fields=["value_select"]) - - # Update the filename and move files if necessary - update_filename_and_move_files(sender, cf_instance) + process_cf_select_update.delay(instance) @receiver(models.signals.post_delete, sender=CustomField) -def cleanup_custom_field_deletion(sender, instance: CustomField, **kwargs): +def cleanup_custom_field_deletion(sender, instance: CustomField, **kwargs) -> None: """ When a custom field is deleted, ensure no saved views reference it. """ @@ -588,9 +664,18 @@ def cleanup_custom_field_deletion(sender, instance: CustomField, **kwargs): ) +@receiver(models.signals.post_save, sender=Document) +def update_llm_suggestions_cache(sender, instance, **kwargs): + """ + Invalidate the LLM suggestions cache when a document is saved. + """ + # Invalidate the cache for the document + invalidate_llm_suggestions_cache(instance.pk) + + @receiver(models.signals.post_delete, sender=User) @receiver(models.signals.post_delete, sender=Group) -def cleanup_user_deletion(sender, instance: User | Group, **kwargs): +def cleanup_user_deletion(sender, instance: User | Group, **kwargs) -> None: """ When a user or group is deleted, remove non-cascading references. At the moment, just the default permission settings in UiSettings. @@ -633,7 +718,7 @@ def cleanup_user_deletion(sender, instance: User | Group, **kwargs): ) -def add_to_index(sender, document, **kwargs): +def add_to_index(sender, document, **kwargs) -> None: from documents import index index.add_or_update_document(document) @@ -645,7 +730,7 @@ def run_workflows_added( logging_group=None, original_file=None, **kwargs, -): +) -> None: run_workflows( trigger_type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, document=document, @@ -655,7 +740,12 @@ def run_workflows_added( ) -def run_workflows_updated(sender, document: Document, logging_group=None, **kwargs): +def run_workflows_updated( + sender, + document: Document, + logging_group=None, + **kwargs, +) -> None: run_workflows( trigger_type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, document=document, @@ -663,92 +753,6 @@ def run_workflows_updated(sender, document: Document, logging_group=None, **kwar ) -def _is_public_ip(ip: str) -> bool: - try: - obj = ipaddress.ip_address(ip) - return not ( - obj.is_private - or obj.is_loopback - or obj.is_link_local - or obj.is_multicast - or obj.is_unspecified - ) - except ValueError: # pragma: no cover - return False - - -def _resolve_first_ip(host: str) -> str | None: - try: - info = socket.getaddrinfo(host, None) - return info[0][4][0] if info else None - except Exception: # pragma: no cover - return None - - -@shared_task( - retry_backoff=True, - autoretry_for=(httpx.HTTPStatusError,), - max_retries=3, - throws=(httpx.HTTPError,), -) -def send_webhook( - url: str, - data: str | dict, - headers: dict, - files: dict, - *, - as_json: bool = False, -): - p = urlparse(url) - if p.scheme.lower() not in settings.WEBHOOKS_ALLOWED_SCHEMES or not p.hostname: - logger.warning("Webhook blocked: invalid scheme/hostname") - raise ValueError("Invalid URL scheme or hostname.") - - port = p.port or (443 if p.scheme == "https" else 80) - if ( - len(settings.WEBHOOKS_ALLOWED_PORTS) > 0 - and port not in settings.WEBHOOKS_ALLOWED_PORTS - ): - logger.warning("Webhook blocked: port not permitted") - raise ValueError("Destination port not permitted.") - - ip = _resolve_first_ip(p.hostname) - if not ip or ( - not _is_public_ip(ip) and not settings.WEBHOOKS_ALLOW_INTERNAL_REQUESTS - ): - logger.warning("Webhook blocked: destination not allowed") - raise ValueError("Destination host is not allowed.") - - try: - post_args = { - "url": url, - "headers": { - k: v for k, v in (headers or {}).items() if k.lower() != "host" - }, - "files": files or None, - "timeout": 5.0, - "follow_redirects": False, - } - if as_json: - post_args["json"] = data - elif isinstance(data, dict): - post_args["data"] = data - else: - post_args["content"] = data - - httpx.post( - **post_args, - ).raise_for_status() - logger.info( - f"Webhook sent to {url}", - ) - except Exception as e: - logger.error( - f"Failed attempt sending webhook to {url}: {e}", - ) - raise e - - def run_workflows( trigger_type: WorkflowTrigger.WorkflowTriggerType, document: Document | ConsumableDocument, @@ -757,539 +761,16 @@ def run_workflows( overrides: DocumentMetadataOverrides | None = None, original_file: Path | None = None, ) -> tuple[DocumentMetadataOverrides, str] | None: - """Run workflows which match a Document (or ConsumableDocument) for a specific trigger type or a single workflow if given. - - Assignment or removal actions are either applied directly to the document or an overrides object. If an overrides - object is provided, the function returns the object with the applied changes or None if no actions were applied and a string - of messages for each action. If no overrides object is provided, the changes are applied directly to the document and the - function returns None. """ + Execute workflows matching a document for the given trigger. When `overrides` is provided + (consumption flow), actions mutate that object and the function returns `(overrides, messages)`. + Otherwise actions mutate the actual document and return nothing. - def assignment_action(): - if action.assign_tags.exists(): - tag_ids_to_add: set[int] = set() - for tag in action.assign_tags.all(): - tag_ids_to_add.add(tag.pk) - tag_ids_to_add.update(int(pk) for pk in tag.get_ancestors_pks()) + Attachments for email/webhook actions use `original_file` when given, otherwise fall back to + `document.source_path` (Document) or `document.original_file` (ConsumableDocument). - if not use_overrides: - doc_tag_ids[:] = list(set(doc_tag_ids) | tag_ids_to_add) - else: - if overrides.tag_ids is None: - overrides.tag_ids = [] - overrides.tag_ids = list(set(overrides.tag_ids) | tag_ids_to_add) - - if action.assign_correspondent: - if not use_overrides: - document.correspondent = action.assign_correspondent - else: - overrides.correspondent_id = action.assign_correspondent.pk - - if action.assign_document_type: - if not use_overrides: - document.document_type = action.assign_document_type - else: - overrides.document_type_id = action.assign_document_type.pk - - if action.assign_storage_path: - if not use_overrides: - document.storage_path = action.assign_storage_path - else: - overrides.storage_path_id = action.assign_storage_path.pk - - if action.assign_owner: - if not use_overrides: - document.owner = action.assign_owner - else: - overrides.owner_id = action.assign_owner.pk - - if action.assign_title: - if not use_overrides: - try: - document.title = parse_w_workflow_placeholders( - action.assign_title, - document.correspondent.name if document.correspondent else "", - document.document_type.name if document.document_type else "", - document.owner.username if document.owner else "", - timezone.localtime(document.added), - document.original_filename or "", - document.filename or "", - document.created, - ) - except Exception: - logger.exception( - f"Error occurred parsing title assignment '{action.assign_title}', falling back to original", - extra={"group": logging_group}, - ) - else: - overrides.title = action.assign_title - - if any( - [ - action.assign_view_users.exists(), - action.assign_view_groups.exists(), - action.assign_change_users.exists(), - action.assign_change_groups.exists(), - ], - ): - permissions = { - "view": { - "users": action.assign_view_users.values_list("id", flat=True), - "groups": action.assign_view_groups.values_list("id", flat=True), - }, - "change": { - "users": action.assign_change_users.values_list("id", flat=True), - "groups": action.assign_change_groups.values_list("id", flat=True), - }, - } - if not use_overrides: - set_permissions_for_object( - permissions=permissions, - object=document, - merge=True, - ) - else: - overrides.view_users = list( - set( - (overrides.view_users or []) - + list(permissions["view"]["users"]), - ), - ) - overrides.view_groups = list( - set( - (overrides.view_groups or []) - + list(permissions["view"]["groups"]), - ), - ) - overrides.change_users = list( - set( - (overrides.change_users or []) - + list(permissions["change"]["users"]), - ), - ) - overrides.change_groups = list( - set( - (overrides.change_groups or []) - + list(permissions["change"]["groups"]), - ), - ) - - if action.assign_custom_fields.exists(): - if not use_overrides: - for field in action.assign_custom_fields.all(): - value_field_name = CustomFieldInstance.get_value_field_name( - data_type=field.data_type, - ) - args = { - value_field_name: action.assign_custom_fields_values.get( - str(field.pk), - None, - ), - } - # for some reason update_or_create doesn't work here - instance = CustomFieldInstance.objects.filter( - field=field, - document=document, - ).first() - if instance and args[value_field_name] is not None: - setattr(instance, value_field_name, args[value_field_name]) - instance.save() - elif not instance: - CustomFieldInstance.objects.create( - **args, - field=field, - document=document, - ) - else: - if overrides.custom_fields is None: - overrides.custom_fields = {} - overrides.custom_fields.update( - { - field.pk: action.assign_custom_fields_values.get( - str(field.pk), - None, - ) - for field in action.assign_custom_fields.all() - }, - ) - - def removal_action(): - if action.remove_all_tags: - if not use_overrides: - doc_tag_ids.clear() - else: - overrides.tag_ids = None - else: - tag_ids_to_remove: set[int] = set() - for tag in action.remove_tags.all(): - tag_ids_to_remove.add(tag.pk) - tag_ids_to_remove.update(int(pk) for pk in tag.get_descendants_pks()) - - if not use_overrides: - doc_tag_ids[:] = [t for t in doc_tag_ids if t not in tag_ids_to_remove] - elif overrides.tag_ids: - overrides.tag_ids = [ - t for t in overrides.tag_ids if t not in tag_ids_to_remove - ] - - if not use_overrides and ( - action.remove_all_correspondents - or ( - document.correspondent - and action.remove_correspondents.filter( - pk=document.correspondent.pk, - ).exists() - ) - ): - document.correspondent = None - elif use_overrides and ( - action.remove_all_correspondents - or ( - overrides.correspondent_id - and action.remove_correspondents.filter( - pk=overrides.correspondent_id, - ).exists() - ) - ): - overrides.correspondent_id = None - - if not use_overrides and ( - action.remove_all_document_types - or ( - document.document_type - and action.remove_document_types.filter( - pk=document.document_type.pk, - ).exists() - ) - ): - document.document_type = None - elif use_overrides and ( - action.remove_all_document_types - or ( - overrides.document_type_id - and action.remove_document_types.filter( - pk=overrides.document_type_id, - ).exists() - ) - ): - overrides.document_type_id = None - - if not use_overrides and ( - action.remove_all_storage_paths - or ( - document.storage_path - and action.remove_storage_paths.filter( - pk=document.storage_path.pk, - ).exists() - ) - ): - document.storage_path = None - elif use_overrides and ( - action.remove_all_storage_paths - or ( - overrides.storage_path_id - and action.remove_storage_paths.filter( - pk=overrides.storage_path_id, - ).exists() - ) - ): - overrides.storage_path_id = None - - if not use_overrides and ( - action.remove_all_owners - or ( - document.owner - and action.remove_owners.filter(pk=document.owner.pk).exists() - ) - ): - document.owner = None - elif use_overrides and ( - action.remove_all_owners - or ( - overrides.owner_id - and action.remove_owners.filter(pk=overrides.owner_id).exists() - ) - ): - overrides.owner_id = None - - if action.remove_all_permissions: - if not use_overrides: - permissions = { - "view": {"users": [], "groups": []}, - "change": {"users": [], "groups": []}, - } - set_permissions_for_object( - permissions=permissions, - object=document, - merge=False, - ) - else: - overrides.view_users = None - overrides.view_groups = None - overrides.change_users = None - overrides.change_groups = None - elif any( - [ - action.remove_view_users.exists(), - action.remove_view_groups.exists(), - action.remove_change_users.exists(), - action.remove_change_groups.exists(), - ], - ): - if not use_overrides: - for user in action.remove_view_users.all(): - remove_perm("view_document", user, document) - for user in action.remove_change_users.all(): - remove_perm("change_document", user, document) - for group in action.remove_view_groups.all(): - remove_perm("view_document", group, document) - for group in action.remove_change_groups.all(): - remove_perm("change_document", group, document) - else: - if overrides.view_users: - for user in action.remove_view_users.filter( - pk__in=overrides.view_users, - ): - overrides.view_users.remove(user.pk) - if overrides.change_users: - for user in action.remove_change_users.filter( - pk__in=overrides.change_users, - ): - overrides.change_users.remove(user.pk) - if overrides.view_groups: - for group in action.remove_view_groups.filter( - pk__in=overrides.view_groups, - ): - overrides.view_groups.remove(group.pk) - if overrides.change_groups: - for group in action.remove_change_groups.filter( - pk__in=overrides.change_groups, - ): - overrides.change_groups.remove(group.pk) - - if action.remove_all_custom_fields: - if not use_overrides: - CustomFieldInstance.objects.filter(document=document).hard_delete() - else: - overrides.custom_fields = None - elif action.remove_custom_fields.exists(): - if not use_overrides: - CustomFieldInstance.objects.filter( - field__in=action.remove_custom_fields.all(), - document=document, - ).hard_delete() - elif overrides.custom_fields: - for field in action.remove_custom_fields.filter( - pk__in=overrides.custom_fields.keys(), - ): - overrides.custom_fields.pop(field.pk, None) - - def email_action(): - if not settings.EMAIL_ENABLED: - logger.error( - "Email backend has not been configured, cannot send email notifications", - extra={"group": logging_group}, - ) - return - - if not use_overrides: - title = document.title - doc_url = f"{settings.PAPERLESS_URL}/documents/{document.pk}/" - correspondent = ( - document.correspondent.name if document.correspondent else "" - ) - document_type = ( - document.document_type.name if document.document_type else "" - ) - owner_username = document.owner.username if document.owner else "" - filename = document.original_filename or "" - current_filename = document.filename or "" - added = timezone.localtime(document.added) - created = document.created - else: - title = overrides.title if overrides.title else str(document.original_file) - doc_url = "" - correspondent = ( - Correspondent.objects.filter(pk=overrides.correspondent_id).first() - if overrides.correspondent_id - else "" - ) - document_type = ( - DocumentType.objects.filter(pk=overrides.document_type_id).first().name - if overrides.document_type_id - else "" - ) - owner_username = ( - User.objects.filter(pk=overrides.owner_id).first().username - if overrides.owner_id - else "" - ) - filename = document.original_file if document.original_file else "" - current_filename = filename - added = timezone.localtime(timezone.now()) - created = overrides.created - - subject = ( - parse_w_workflow_placeholders( - action.email.subject, - correspondent, - document_type, - owner_username, - added, - filename, - current_filename, - created, - title, - doc_url, - ) - if action.email.subject - else "" - ) - body = ( - parse_w_workflow_placeholders( - action.email.body, - correspondent, - document_type, - owner_username, - added, - filename, - current_filename, - created, - title, - doc_url, - ) - if action.email.body - else "" - ) - try: - n_messages = send_email( - subject=subject, - body=body, - to=action.email.to.split(","), - attachment=original_file if action.email.include_document else None, - attachment_mime_type=document.mime_type, - ) - logger.debug( - f"Sent {n_messages} notification email(s) to {action.email.to}", - extra={"group": logging_group}, - ) - except Exception as e: - logger.exception( - f"Error occurred sending notification email: {e}", - extra={"group": logging_group}, - ) - - def webhook_action(): - if not use_overrides: - title = document.title - doc_url = f"{settings.PAPERLESS_URL}/documents/{document.pk}/" - correspondent = ( - document.correspondent.name if document.correspondent else "" - ) - document_type = ( - document.document_type.name if document.document_type else "" - ) - owner_username = document.owner.username if document.owner else "" - filename = document.original_filename or "" - current_filename = document.filename or "" - added = timezone.localtime(document.added) - created = document.created - else: - title = overrides.title if overrides.title else str(document.original_file) - doc_url = "" - correspondent = ( - Correspondent.objects.filter(pk=overrides.correspondent_id).first() - if overrides.correspondent_id - else "" - ) - document_type = ( - DocumentType.objects.filter(pk=overrides.document_type_id).first().name - if overrides.document_type_id - else "" - ) - owner_username = ( - User.objects.filter(pk=overrides.owner_id).first().username - if overrides.owner_id - else "" - ) - filename = document.original_file if document.original_file else "" - current_filename = filename - added = timezone.localtime(timezone.now()) - created = overrides.created - - try: - data = {} - if action.webhook.use_params: - if action.webhook.params: - try: - for key, value in action.webhook.params.items(): - data[key] = parse_w_workflow_placeholders( - value, - correspondent, - document_type, - owner_username, - added, - filename, - current_filename, - created, - title, - doc_url, - ) - except Exception as e: - logger.error( - f"Error occurred parsing webhook params: {e}", - extra={"group": logging_group}, - ) - elif action.webhook.body: - data = parse_w_workflow_placeholders( - action.webhook.body, - correspondent, - document_type, - owner_username, - added, - filename, - current_filename, - created, - title, - doc_url, - ) - headers = {} - if action.webhook.headers: - try: - headers = { - str(k): str(v) for k, v in action.webhook.headers.items() - } - except Exception as e: - logger.error( - f"Error occurred parsing webhook headers: {e}", - extra={"group": logging_group}, - ) - files = None - if action.webhook.include_document: - with original_file.open("rb") as f: - files = { - "file": ( - filename, - f.read(), - document.mime_type, - ), - } - send_webhook.delay( - url=action.webhook.url, - data=data, - headers=headers, - files=files, - as_json=action.webhook.as_json, - ) - logger.debug( - f"Webhook to {action.webhook.url} queued", - extra={"group": logging_group}, - ) - except Exception as e: - logger.exception( - f"Error occurred sending webhook: {e}", - extra={"group": logging_group}, - ) + Passing `workflow_to_run` skips the workflow query (currently only used by scheduled runs). + """ use_overrides = overrides is not None if original_file is None: @@ -1298,30 +779,7 @@ def run_workflows( ) messages = [] - workflows = ( - ( - Workflow.objects.filter(enabled=True, triggers__type=trigger_type) - .prefetch_related( - "actions", - "actions__assign_view_users", - "actions__assign_view_groups", - "actions__assign_change_users", - "actions__assign_change_groups", - "actions__assign_custom_fields", - "actions__remove_tags", - "actions__remove_correspondents", - "actions__remove_document_types", - "actions__remove_storage_paths", - "actions__remove_custom_fields", - "actions__remove_owners", - "triggers", - ) - .order_by("order") - .distinct() - ) - if workflow_to_run is None - else [workflow_to_run] - ) + workflows = get_workflows_for_trigger(trigger_type, workflow_to_run) for workflow in workflows: if not use_overrides: @@ -1333,7 +791,7 @@ def run_workflows( if matching.document_matches_workflow(document, workflow, trigger_type): action: WorkflowAction - for action in workflow.actions.all(): + for action in workflow.actions.order_by("order", "pk"): message = f"Applying {action} from {workflow}" if not use_overrides: logger.info(message, extra={"group": logging_group}) @@ -1341,13 +799,41 @@ def run_workflows( messages.append(message) if action.type == WorkflowAction.WorkflowActionType.ASSIGNMENT: - assignment_action() + if use_overrides and overrides: + apply_assignment_to_overrides(action, overrides) + else: + apply_assignment_to_document( + action, + document, + doc_tag_ids, + logging_group, + ) elif action.type == WorkflowAction.WorkflowActionType.REMOVAL: - removal_action() + if use_overrides and overrides: + apply_removal_to_overrides(action, overrides) + else: + apply_removal_to_document(action, document, doc_tag_ids) elif action.type == WorkflowAction.WorkflowActionType.EMAIL: - email_action() + context = build_workflow_action_context(document, overrides) + execute_email_action( + action, + document, + context, + logging_group, + original_file, + trigger_type, + ) elif action.type == WorkflowAction.WorkflowActionType.WEBHOOK: - webhook_action() + context = build_workflow_action_context(document, overrides) + execute_webhook_action( + action, + document, + context, + logging_group, + original_file, + ) + elif action.type == WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL: + execute_password_removal_action(action, document, logging_group) if not use_overrides: # limit title to 128 characters @@ -1367,7 +853,7 @@ def run_workflows( @before_task_publish.connect -def before_task_publish_handler(sender=None, headers=None, body=None, **kwargs): +def before_task_publish_handler(sender=None, headers=None, body=None, **kwargs) -> None: """ Creates the PaperlessTask object in a pending state. This is sent before the task reaches the broker, but before it begins executing on a worker. @@ -1409,7 +895,7 @@ def before_task_publish_handler(sender=None, headers=None, body=None, **kwargs): @task_prerun.connect -def task_prerun_handler(sender=None, task_id=None, task=None, **kwargs): +def task_prerun_handler(sender=None, task_id=None, task=None, **kwargs) -> None: """ Updates the PaperlessTask to be started. Sent before the task begins execution @@ -1439,7 +925,7 @@ def task_postrun_handler( retval=None, state=None, **kwargs, -): +) -> None: """ Updates the result of the PaperlessTask. @@ -1450,7 +936,7 @@ def task_postrun_handler( task_instance = PaperlessTask.objects.filter(task_id=task_id).first() if task_instance is not None: - task_instance.status = state + task_instance.status = state or states.FAILURE task_instance.result = retval task_instance.date_done = timezone.now() task_instance.save() @@ -1468,7 +954,7 @@ def task_failure_handler( args=None, traceback=None, **kwargs, -): +) -> None: """ Updates the result of a failed PaperlessTask. @@ -1488,7 +974,7 @@ def task_failure_handler( @worker_process_init.connect -def close_connection_pool_on_worker_init(**kwargs): +def close_connection_pool_on_worker_init(**kwargs) -> None: """ Close the DB connection pool for each Celery child process after it starts. @@ -1500,3 +986,26 @@ def close_connection_pool_on_worker_init(**kwargs): for conn in connections.all(initialized_only=True): if conn.alias == "default" and hasattr(conn, "pool") and conn.pool: conn.close_pool() + + +def add_or_update_document_in_llm_index(sender, document, **kwargs): + """ + Add or update a document in the LLM index when it is created or updated. + """ + ai_config = AIConfig() + if ai_config.llm_index_enabled: + from documents.tasks import update_document_in_llm_index + + update_document_in_llm_index.delay(document) + + +@receiver(models.signals.post_delete, sender=Document) +def delete_document_from_llm_index(sender, instance: Document, **kwargs): + """ + Delete a document from the LLM index when it is deleted. + """ + ai_config = AIConfig() + if ai_config.llm_index_enabled: + from documents.tasks import remove_document_from_llm_index + + remove_document_from_llm_index.delay(instance) diff --git a/src/documents/tasks.py b/src/documents/tasks.py index 8f928d61a..f884a99ee 100644 --- a/src/documents/tasks.py +++ b/src/documents/tasks.py @@ -3,8 +3,10 @@ import hashlib import logging import shutil import uuid +import zipfile from pathlib import Path from tempfile import TemporaryDirectory +from tempfile import mkstemp import tqdm from celery import Task @@ -22,9 +24,12 @@ from whoosh.writing import AsyncWriter from documents import index from documents import sanity_checker from documents.barcodes import BarcodePlugin +from documents.bulk_download import ArchiveOnlyStrategy +from documents.bulk_download import OriginalsOnlyStrategy from documents.caching import clear_document_caches from documents.classifier import DocumentClassifier from documents.classifier import load_classifier +from documents.consumer import AsnCheckPlugin from documents.consumer import ConsumerPlugin from documents.consumer import ConsumerPreflightPlugin from documents.consumer import WorkflowTriggerPlugin @@ -39,9 +44,10 @@ from documents.models import CustomFieldInstance from documents.models import Document from documents.models import DocumentType from documents.models import PaperlessTask +from documents.models import ShareLink +from documents.models import ShareLinkBundle from documents.models import StoragePath from documents.models import Tag -from documents.models import Workflow from documents.models import WorkflowRun from documents.models import WorkflowTrigger from documents.parsers import DocumentParser @@ -54,6 +60,11 @@ from documents.sanity_checker import SanityCheckFailedException from documents.signals import document_updated from documents.signals.handlers import cleanup_document_deletion from documents.signals.handlers import run_workflows +from documents.workflows.utils import get_workflows_for_trigger +from paperless.config import AIConfig +from paperless_ai.indexing import llm_index_add_or_update_document +from paperless_ai.indexing import llm_index_remove_document +from paperless_ai.indexing import update_llm_index if settings.AUDIT_LOG_ENABLED: from auditlog.models import LogEntry @@ -61,13 +72,13 @@ logger = logging.getLogger("paperless.tasks") @shared_task -def index_optimize(): +def index_optimize() -> None: ix = index.open_index() writer = AsyncWriter(ix) writer.commit(optimize=True) -def index_reindex(*, progress_bar_disable=False): +def index_reindex(*, progress_bar_disable=False) -> None: documents = Document.objects.all() ix = index.open_index(recreate=True) @@ -78,7 +89,7 @@ def index_reindex(*, progress_bar_disable=False): @shared_task -def train_classifier(*, scheduled=True): +def train_classifier(*, scheduled=True) -> None: task = PaperlessTask.objects.create( type=PaperlessTask.TaskType.SCHEDULED_TASK if scheduled @@ -150,8 +161,10 @@ def consume_file( if input_doc.head_version_id is not None else [ ConsumerPreflightPlugin, + AsnCheckPlugin, CollatePlugin, BarcodePlugin, + AsnCheckPlugin, # Re-run ASN check after barcode reading WorkflowTriggerPlugin, ConsumerPlugin, ] @@ -228,7 +241,7 @@ def sanity_check(*, scheduled=True, raise_on_error=True): @shared_task -def bulk_update_documents(document_ids): +def bulk_update_documents(document_ids) -> None: documents = Document.objects.filter(id__in=document_ids) ix = index.open_index() @@ -246,9 +259,16 @@ def bulk_update_documents(document_ids): for doc in documents: index.update_document(writer, doc) + ai_config = AIConfig() + if ai_config.llm_index_enabled: + update_llm_index( + progress_bar_disable=True, + rebuild=False, + ) + @shared_task -def update_document_content_maybe_archive_file(document_id): +def update_document_content_maybe_archive_file(document_id) -> None: """ Re-creates OCR content and thumbnail for a document, and archive file if it exists. @@ -345,6 +365,10 @@ def update_document_content_maybe_archive_file(document_id): with index.open_index_writer() as writer: index.update_document(writer, document) + ai_config = AIConfig() + if ai_config.llm_index_enabled: + llm_index_add_or_update_document(document) + clear_document_caches(document.pk) except Exception: @@ -356,7 +380,7 @@ def update_document_content_maybe_archive_file(document_id): @shared_task -def empty_trash(doc_ids=None): +def empty_trash(doc_ids=None) -> None: if doc_ids is None: logger.info("Emptying trash of all expired documents") documents = ( @@ -393,7 +417,7 @@ def empty_trash(doc_ids=None): @shared_task -def check_scheduled_workflows(): +def check_scheduled_workflows() -> None: """ Check and run all enabled scheduled workflows. @@ -404,13 +428,8 @@ def check_scheduled_workflows(): Once a document satisfies this condition, and recurring/non-recurring constraints are met, the workflow is run. """ - scheduled_workflows: list[Workflow] = ( - Workflow.objects.filter( - triggers__type=WorkflowTrigger.WorkflowTriggerType.SCHEDULED, - enabled=True, - ) - .distinct() - .prefetch_related("triggers") + scheduled_workflows = get_workflows_for_trigger( + WorkflowTrigger.WorkflowTriggerType.SCHEDULED, ) if scheduled_workflows.count() > 0: logger.debug(f"Checking {len(scheduled_workflows)} scheduled workflows") @@ -502,7 +521,7 @@ def check_scheduled_workflows(): trigger.schedule_is_recurring and workflow_runs.exists() and ( - workflow_runs.last().run_at + workflow_runs.first().run_at > now - datetime.timedelta( days=trigger.schedule_recurring_interval_days, @@ -567,3 +586,169 @@ def update_document_parent_tags(tag: Tag, new_parent: Tag) -> None: if affected: bulk_update_documents.delay(document_ids=list(affected)) + + +@shared_task +def llmindex_index( + *, + progress_bar_disable=True, + rebuild=False, + scheduled=True, + auto=False, +) -> None: + ai_config = AIConfig() + if ai_config.llm_index_enabled: + task = PaperlessTask.objects.create( + type=PaperlessTask.TaskType.SCHEDULED_TASK + if scheduled + else PaperlessTask.TaskType.AUTO + if auto + else PaperlessTask.TaskType.MANUAL_TASK, + task_id=uuid.uuid4(), + task_name=PaperlessTask.TaskName.LLMINDEX_UPDATE, + status=states.STARTED, + date_created=timezone.now(), + date_started=timezone.now(), + ) + from paperless_ai.indexing import update_llm_index + + try: + result = update_llm_index( + progress_bar_disable=progress_bar_disable, + rebuild=rebuild, + ) + task.status = states.SUCCESS + task.result = result + except Exception as e: + logger.error("LLM index error: " + str(e)) + task.status = states.FAILURE + task.result = str(e) + + task.date_done = timezone.now() + task.save(update_fields=["status", "result", "date_done"]) + else: + logger.info("LLM index is disabled, skipping update.") + + +@shared_task +def update_document_in_llm_index(document) -> None: + llm_index_add_or_update_document(document) + + +@shared_task +def remove_document_from_llm_index(document) -> None: + llm_index_remove_document(document) + + +@shared_task +def build_share_link_bundle(bundle_id: int) -> None: + try: + bundle = ( + ShareLinkBundle.objects.filter(pk=bundle_id) + .prefetch_related("documents") + .get() + ) + except ShareLinkBundle.DoesNotExist: + logger.warning("Share link bundle %s no longer exists.", bundle_id) + return + + bundle.remove_file() + bundle.status = ShareLinkBundle.Status.PROCESSING + bundle.last_error = None + bundle.size_bytes = None + bundle.built_at = None + bundle.file_path = "" + bundle.save( + update_fields=[ + "status", + "last_error", + "size_bytes", + "built_at", + "file_path", + ], + ) + + documents = list(bundle.documents.all().order_by("pk")) + + _, temp_zip_path_str = mkstemp(suffix=".zip", dir=settings.SCRATCH_DIR) + temp_zip_path = Path(temp_zip_path_str) + + try: + strategy_class = ( + ArchiveOnlyStrategy + if bundle.file_version == ShareLink.FileVersion.ARCHIVE + else OriginalsOnlyStrategy + ) + with zipfile.ZipFile(temp_zip_path, "w", zipfile.ZIP_DEFLATED) as zipf: + strategy = strategy_class(zipf) + for document in documents: + strategy.add_document(document) + + output_dir = settings.SHARE_LINK_BUNDLE_DIR + output_dir.mkdir(parents=True, exist_ok=True) + final_path = (output_dir / f"{bundle.slug}.zip").resolve() + if final_path.exists(): + final_path.unlink() + shutil.move(temp_zip_path, final_path) + + bundle.file_path = f"{bundle.slug}.zip" + bundle.size_bytes = final_path.stat().st_size + bundle.status = ShareLinkBundle.Status.READY + bundle.built_at = timezone.now() + bundle.last_error = None + bundle.save( + update_fields=[ + "file_path", + "size_bytes", + "status", + "built_at", + "last_error", + ], + ) + logger.info("Built share link bundle %s", bundle.pk) + except Exception as exc: + logger.exception( + "Failed to build share link bundle %s: %s", + bundle_id, + exc, + ) + bundle.status = ShareLinkBundle.Status.FAILED + bundle.last_error = { + "bundle_id": bundle_id, + "exception_type": exc.__class__.__name__, + "message": str(exc), + "timestamp": timezone.now().isoformat(), + } + bundle.save(update_fields=["status", "last_error"]) + try: + temp_zip_path.unlink() + except OSError: + pass + raise + finally: + try: + temp_zip_path.unlink(missing_ok=True) + except OSError: + pass + + +@shared_task +def cleanup_expired_share_link_bundles() -> None: + now = timezone.now() + expired_qs = ShareLinkBundle.objects.filter( + expiration__isnull=False, + expiration__lt=now, + ) + count = 0 + for bundle in expired_qs.iterator(): + count += 1 + try: + bundle.delete() + except Exception as exc: + logger.warning( + "Failed to delete expired share link bundle %s: %s", + bundle.pk, + exc, + ) + if count: + logger.info("Deleted %s expired share link bundle(s)", count) diff --git a/src/documents/templating/filepath.py b/src/documents/templating/filepath.py index 00de8de2c..3647948ea 100644 --- a/src/documents/templating/filepath.py +++ b/src/documents/templating/filepath.py @@ -52,6 +52,33 @@ class FilePathTemplate(Template): return clean_filepath(original_render) +class PlaceholderString(str): + """ + String subclass used as a sentinel for empty metadata values inside templates. + + - Renders as \"-none-\" to preserve existing filename cleaning logic. + - Compares equal to either \"-none-\" or \"none\" so templates can check for either. + - Evaluates to False so {% if correspondent %} behaves intuitively. + """ + + def __new__(cls, value: str = "-none-"): + return super().__new__(cls, value) + + def __bool__(self) -> bool: + return False + + def __eq__(self, other) -> bool: + if isinstance(other, str) and other == "none": + other = "-none-" + return super().__eq__(other) + + def __ne__(self, other) -> bool: + return not self.__eq__(other) + + +NO_VALUE_PLACEHOLDER = PlaceholderString("-none-") + + _template_environment.undefined = _LogStrictUndefined _template_environment.filters["get_cf_value"] = get_cf_value @@ -81,7 +108,6 @@ def create_dummy_document(): page_count=5, created=timezone.now(), modified=timezone.now(), - storage_type=Document.STORAGE_TYPE_UNENCRYPTED, added=timezone.now(), filename="/dummy/filename.pdf", archive_filename="/dummy/archive_filename.pdf", @@ -128,7 +154,7 @@ def get_added_date_context(document: Document) -> dict[str, str]: def get_basic_metadata_context( document: Document, *, - no_value_default: str, + no_value_default: str = NO_VALUE_PLACEHOLDER, ) -> dict[str, str]: """ Given a Document, constructs some basic information about it. If certain values are not set, @@ -235,6 +261,17 @@ def get_custom_fields_context( return field_data +def _is_safe_relative_path(value: str) -> bool: + if value == "": + return True + + path = PurePath(value) + if path.is_absolute() or path.drive: + return False + + return ".." not in path.parts + + def validate_filepath_template_and_render( template_string: str, document: Document | None = None, @@ -266,7 +303,7 @@ def validate_filepath_template_and_render( # Build the context dictionary context = ( {"document": document} - | get_basic_metadata_context(document, no_value_default="-none-") + | get_basic_metadata_context(document, no_value_default=NO_VALUE_PLACEHOLDER) | get_creation_date_context(document) | get_added_date_context(document) | get_tags_context(tags_list) @@ -282,6 +319,12 @@ def validate_filepath_template_and_render( ) rendered_template = template.render(context) + if not _is_safe_relative_path(rendered_template): + logger.warning( + "Template rendered an unsafe path (absolute or containing traversal).", + ) + return None + # We're good! return rendered_template except UndefinedError: diff --git a/src/documents/templating/workflows.py b/src/documents/templating/workflows.py index 25f1e57ef..66fd97e01 100644 --- a/src/documents/templating/workflows.py +++ b/src/documents/templating/workflows.py @@ -40,6 +40,7 @@ def parse_w_workflow_placeholders( created: date | None = None, doc_title: str | None = None, doc_url: str | None = None, + doc_id: int | None = None, ) -> str: """ Available title placeholders for Workflows depend on what has already been assigned, @@ -79,8 +80,10 @@ def parse_w_workflow_placeholders( formatting.update({"doc_title": doc_title}) if doc_url is not None: formatting.update({"doc_url": doc_url}) + if doc_id is not None: + formatting.update({"doc_id": str(doc_id)}) - logger.debug(f"Jinja Template is : {text}") + logger.debug(f"Parsing Workflow Jinja template: {text}") try: template = _template_environment.from_string( text, diff --git a/src/documents/tests/date_parsing/__init__.py b/src/documents/tests/date_parsing/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/documents/tests/date_parsing/conftest.py b/src/documents/tests/date_parsing/conftest.py new file mode 100644 index 000000000..ea9e2447d --- /dev/null +++ b/src/documents/tests/date_parsing/conftest.py @@ -0,0 +1,82 @@ +import datetime +from collections.abc import Generator +from typing import Any + +import pytest +import pytest_django + +from documents.plugins.date_parsing import _discover_parser_class +from documents.plugins.date_parsing.base import DateParserConfig +from documents.plugins.date_parsing.regex_parser import RegexDateParserPlugin + + +@pytest.fixture +def base_config() -> DateParserConfig: + """Basic configuration for date parser testing.""" + return DateParserConfig( + languages=["en"], + timezone_str="UTC", + ignore_dates=set(), + reference_time=datetime.datetime( + 2024, + 1, + 15, + 12, + 0, + 0, + tzinfo=datetime.timezone.utc, + ), + filename_date_order="YMD", + content_date_order="DMY", + ) + + +@pytest.fixture +def config_with_ignore_dates() -> DateParserConfig: + """Configuration with dates to ignore.""" + return DateParserConfig( + languages=["en", "de"], + timezone_str="America/New_York", + ignore_dates={datetime.date(2024, 1, 1), datetime.date(2024, 12, 25)}, + reference_time=datetime.datetime( + 2024, + 1, + 15, + 12, + 0, + 0, + tzinfo=datetime.timezone.utc, + ), + filename_date_order="DMY", + content_date_order="MDY", + ) + + +@pytest.fixture +def regex_parser(base_config: DateParserConfig) -> RegexDateParserPlugin: + """Instance of RegexDateParser with base config.""" + return RegexDateParserPlugin(base_config) + + +@pytest.fixture +def clear_lru_cache() -> Generator[None, None, None]: + """ + Ensure the LRU cache for _discover_parser_class is cleared + before and after any test that depends on it. + """ + _discover_parser_class.cache_clear() + yield + _discover_parser_class.cache_clear() + + +@pytest.fixture +def mock_date_parser_settings(settings: pytest_django.fixtures.SettingsWrapper) -> Any: + """ + Override Django settings for the duration of date parser tests. + """ + settings.DATE_PARSER_LANGUAGES = ["en", "de"] + settings.TIME_ZONE = "UTC" + settings.IGNORE_DATES = [datetime.date(1900, 1, 1)] + settings.FILENAME_DATE_ORDER = "YMD" + settings.DATE_ORDER = "DMY" + return settings diff --git a/src/documents/tests/date_parsing/test_date_parser_plugin_loading.py b/src/documents/tests/date_parsing/test_date_parser_plugin_loading.py new file mode 100644 index 000000000..5d870fea1 --- /dev/null +++ b/src/documents/tests/date_parsing/test_date_parser_plugin_loading.py @@ -0,0 +1,229 @@ +import datetime +import logging +from collections.abc import Iterator +from importlib.metadata import EntryPoint + +import pytest +import pytest_mock +from django.utils import timezone + +from documents.plugins.date_parsing import DATE_PARSER_ENTRY_POINT_GROUP +from documents.plugins.date_parsing import _discover_parser_class +from documents.plugins.date_parsing import get_date_parser +from documents.plugins.date_parsing.base import DateParserConfig +from documents.plugins.date_parsing.base import DateParserPluginBase +from documents.plugins.date_parsing.regex_parser import RegexDateParserPlugin + + +class AlphaParser(DateParserPluginBase): + def parse(self, filename: str, content: str) -> Iterator[datetime.datetime]: + yield timezone.now() + + +class BetaParser(DateParserPluginBase): + def parse(self, filename: str, content: str) -> Iterator[datetime.datetime]: + yield timezone.now() + + +@pytest.mark.date_parsing +@pytest.mark.usefixtures("clear_lru_cache") +class TestDiscoverParserClass: + """Tests for the _discover_parser_class() function.""" + + def test_returns_default_when_no_plugins_found( + self, + mocker: pytest_mock.MockerFixture, + ) -> None: + mocker.patch( + "documents.plugins.date_parsing.entry_points", + return_value=(), + ) + result = _discover_parser_class() + assert result is RegexDateParserPlugin + + def test_returns_default_when_entrypoint_query_fails( + self, + mocker: pytest_mock.MockerFixture, + caplog: pytest.LogCaptureFixture, + ) -> None: + mocker.patch( + "documents.plugins.date_parsing.entry_points", + side_effect=RuntimeError("boom"), + ) + result = _discover_parser_class() + assert result is RegexDateParserPlugin + assert "Could not query entry points" in caplog.text + + def test_filters_out_invalid_plugins( + self, + mocker: pytest_mock.MockerFixture, + caplog: pytest.LogCaptureFixture, + ) -> None: + fake_ep = mocker.MagicMock(spec=EntryPoint) + fake_ep.name = "bad_plugin" + fake_ep.load.return_value = object # not subclass of DateParser + + mocker.patch( + "documents.plugins.date_parsing.entry_points", + return_value=(fake_ep,), + ) + + result = _discover_parser_class() + assert result is RegexDateParserPlugin + assert "does not subclass DateParser" in caplog.text + + def test_skips_plugins_that_fail_to_load( + self, + mocker: pytest_mock.MockerFixture, + caplog: pytest.LogCaptureFixture, + ) -> None: + fake_ep = mocker.MagicMock(spec=EntryPoint) + fake_ep.name = "failing_plugin" + fake_ep.load.side_effect = ImportError("cannot import") + + mocker.patch( + "documents.plugins.date_parsing.entry_points", + return_value=(fake_ep,), + ) + + result = _discover_parser_class() + assert result is RegexDateParserPlugin + assert "Unable to load date parser plugin failing_plugin" in caplog.text + + def test_returns_single_valid_plugin_without_warning( + self, + mocker: pytest_mock.MockerFixture, + caplog: pytest.LogCaptureFixture, + ) -> None: + """If exactly one valid plugin is discovered, it should be returned without logging a warning.""" + + ep = mocker.MagicMock(spec=EntryPoint) + ep.name = "alpha" + ep.load.return_value = AlphaParser + + mock_entry_points = mocker.patch( + "documents.plugins.date_parsing.entry_points", + return_value=(ep,), + ) + + with caplog.at_level( + logging.WARNING, + logger="documents.plugins.date_parsing", + ): + result = _discover_parser_class() + + # It should have called entry_points with the correct group + mock_entry_points.assert_called_once_with(group=DATE_PARSER_ENTRY_POINT_GROUP) + + # The discovered class should be exactly our AlphaParser + assert result is AlphaParser + + # No warnings should have been logged + assert not any( + "Multiple date parsers found" in record.message for record in caplog.records + ), "Unexpected warning logged when only one plugin was found" + + def test_returns_first_valid_plugin_by_name( + self, + mocker: pytest_mock.MockerFixture, + ) -> None: + ep_a = mocker.MagicMock(spec=EntryPoint) + ep_a.name = "alpha" + ep_a.load.return_value = AlphaParser + + ep_b = mocker.MagicMock(spec=EntryPoint) + ep_b.name = "beta" + ep_b.load.return_value = BetaParser + + mocker.patch( + "documents.plugins.date_parsing.entry_points", + return_value=(ep_b, ep_a), + ) + + result = _discover_parser_class() + assert result is AlphaParser + + def test_logs_warning_if_multiple_plugins_found( + self, + mocker: pytest_mock.MockerFixture, + caplog: pytest.LogCaptureFixture, + ) -> None: + ep1 = mocker.MagicMock(spec=EntryPoint) + ep1.name = "a" + ep1.load.return_value = AlphaParser + + ep2 = mocker.MagicMock(spec=EntryPoint) + ep2.name = "b" + ep2.load.return_value = BetaParser + + mocker.patch( + "documents.plugins.date_parsing.entry_points", + return_value=(ep1, ep2), + ) + + with caplog.at_level( + logging.WARNING, + logger="documents.plugins.date_parsing", + ): + result = _discover_parser_class() + + # Should select alphabetically first plugin ("a") + assert result is AlphaParser + + # Should log a warning mentioning multiple parsers + assert any( + "Multiple date parsers found" in record.message for record in caplog.records + ), "Expected a warning about multiple date parsers" + + def test_cache_behavior_only_runs_once( + self, + mocker: pytest_mock.MockerFixture, + ) -> None: + mock_entry_points = mocker.patch( + "documents.plugins.date_parsing.entry_points", + return_value=(), + ) + + # First call populates cache + _discover_parser_class() + # Second call should not re-invoke entry_points + _discover_parser_class() + mock_entry_points.assert_called_once() + + +@pytest.mark.django_db +@pytest.mark.date_parsing +@pytest.mark.usefixtures("mock_date_parser_settings") +class TestGetDateParser: + """Tests for the get_date_parser() factory function.""" + + def test_returns_instance_of_discovered_class( + self, + mocker: pytest_mock.MockerFixture, + ) -> None: + mocker.patch( + "documents.plugins.date_parsing._discover_parser_class", + return_value=AlphaParser, + ) + parser = get_date_parser() + assert isinstance(parser, AlphaParser) + assert isinstance(parser.config, DateParserConfig) + assert parser.config.languages == ["en", "de"] + assert parser.config.timezone_str == "UTC" + assert parser.config.ignore_dates == [datetime.date(1900, 1, 1)] + assert parser.config.filename_date_order == "YMD" + assert parser.config.content_date_order == "DMY" + # Check reference_time near now + delta = abs((parser.config.reference_time - timezone.now()).total_seconds()) + assert delta < 2 + + def test_uses_default_regex_parser_when_no_plugins( + self, + mocker: pytest_mock.MockerFixture, + ) -> None: + mocker.patch( + "documents.plugins.date_parsing._discover_parser_class", + return_value=RegexDateParserPlugin, + ) + parser = get_date_parser() + assert isinstance(parser, RegexDateParserPlugin) diff --git a/src/documents/tests/date_parsing/test_date_parsing.py b/src/documents/tests/date_parsing/test_date_parsing.py new file mode 100644 index 000000000..a587b32cc --- /dev/null +++ b/src/documents/tests/date_parsing/test_date_parsing.py @@ -0,0 +1,433 @@ +import datetime +import logging +from typing import Any + +import pytest +import pytest_mock + +from documents.plugins.date_parsing.base import DateParserConfig +from documents.plugins.date_parsing.regex_parser import RegexDateParserPlugin + + +@pytest.mark.date_parsing +class TestParseString: + """Tests for DateParser._parse_string method via RegexDateParser.""" + + @pytest.mark.parametrize( + ("date_string", "date_order", "expected_year"), + [ + pytest.param("15/01/2024", "DMY", 2024, id="dmy_slash"), + pytest.param("01/15/2024", "MDY", 2024, id="mdy_slash"), + pytest.param("2024/01/15", "YMD", 2024, id="ymd_slash"), + pytest.param("January 15, 2024", "DMY", 2024, id="month_name_comma"), + pytest.param("15 Jan 2024", "DMY", 2024, id="day_abbr_month_year"), + pytest.param("15.01.2024", "DMY", 2024, id="dmy_dot"), + pytest.param("2024-01-15", "YMD", 2024, id="ymd_dash"), + ], + ) + def test_parse_string_valid_formats( + self, + regex_parser: RegexDateParserPlugin, + date_string: str, + date_order: str, + expected_year: int, + ) -> None: + """Should correctly parse various valid date formats.""" + result = regex_parser._parse_string(date_string, date_order) + + assert result is not None + assert result.year == expected_year + + @pytest.mark.parametrize( + "invalid_string", + [ + pytest.param("not a date", id="plain_text"), + pytest.param("32/13/2024", id="invalid_day_month"), + pytest.param("", id="empty_string"), + pytest.param("abc123xyz", id="alphanumeric_gibberish"), + pytest.param("99/99/9999", id="out_of_range"), + ], + ) + def test_parse_string_invalid_input( + self, + regex_parser: RegexDateParserPlugin, + invalid_string: str, + ) -> None: + """Should return None for invalid date strings.""" + result = regex_parser._parse_string(invalid_string, "DMY") + + assert result is None + + def test_parse_string_handles_exceptions( + self, + caplog: pytest.LogCaptureFixture, + mocker: pytest_mock.MockerFixture, + regex_parser: RegexDateParserPlugin, + ) -> None: + """Should handle and log exceptions from dateparser gracefully.""" + with caplog.at_level( + logging.ERROR, + logger="documents.plugins.date_parsing.base", + ): + # We still need to mock dateparser.parse to force the exception + mocker.patch( + "documents.plugins.date_parsing.base.dateparser.parse", + side_effect=ValueError( + "Parsing error: 01/01/2024", + ), + ) + + # 1. Execute the function under test + result = regex_parser._parse_string("01/01/2024", "DMY") + + assert result is None + + # Check if an error was logged + assert len(caplog.records) == 1 + assert caplog.records[0].levelname == "ERROR" + + # Check if the specific error message is present + assert "Error while parsing date string" in caplog.text + # Optional: Check for the exact exception message if it's included in the log + assert "Parsing error: 01/01/2024" in caplog.text + + +@pytest.mark.date_parsing +class TestFilterDate: + """Tests for DateParser._filter_date method via RegexDateParser.""" + + @pytest.mark.parametrize( + ("date", "expected_output"), + [ + # Valid Dates + pytest.param( + datetime.datetime(2024, 1, 10, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 1, 10, tzinfo=datetime.timezone.utc), + id="valid_past_date", + ), + pytest.param( + datetime.datetime(2024, 1, 15, 12, 0, 0, tzinfo=datetime.timezone.utc), + datetime.datetime(2024, 1, 15, 12, 0, 0, tzinfo=datetime.timezone.utc), + id="exactly_at_reference", + ), + pytest.param( + datetime.datetime(1901, 1, 1, tzinfo=datetime.timezone.utc), + datetime.datetime(1901, 1, 1, tzinfo=datetime.timezone.utc), + id="year_1901_valid", + ), + # Date is > reference_time + pytest.param( + datetime.datetime(2024, 1, 16, tzinfo=datetime.timezone.utc), + None, + id="future_date_day_after", + ), + # date.date() in ignore_dates + pytest.param( + datetime.datetime(2024, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc), + None, + id="ignored_date_midnight_jan1", + ), + pytest.param( + datetime.datetime(2024, 1, 1, 10, 30, 0, tzinfo=datetime.timezone.utc), + None, + id="ignored_date_midday_jan1", + ), + pytest.param( + datetime.datetime(2024, 12, 25, 15, 0, 0, tzinfo=datetime.timezone.utc), + None, + id="ignored_date_dec25_future", + ), + # date.year <= 1900 + pytest.param( + datetime.datetime(1899, 12, 31, tzinfo=datetime.timezone.utc), + None, + id="year_1899", + ), + pytest.param( + datetime.datetime(1900, 1, 1, tzinfo=datetime.timezone.utc), + None, + id="year_1900_boundary", + ), + # date is None + pytest.param(None, None, id="none_input"), + ], + ) + def test_filter_date_validation_rules( + self, + config_with_ignore_dates: DateParserConfig, + date: datetime.datetime | None, + expected_output: datetime.datetime | None, + ) -> None: + """Should correctly validate dates against various rules.""" + parser = RegexDateParserPlugin(config_with_ignore_dates) + result = parser._filter_date(date) + assert result == expected_output + + def test_filter_date_respects_ignore_dates( + self, + config_with_ignore_dates: DateParserConfig, + ) -> None: + """Should filter out dates in the ignore_dates set.""" + parser = RegexDateParserPlugin(config_with_ignore_dates) + + ignored_date = datetime.datetime( + 2024, + 1, + 1, + 12, + 0, + tzinfo=datetime.timezone.utc, + ) + another_ignored = datetime.datetime( + 2024, + 12, + 25, + 15, + 30, + tzinfo=datetime.timezone.utc, + ) + allowed_date = datetime.datetime( + 2024, + 1, + 2, + 12, + 0, + tzinfo=datetime.timezone.utc, + ) + + assert parser._filter_date(ignored_date) is None + assert parser._filter_date(another_ignored) is None + assert parser._filter_date(allowed_date) == allowed_date + + def test_filter_date_timezone_aware( + self, + regex_parser: RegexDateParserPlugin, + ) -> None: + """Should work with timezone-aware datetimes.""" + date_utc = datetime.datetime(2024, 1, 10, 12, 0, tzinfo=datetime.timezone.utc) + + result = regex_parser._filter_date(date_utc) + + assert result is not None + assert result.tzinfo is not None + + +@pytest.mark.date_parsing +class TestRegexDateParser: + @pytest.mark.parametrize( + ("filename", "content", "expected"), + [ + pytest.param( + "report-2023-12-25.txt", + "Event recorded on 25/12/2022.", + [ + datetime.datetime(2023, 12, 25, tzinfo=datetime.timezone.utc), + datetime.datetime(2022, 12, 25, tzinfo=datetime.timezone.utc), + ], + id="filename-y-m-d_and_content-d-m-y", + ), + pytest.param( + "img_2023.01.02.jpg", + "Taken on 01/02/2023", + [ + datetime.datetime(2023, 1, 2, tzinfo=datetime.timezone.utc), + datetime.datetime(2023, 2, 1, tzinfo=datetime.timezone.utc), + ], + id="ambiguous-dates-respect-orders", + ), + pytest.param( + "notes.txt", + "bad date 99/99/9999 and 25/12/2022", + [ + datetime.datetime(2022, 12, 25, tzinfo=datetime.timezone.utc), + ], + id="parse-exception-skips-bad-and-yields-good", + ), + ], + ) + def test_parse_returns_expected_dates( + self, + base_config: DateParserConfig, + mocker: pytest_mock.MockerFixture, + filename: str, + content: str, + expected: list[datetime.datetime], + ) -> None: + """ + High-level tests that exercise RegexDateParser.parse only. + dateparser.parse is mocked so tests are deterministic. + """ + parser = RegexDateParserPlugin(base_config) + + # Patch the dateparser.parse + target = "documents.plugins.date_parsing.base.dateparser.parse" + + def fake_parse( + date_string: str, + settings: dict[str, Any] | None = None, + locales: None = None, + ) -> datetime.datetime | None: + date_order = settings.get("DATE_ORDER") if settings else None + + # Filename-style YYYY-MM-DD / YYYY.MM.DD + if ( + "2023-12-25" in date_string + or "2023.12.25" in date_string + or "2023-12-25" in date_string + ): + return datetime.datetime(2023, 12, 25, tzinfo=datetime.timezone.utc) + + # content DMY 25/12/2022 + if "25/12/2022" in date_string or "25-12-2022" in date_string: + return datetime.datetime(2022, 12, 25, tzinfo=datetime.timezone.utc) + + # filename YMD 2023.01.02 + if "2023.01.02" in date_string or "2023-01-02" in date_string: + return datetime.datetime(2023, 1, 2, tzinfo=datetime.timezone.utc) + + # ambiguous 01/02/2023 -> respect DATE_ORDER setting + if "01/02/2023" in date_string: + if date_order == "DMY": + return datetime.datetime(2023, 2, 1, tzinfo=datetime.timezone.utc) + if date_order == "YMD": + return datetime.datetime(2023, 1, 2, tzinfo=datetime.timezone.utc) + # fallback + return datetime.datetime(2023, 2, 1, tzinfo=datetime.timezone.utc) + + # simulate parse failure for malformed input + if "99/99/9999" in date_string or "bad date" in date_string: + raise Exception("parse failed for malformed date") + + return None + + mocker.patch(target, side_effect=fake_parse) + + results = list(parser.parse(filename, content)) + + assert results == expected + for dt in results: + assert dt.tzinfo is not None + + def test_parse_filters_future_and_ignored_dates( + self, + mocker: pytest_mock.MockerFixture, + ) -> None: + """ + Ensure parser filters out: + - dates after reference_time + - dates whose .date() are in ignore_dates + """ + cfg = DateParserConfig( + languages=["en"], + timezone_str="UTC", + ignore_dates={datetime.date(2023, 12, 10)}, + reference_time=datetime.datetime( + 2024, + 1, + 15, + 12, + 0, + 0, + tzinfo=datetime.timezone.utc, + ), + filename_date_order="YMD", + content_date_order="DMY", + ) + parser = RegexDateParserPlugin(cfg) + + target = "documents.plugins.date_parsing.base.dateparser.parse" + + def fake_parse( + date_string: str, + settings: dict[str, Any] | None = None, + locales: None = None, + ) -> datetime.datetime | None: + if "10/12/2023" in date_string or "10-12-2023" in date_string: + # ignored date + return datetime.datetime(2023, 12, 10, tzinfo=datetime.timezone.utc) + if "01/02/2024" in date_string or "01-02-2024" in date_string: + # future relative to reference_time -> filtered + return datetime.datetime(2024, 2, 1, tzinfo=datetime.timezone.utc) + if "05/01/2023" in date_string or "05-01-2023" in date_string: + # valid + return datetime.datetime(2023, 1, 5, tzinfo=datetime.timezone.utc) + return None + + mocker.patch(target, side_effect=fake_parse) + + content = "Ignored: 10/12/2023, Future: 01/02/2024, Keep: 05/01/2023" + results = list(parser.parse("whatever.txt", content)) + + assert results == [datetime.datetime(2023, 1, 5, tzinfo=datetime.timezone.utc)] + + def test_parse_handles_no_matches_and_returns_empty_list( + self, + base_config: DateParserConfig, + ) -> None: + """ + When there are no matching date-like substrings, parse should yield nothing. + """ + parser = RegexDateParserPlugin(base_config) + results = list( + parser.parse("no-dates.txt", "this has no dates whatsoever"), + ) + assert results == [] + + def test_parse_skips_filename_when_filename_date_order_none( + self, + mocker: pytest_mock.MockerFixture, + ) -> None: + """ + When filename_date_order is None the parser must not attempt to parse the filename. + Only dates found in the content should be passed to dateparser.parse. + """ + cfg = DateParserConfig( + languages=["en"], + timezone_str="UTC", + ignore_dates=set(), + reference_time=datetime.datetime( + 2024, + 1, + 15, + 12, + 0, + 0, + tzinfo=datetime.timezone.utc, + ), + filename_date_order=None, + content_date_order="DMY", + ) + parser = RegexDateParserPlugin(cfg) + + # Patch the module's dateparser.parse so we can inspect calls + target = "documents.plugins.date_parsing.base.dateparser.parse" + + def fake_parse( + date_string: str, + settings: dict[str, Any] | None = None, + locales: None = None, + ) -> datetime.datetime | None: + # return distinct datetimes so we can tell which source was parsed + if "25/12/2022" in date_string: + return datetime.datetime(2022, 12, 25, tzinfo=datetime.timezone.utc) + if "2023-12-25" in date_string: + return datetime.datetime(2023, 12, 25, tzinfo=datetime.timezone.utc) + return None + + mock = mocker.patch(target, side_effect=fake_parse) + + filename = "report-2023-12-25.txt" + content = "Event recorded on 25/12/2022." + + results = list(parser.parse(filename, content)) + + # Only the content date should have been parsed -> one call + assert mock.call_count == 1 + + # # first call, first positional arg + called_date_string = mock.call_args_list[0][0][0] + assert "25/12/2022" in called_date_string + # And the parser should have yielded the corresponding datetime + assert results == [ + datetime.datetime(2022, 12, 25, tzinfo=datetime.timezone.utc), + ] diff --git a/src/documents/tests/samples/barcodes/split-by-tag-basic.pdf b/src/documents/tests/samples/barcodes/split-by-tag-basic.pdf new file mode 100644 index 000000000..e7959fab9 --- /dev/null +++ b/src/documents/tests/samples/barcodes/split-by-tag-basic.pdf @@ -0,0 +1,191 @@ +%PDF-1.3 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/Contents 15 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 290 /Length 3461 /Subtype /Image + /Type /XObject /Width 290 +>> +stream +Gb"0M0bW:r$j4o4s3aL9.o/:sRKC1+V[Po_hnP="8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.EM=P;M`ictLh5:'u?=R'nd;IE]5Hh=BmqB2p^7X$0Q$9UiFPkD[m)hEDD7]3!20S(%m5Eepo,>73Ncpo[qg"0,Gt5J@p\hbEY.UOcVYbgK@oqO7DN/KYR@egT:O\Y"S^Nmne(=m!@M;\.mreAj`lssm2RjQmR*'f[]=0V/jtsN_^"C8&k'PptV(jd(Ymp-?-DiQUlg??aR5p7DE%a+(Q2+a1De[G>Bl&EKZ&,I(pUY]E@qJJG)r-?G9P(rih-1dREuNfk?>O(#o=aSKd[6HOfEV(Z'2t=fFn_3AbT-'E'3sZfj1^M@pYhQ7E1%B!q_i'CLMJZ]APP)MgR*7.Y/pg53RP?TA*/3L-50YH7,u"@RJ5[/9Q6C5NVbVGhM5l%_.?@umb=+S+0N]gQTFE$MV_[_Y246E[o=\bnb0967Q$FISai'U8mksuCAo?M*bkl?R-I0h_YM$B?F8J^DhM5l%EG"?[c+]I2gNP.=5$X;.1Gdp(p8uQo^/LHoiL3GZR2\raAeSG3ICLU;>is%i\_.+PGos32"IH[hA8X4IM[5E1-IZRS7[g)c,U.'3s[J\0_kok/NUqf`[Xe+0N]gQauWsDDo=BhM5l%_.@LHR@?oiRJ5[/9Q6C=:Zc7&>ipIE-50YH`fmsd"IFD+`\u,TrPk$]NL;edD'YO[I2buE1hPl,[ZP+_p2)p[e!QQPfLD$lgUH]`:1Im2@iJ!ODVrHt3K9FeNGTr/\U>Dmjtp]41q&NWk4WXSRF@Oke(@-QRG54@A56WH:1G57Ao?MGP<"Vj3K7l$RCR_b:ZaKGk$5CC.+u(L[aFc^qb6b_]O]p>fgaTjmPE\no9+M@B,b.F]?bTVcV*tKS8EA]mlo3K5;1^!EOO9f^ACUurOc[u`n=fDB;AhhFPj09^)KAJ38&9VV?L8MpH&M<8.ldJV05RX^_no.Ld9qHZg`b02a-m$D"%2.\6nf;,`[G2:]5WQ\V2c@4Gh=&YtOF%n^mA_13^REE`2l0OaBG;Wq]1Y8G/?Zt8UPc;l3PKnX1F]VM=136/NqdnAb9ps/J2L9Q0S)iGGeB)@_DF)%_Cm',a;^\2o]*8-oZUsS%9V$PXmM>H\bU0m00m3&T\6I=`1RmI^`mi+Cibh&sc>8Yj)cJ,VM7Wri3jVEGD+pLJ-LMZAlc^]d[kW$rRCHJJs-pTpHZ/#)PI^.2/_/Gu9ldRQT$2WWCT5#pBp+rKo47:$?VC&L8X%rrR4!(5rE?5)8Xe^PcTIWmmak?b:!t:GHfiH*GJBI/CQ^$TfeZFd^AG<;?^!=gc(929pYE$LqO43ODYD;<\aOu!e^l'@EjKDMb^K5$WP0]nZLJ^%HY#u61\3[enc_V2NHb$M)gp)%RGYQ;01^D,]VFZHi02I1r6C:L6.0i7*Bj-$T6+]-GAcILP+EW]kd`YIUbagAF!G%Ro\=[]cb7.BSXK;E)u5)]kJfT0mL;AEbfoP2a;6*b2r;r'Dt$>2Aq&o4^*)[NnW'2fK24Nao/eo%"\I%"GP'Z0I+"FNhmnk&i,4+8D*45U9lOt5(Y:H%gNYJ4S)E#I0RZO*cDrSi.cAfFP.AeSDgqSi-Obr20;bpKqYoS`%'Rr(9URn[j=kSMi,2qrR42k/aZcu)c8-TRTajWn-2h:0V>:?H.K8QTXcol?4Z\QM\UQ.esGSE+3uQBQEeG#L%A3LQAu,[ID*eB:EYk%6VF=)'\eEfuWs=\dD1g.f8NjCE.oPBA92cbB:e#8i1-tFRQ=g8G;/Vi_h'@1H2o>ZY116t>@KpYJMpA7)Ji/leW#F/+)#V*VC?f+jW%d?qJl]slE4fpD#^99j27h!!U!Boq])FiC1L1hLXTfG0bKqW+XE:1[0q:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9j"6dh3D"AU^/LHoRCY]P]2P,]<+kV\Q$K"$)s"^pPrVEYk.Xc^pR/TYm^lDcP>l2_4-b)`W>jp44-_ftFlpD:RJ3,\612?`R?LT_mQ6\ZT;`dj^,qT?8Tj10;jmBJ\j>br;jihKBC7jHH(V&TjM!^@3D"AU^/LHoRCY]P]2P,]<+kV\Q$K"$)s"`VbpKshhJ;heIJ#,$L#d]nmrG`@m^r4^I;<3g8o>f_?gbP]CkDQP]k60U=20o&8FDiA/iT9X^3d':\+\@Uj;*pUjhAp_-FiO$C\FlYoddS,jF4Z.EjH)?]D%bBCL@$4DBZPtm^q7jK)=uLB&DH`u,3p=6A-(6\RV^<=bJ\F89ip8rc9/%LApI_"ofZO-'3pR6MG?iVY"m@=Eq[a)Y.q"N1qoK.Z\e#:l3*)"BA[ObqR\dSisd?'T6oD_R;-aleNSse-CL'A2.`f0WDraO2OS)NhURji-Dsc/e(A2o3I+\)VOF#I[81:r8`o)>9poa:.b-_B9dZ9lG;Ws3af/8:1cCb4:>XNcW@"N@mF0]uOu[eh;l6"R9!qH)P=aot>tp`%E[oU'ND1afPBSlqWl_5>q`ONacB7HTe^^)FjdQ)cmKTR7qbD9Vk'+?_^P9A:.ET;&?(LdsY0!m+DK&4Rmo3A$I[=j@CUb=RP3b9\eX>=VRf")l#,`aD:3C^AGI]'8L:b8NahC\ZSbZQoafjZ@E([G)<**^]QYZ/-\/Us$loWbJRG[+pr#4u-V^2.7F`lhj\L&UoOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>j''C?8XL9P~>endstream +endobj +6 0 obj +<< +/Contents 16 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.1ec20b3a96e40a35266a0a8a0d634adb 5 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/Contents 17 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +8 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 290 /Length 3500 /Subtype /Image + /Type /XObject /Width 290 +>> +stream +Gb"0M0s\bV$q&G/J($uOju)%+%1&)hn*)-NT`"8nzzzzzzzzzzzz!!'grT65NupmP_`]63jRce!oT8TqIFGMi(@D>9Q18%WpBeutHu8YIA4O7SpKc+sL9F0lZs.b3omCWORUeq#Fn]1ff7pJ#G-kItht;A6pmP_`]63jRce!oT8TqIF@N3&*FmnO#.ck97`6:E%D03I(`QWUU&i9D1[aFc>'f5%G8^-ObfLFJ>\r;M/@@JB>r)?I1e@5,du+nSeX'Eoh!BoPLr@VHWJ@\f-`;Z:LY8Kmo_Ad?D#0[5)F,u]k>=.H$p;]q^?Xu6pgRT0&;GI9.]Q(k==7(su_^mKeN$]^*XT/b_iRI^9\/Rk'_VO.X[X!?($+R'u%ohpmP1W1+Tpkqp$[=RJ65/WUOJ"FCk0:>qq.oTiPM!n,14O/tI1k<0>3<$5]2)lT?d&ATH1smHj(k't2X`iUD'W$A9g"p/H/Qm_8!9o-U&'oK;S+h0mmRk"Rt-k]u$5])/Y.baWi8dIY"AkBe/\3oGMcAUk_L);rMA#.X2i!H.gHJ/`tUi5T+.\FGmdDZ"(U:O*o%bOL")-=7^7DrE74n%8HFqc1)_qsI.l2X9/9=XrGe)G9:D2aqfB^S]TJQh-2j3jnnI0b'oU-pqAhRYDp-&E0eZ@h0kOd.U2CjG:$Z9F`64iQ1)?^./R#Qi;;q9^,G95_HAAGGP@N9hjJ)bTkmPnBP&2>q6mNRbVk[p.ML'C@j^(Kp6jTgZ9`&rR;L1/gVQ-1gJBf,9Jj)8R=&5kB4`+*#*k$W[Pk<$n'e`_=)ulnbsWAV8,n1Y\;=[tT6B[\7M6R:p1O1\nJ`cce;3%4W%9Cu];YgRj<\hRi@\^S#q;\'`3BG@'2DFDp_.g3E)3$iGVE:#8>Yn(i8??dQL.gM#W\4"p(2\i4mRD7k)U"b&c3-?#Z=p[5]00Bh9RD7&iiSJV&)h4)':2Vu(;!l(CTPIJrZHZrfS**lhrDLp#UDVjQe.sCQCb]ds]kIE*doS^q;DVjQe.sCQCb]ds]kIE*doS^q;DVjQe.sCQCb]ds]kIE*doS^q;DVjQe.sCQCb]ds]kIE*doS^q;DVjQe.sCQCb]dt()PtR=ZX#Ne^?[k]n7>Yqk"X@5,N$b[n+tfaEOuZ]=tTY?Y5"1hF(X2o%i[0Y4&I/QW`::2c81eHoLr:lT;0:AQJTg:"6Qqhp&n(qT^RT40.j^1..d;(9\b4QZdNohWf>5rbj0%"E=9M)9$`?o2DU%CYHQ'd/bh(O4X[8`a;i@8^*XN&i6/4oS>^0IF"$YVRS;Lg0=0)JU8j3sU!2h<13!]9bY$3.m58[g;k8V]Y5^+\)>H2oUMjp,BG:)qO1+5JhOIYF/#[obb<8HCGKl;^1-_DuEi6Cq2J1g9.'X4-oCLWfGBu>fA*2$m'&-5<5G.=`Vmk,5B&9%+Ymi#No@Ya?H95tRk08_qgJBXiTC$Zs\'m6IhOI,Nj6S(_kfW7]G@i>d]6GuK^GF1_VGb-dpCd3^o5%kcjh#ajEPFrts0m[M:a=eTY?+/Q$@*@YXq:#sL!:q!ThdT+nZPdC66nmtiM>M)I1WbY,IfmOP01+SS@m%\[Q[3Of"^576*(!7h)CHLZU3?^5"\m^4&XAlS&gq!Tkn-ZV5pa>F_*aPG"-*$7)!s@;;.u'G3*prREq=mOkD[UDr,o,2X7_Vq-@@iZY!i\p.aV;G9mdq<$L'BqoS#Q/D7G5&5=2B&?"jH1t1iW7uLWGC>n*R[oSo2j&%8I1k:217u7s3aHUt;K^6R.'Y9Ko@YXqe('1+7"Oc'p,d.jaf?/$.4ML+cQY]SR95;DOlX_E(t>pel7ZRjbNl-1fe?XOG^S03-W:M%[Eu17u7s3aHUt;K^6R.'Y9Ko@YXqe('1+apUs(p,X02DEh7SfseP+,u1V;r+DqE82-sb)nbWE/3Y5NP"]T:Lk9Zk"(]B\*gf?F9qzzzzzzzzzzzz5k,pqe-_`~>endstream +endobj +9 0 obj +<< +/Contents 18 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.1280b7d13f0587f75dbba24117c3e12a 8 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +10 0 obj +<< +/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +11 0 obj +<< +/Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +12 0 obj +<< +/PageMode /UseNone /Pages 14 0 R /Type /Catalog +>> +endobj +13 0 obj +<< +/Author (anonymous) /CreationDate (D:20251216142815+00'00') /Creator (anonymous) /Keywords () /ModDate (D:20251216142815+00'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +14 0 obj +<< +/Count 6 /Kids [ 3 0 R 6 0 R 7 0 R 9 0 R 10 0 R 11 0 R ] /Type /Pages +>> +endobj +15 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 180 +>> +stream +GarW2_$YcZ&4#]5`B.*sm?lG7-r1F@qZF9DA`.IipA]su.E!o]Gjlb!W-Y8MVLYd\SdH+*Db)WVcj08*lF:SRr1h[EQATgu\mTX&mM6\8TBJjRrY+[@;2SB>n%endstream +endobj +16 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 247 +>> +stream +GarW49oHkR%#46B/)I%IW6)D&Ib[t)(Vt`^F7>Vna$l[3>H5Gfa')=U#ta'/k95LEWOSG3"r7^/'n\C!!F0.=g]gEL*]\ARI\tm.$t5=QeJN,a-U84$:2lt0pl4os1D+HLYKtgFoDtT3?g;TJZ"p1Ms8-mnFZu9hhtp+9>=dda($9HW?h<;`raPb)D!6nUI04P3H\NHB@T2`*R;q_bb$8O:'I:6:edBMuW3U[lh[8WZ3d+9:~>endstream +endobj +17 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 174 +>> +stream +GarW05mkIo$q9nR`F#VQ:"lUo>6R=/74qEVW"iqLlKJ$aC5XZ78-0=Y@o+._YHbl4Yh1ZiKj;Fh4GOo\Q)*Tmo(5G_$S2VM\7.0Qendstream +endobj +18 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 244 +>> +stream +GarW4b6l*?&4Q?hMRuh(23Tpmkt^cRET&,M[qV:g6EQRMs2I6!U^T$](X?G+!r#.NZmDs+Qu<6UTF4R17*n#s2&gSmk2Mk.09@0r[k9DgRu9WjKt]k!Ic1n'J.q+%HiE61]07.7.f1^O]tp[&Fn>&8hUMD]+;spqhR>>LX`Bap0=GTNaa\,&7Zqt_h]FP:T4bD(VQ.g\Pm&EGSuJ6sK$-Os9'08g6q!hekXZP?.6B5f2_iendstream +endobj +19 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 177 +>> +stream +GarW05mkI_&4Q=V`F#VQSZ/`o[HbngaBTj`WC0EX,i7E\>AQT[REn!?T0[2$]@m:4_endstream +endobj +20 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 167 +>> +stream +GarWpYmu@>'Lq&PV`:G4BJ1Rt7[P0S\M$3?0c4(6nGPe/#`385LHkTp@/;7gD`sVT>qS[,<_0MjcjQ72dr'n'riIp[%YeJCl<.DN]-CUV%s0VJJ"dSm@n9+>F4SmfNcSuChM%!&%Rn8_]8SB3ren*ZdT2U-SH5HD>?EhY~>endstream +endobj +xref +0 21 +0000000000 65535 f +0000000061 00000 n +0000000102 00000 n +0000000209 00000 n +0000000404 00000 n +0000000516 00000 n +0000004168 00000 n +0000004426 00000 n +0000004621 00000 n +0000008312 00000 n +0000008570 00000 n +0000008766 00000 n +0000008962 00000 n +0000009032 00000 n +0000009294 00000 n +0000009386 00000 n +0000009657 00000 n +0000009995 00000 n +0000010260 00000 n +0000010595 00000 n +0000010863 00000 n +trailer +<< +/ID +[<93a746516153ebd4bfbd42147dac7019><93a746516153ebd4bfbd42147dac7019>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 13 0 R +/Root 12 0 R +/Size 21 +>> +startxref +11121 +%%EOF diff --git a/src/documents/tests/samples/barcodes/split-by-tag-mixed-asn.pdf b/src/documents/tests/samples/barcodes/split-by-tag-mixed-asn.pdf new file mode 100644 index 000000000..8bdca9ffc --- /dev/null +++ b/src/documents/tests/samples/barcodes/split-by-tag-mixed-asn.pdf @@ -0,0 +1,251 @@ +%PDF-1.3 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 3 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +4 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 290 /Length 3565 /Subtype /Image + /Type /XObject /Width 290 +>> +stream +Gb"0M0s\bV$q&G/J(%!d.nqi3%"dr>?4mOts8EB+zzzzzzzzzzzz!*oM+-e25^Cnl29l&b?1]i8(4Z]3i/UdM`^pJP:nc8L!XP7Hikhb/*W3nrlS:-,3JIP95Ol>35>46_jpqn5s1WO%T@mA*+\n+T^cV9UuF\!%DS+Prd[`h+g#,qgL3K&Nmea[s=/iNchX.++@iJ&&?TXb*R+\CBNRSd!GW)BQZVP'MW@t^MCeA2LT>ice?YncUPfCp2NGYK*fZ(6HNL>25gIQatNFu0.1]'#;OnrN+c_`O2p1\=fou/h\9khiWj?]th(k*4B.GJ2o'A_tJZUr&HY,rP-sml,W^p[L,?n7>?dc$S(>%:A7GHqc)2gh%fnMR<8APPhAHe8-(?flca9e(OY;c<5DomXfFGopCWMT3kt`d*!#p[L,?B[!PkSCa*Q+((4h`ls=[H$u+TnMR:ZbcGKJf9^b)?^$Aeb_jDcI@9j"25t95XD"-UQ['Z[PD[B(MT0piRJ65/WG'MWBUm\@GopCWMT3kt`d*!#p[L,?B[!PkSCa*QT>id:gK2Uh2l/78:Lb>9k4;`pb^!,*1]'#;Tk$?Z9k4;`pb^!,*1]+i^b,/"tD*6S:4RYJu^>DlOD*6S:4RYJu^>DlOD*6S:4RYJu^>DlOD*6S:4RYJu^>DlOD*6S:4RYJu^>DlOD*6S:4RYJu^>DlOD*6S:4RYJu^>DlOD*6S:4RYJu^>DlOD*6S:4RYJu^>DlOD*6S:4>5EnIDCiW$uk5["5N[p!&sm4^l?);E8rSRh"]%m2uYSJNP>nZ4+DCq2sL42I@5NP.]F?D#Lof[P5%gF/jYQ2SRj89<,>J(1q`4::6/2`]"iN8Tg?Q_T]1.WV03Cpgta&WQnCGR+^"MeNQSEhe])7eQHVp1V5]Gg.,l;RuOeN3_O+'E+BLNdNcEVXe;i3RP$%mDsKm@k(jJR1oOfe;eo82l?.WSiP3%8aXTCF(6\,k*Zn]Rad@F2`IW)AY(morkEmYot@DJjn#L]gNe59mc3'j^2HC'b3)cC\+BIQh8d"^IG]e-Q-ZMfDWg]+]8pmFqn5G9>^kpO*uQ=$Eg6]:IRJmQSA`me\o,Y'aRKFuunrh0j\Jh=kb7?2;.um<2gn]DMBs]C4KN](1-sg[2YfGPCXpGMfm'FQN+o\(c1Vn*]5jn%N^-l,r0hDn#?7hJLcP6!rcB2`JI/^Lm3;l:\Y34S.^TGOa;/SmQmP\!^mch"WN$Rb@;50B"h\baTR/`EtEJIe>#BAtF9hj1G)%B$[ZpK\O^,Df0q=J'I?UeX(6EH03A2n)CO=4hph+DDTVO\a`u'27)II?c$[BR5[(=Mn`ltr9?qbbrkU[`cn]Bb\tDn[ATgh_uqm2NGlQ/0;Y,U">dfPDnc-&V4,=*1V\of^AKX\R`#=b^Q!0Gr%Fn8_uqm2NGlQ/0;Y,U">dfPDnc-&V4,=*1V\of^AKX\R`#=b^Q!0Gr%Fn8_uqm2NGlQ/0;Y,-.D:`8P^-25mE:I'Hs9-=k"U!+0/NUuD';?92q?HmbkTAjKbS+T<*/rPj"K:*;NuH*?1#go^O06V;k2Y&`)n7A2:Z_HtqV9)3@-5F8=1N-;N^8j*DaOd6)Q[.`ANgrQrLKeIMI%HX\.QT920,N"Lq^240*VXc-(AOhjpaO%4/@LXQ!ME0B[2"GG`AEo+f[B6sbm`mc9m#]q`O#$/_S\InlY.6XO1]m^XzzzzzzzzzzzzDZ'feLL1)~>endstream +endobj +5 0 obj +<< +/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.969a0a278dab8164403e924542d002c7 4 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +6 0 obj +<< +/Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +7 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 290 /Length 3730 /Subtype /Image + /Type /XObject /Width 290 +>> +stream +Gb"0M_/\Be$q&G0^ZfPD]&P!ICnq2'o`LkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkC#aKo*\@Q^OSZ$ER1V!=bkN^34G+uR=bi%p$SuXBnfno!;15!4-HEODUB.'_6aUIUOlaaTISXl]s-Sr:0Y35)mF`sLjS]p$[]:Q&Rf@c#GFu"]^ms;.>>\>FagW9ll^?`>@Eh/c"DC76Mql],Ib&qm%\t.&!Z&R?j^GbOE'AIa`o5!sc1U2qk1;>a94ql[q/bGV/N&oBnE>NRor#2X`gCgNY=AC\-sMZ&R?j^GbOE'AIa`o5!scUY@ukb,dZtkV?'BplZgKBG'"Z:>Y'KJ^^S/i`O02&@QeB>8mp5B@FIDmN2+d!e]=@":lhuPjo00`4$!h-Zf=Z=@hp>rk8(T#[bO"5WpTF60]$1'8RO!!C?!R!XomT8pGop=UKJ'ThCYl\[Ds/tFUMH%>ATi(G'"Z:MgZY'JQ$FHWPCtQ0cSg*HEb4)tf-I'5gpU[B.@!FI<80r]$*=lkaBSYGop=UKJ%>l2L;6@A_q'/)nO7;hq=!\oBK#nX>@*jfCqu2S6'?4At=cq\@uUMkI`hh1[@_N_t?/+4m1@`Qs"'2)m8XtkW,il`6:7UgMhSe7*g.$->(hsfS8^=-@3t<1GQ5]`&:lX1XU8MSV`bW-FVn0Sr''1l:fF'1U.D@pIt4L=(buSS\"9g$Sq1hZP/nmh8e>q4YlKEZP/nmh8e>q4YlKEZP/nmh8e>q4YlKEZP/nmh8e>q4YlKEZP/nmh8e>q4YlKEZP/nmh8e>q4YlKEZP/nmh8e>q4YlKEZP/nmh8e>q4YlKEZP/nmh8e>q4YlKEZP/nmNTnOXoArC<7fK\![JXSJCAH$seFJqpW9#[j:s32]TpEGE67m[iKNeA\pj;0WLN'q"ON]k7-=$$-j4_68?%QVTfe_T5G9>H1FmfqgF3gEaf=Upi[]b%E+IRTM9Xrs8a0g?O]*-72ZY./JmQRf@leWpYk+4^LY'9V[D.!#i5r/3$R;fjOO)+X(G6sGCB?u7sh0iP_f=ah=bWU;">jq+@g:lu\Jn4<&1Z[2I)[Eg"5iOQZRkmX#m@t_j,M>I6HJ98N4`&]!Jt+>ab?>fCRgbFG%6,40*/7Q$K!M4l:ZZ2orVBZar&"RJ5CdoA,aTK=n6HX)#V[:@slSb$oB%P_-c4fU*lDeT+\#EUk]?^+lSnK3I=&o./:$&t>Fge4>7/OL*WnQ'A.bDqJZTXj,g;h`De\5p"\ScS]mHHa\5-D&gp2ukIFgLCM:ZmT.EHP9hYM3$ZRpBZR3`!,DX/i7Kh555KloNnMH(o^X)nIACmca(3]&?8XH^EO#&*`Ae%A$K1Y#MuVaj'^EY$Tl@3>LLFV0eQa]FX8l[1/^+&[#*EGKJ,,OKMpEi&MP28u6m$gq40^lEq(m;\?03\p)9@qiIsegYb(,iC]qnQe]4al0>YcSl66(<4[:qc23U*?JFBu(#_c]H^EO#&*`Ae%A$K1Y#MuVaj'_TgceTc9^P6Z<$X7[40]52>oU?qkq_QOd\S.Uak;Mf\EMYnm7+^7iM(*T[j,0jh*ehR,VqGBYmhLT)nI'S1@$:8V';>LfnjRahf+!d4Yr:$&RTWeXR:GdAL=B#^?E:5h=n"o9N"<,d=&:2moc!FUl+rAqdO^*ZS"%*(%F`e`Tk0M?"T6Lif!5_eU>cTbTp3,(Yon.qjqqu8ZIS"\h@+Y4mOke<"WJZ?``[Ben$2-iqLN\dhA/$Fk1]AleV0Wqc%F.%l1?SXQsKM]B>[XWS0lbA7!kjf?LIBcSt;k[?3Yo]WSTDRpGKSDr.C,,CPZ!?"[G%]A>^.]MI'IqB5C@cFRn:]mIJ=T;mnC60<<\FkuD1pO)Qr8CoXP0f)Bi\2(\YSOh?g0ekIU7CY+bk+,&p1GLU?8O^-E]B5YTf/#-91J($F1:u\>8CoXP0f)Bi\2(\YSOh?g0ekIU7CY+bk+,&p1GLU?8O^-E]B5YTf/',Dm$``@G,6D((A8nW\TUBd\gAVh?)\+8KmcKnXrWY2Y),\]="8f<@3829p8`OAQe?M&cZ_r1h7Gh42TU>in*2[?DXR#HV?"\:bWHu##e&8C[B%L0+=/qj/oJEg'P1atYa-EZ;)a-p^MI^n$eT%GNfg\aN]-OFjh.acpEIVr$H!NAt6b;R)2(s6aDP*3c\o-A[FOcRj?Li!i4tGf=h7O9_W[HE2jP@Cq6N>k=,&lh4IAYNt>!867sbjsBKImB^h>f?O2SY'P-59AZf*BB?e/S+e(3p#MR.]N_kkb'@8O7moa56psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psF26psEGnK3us@Di~>endstream +endobj +8 0 obj +<< +/Contents 21 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.f6e745526a61cd8416256ca62679b160 7 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +9 0 obj +<< +/Contents 22 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +10 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 290 /Length 3461 /Subtype /Image + /Type /XObject /Width 290 +>> +stream +Gb"0M5n_s,&44e"s3f#4`]d?gQe*Pf:j1Mf#9(fYt0GMj\u/gIQatMe>s(1]&`3OnrN'c_`7*p/u2Vou/PT9j,^,Ze.b4Md8H7ZC'F.^O'MkF4Ohqqb?,=QF6qiQIaSReL+VDtl*Fa4I-(QT6?Ln%7H6n7B=pY=XF$F%U3(GJ1cMbBtC=P6t[ZPgmA7H@Ni!q*)M>'u%m@WHmCore<)tI=+a=I$mo2o=jPh%:A8ppmP1W18gr1IFn?8^(1]&`3Tk&U9X6?'4AMLO;@N.r%kHg&kGuGJ7q^f1LA:?_CkaXSC0sf28)bT8UZ\m%R;\h1d/@M6_IQjgrS2Y"6Zd3)"9'5(1]*^>b$$4b/tQA@4R[^HI@mF]]6JMHo=XfhpO/Vgn)E"hch$!@h=l3;]SgD=4jSJIFPl71o.HV?oK;SjdX@acbe&+CdIY$F8b[Y)1@O5U7F1S^-f+NBb.NXF(Hp)kT6/uR.J#0`?1^8JIFm@j"CMipr`Xrr\D9K^C5)A0*C#)b5aL#1AlXJ?_-a^qS$TLB&C3mWl91IT'qls;.jLu]1T*BGEncgPM/lHB&C3mWl91IT'qls;.jLu]1T*BGEncgPM/lHB&C3mWl91IT'qls;.jLu]1T*BGEncgPM/lHB&C3mWl91IT'qls;.jLu]1T*BGEncgPM/lHB&C3mWl91IT'qls;.jLu]1T*BGEncgPM2/fXD_E6B349YHfs51pA)9lSb:7.kj7TiI.+`&ffibEWO'jCk#HMHF`+p;hX,-OYH-/Uhn4ilY0P;dcF]Y7o6$uT3N5u9n)>&=(6k;:?VW*$ik%1h[ftl*hj9O![J2@LnSLS&g%XU(;D#V@;g_eGDYAK=WDnfEiY:8cPad).:+FfR]/[d="m'@RQ]k%Lpb#>3D*b_cpZ82K/\[-AHs9Ebp3es#th\K+SGuJ#)QPmPc>=_WR9m(ScB)M4:+[qeXe^])9n]SCq'P6-#=8-:G0AdOCP^-25h3T"oHs9-=k"Tu@?Y96,D';?92q?H,RISJ0KbS+T<*/g*`\63b;NuH*?/:hb^D<=2Aa]K]I&U"V^Lj`$?fpO@;dK2sV9XP7@TU:fcSqc5ntesLrL1^.I$pUF:3GYkPree"Md?-65Mr!rb*OT#p1kGUnn!9a3RsBJEr<2m32Ze1NroCL5+Y'd3HB>8&`.pqH%Ro$%9`G4KKHiQLSWk\FIH^>$c=6%ptuDkaFXebO)1hZah0beAqJelCnFSU;AUUb_hm.Q;i/o6l!*oPJ%,XE*pa1>g-]6/NFncRLl'/b=C<)t[uUnZ6d&f.u7([mAme(=+HhIkC8?HlM]p@I^F>o@GbTa1"@l()G4G2h*FNI=*"+D.2t9Eq@mg-]6/NHBZ\m7#^73Gke+.B(hZah0b_jn<^73Gke+.B(hZah0b_jn<^73Gke+.B(hZah0b_jn<^73Gke+.B(hZah0b_jn<^73Gke+.B(hZah0b_jn<^73Gke+.B(hZah0b_jn<^73Gke+.B(hZah0b_jn<^73Gke+.B(hZah0b_jn<^73Gke+.B(hZah0b_jn<^73Gke+.CS`ATcl]'#RI\URqX`ATcds*QUcpWr03fLG&tT5UUircro-gZ[Glo?Hp_5HiCB)kG`5^6tSikOhtoUN?=Y2q)jJ]KV6jFDh-SApWm;f4V@JcL!jR9[E\/qCK)&\c(]\l+):MT>`]L\,Uh34nm:gUO4#O;Y0and()GRhQKN)cYtuRad@F;Y0and()GRhQKNazzzzzzzzzzzz!'^D_bZ%t[~>endstream +endobj +11 0 obj +<< +/Contents 23 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.e28945bebb594f11c83bbac90aba8c31 10 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +12 0 obj +<< +/Contents 24 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +13 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 290 /Length 3621 /Subtype /Image + /Type /XObject /Width 290 +>> +stream +Gb"0M0s^+9$q&Fqs/,gl02gI,?@ebho'Q]Jl/07UWiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiDfkGE/^Sf@`Q543?FKH_.8gf@`Q543?FKH_.8gf@`Q543?FKH_.8gf@`Q543?FKH_.8gf@`Q543?FKH_.8gf@`Q543?FKH_.8gf@`Q543?FKH_.8gf@`Q543?FKH_.8gf@`Q543?FKH_.8gf@`Q543ipCC-5Bct(Y?=Wp&5CQo0$?B$8/ZCCYnN+rs"hc*j/'8mruHpK?JWQf;+#Am,FK.]AC<=A\Nq8;ScpfER"Adn)*%Yhnq=Ni%hpSk5DIWDfD-5iL3_bR9a(hIb4HU\BO\d9e*Zs0!9K7lhqc-k'OTb'oA=nM=YbUn)9^7,\C(&cHBe5LMKeMQs#P20:2JUY";&kAjt^l>ipCC-5DB*'oDO&RIB+'<$Z'V,gOSE^5$K%OdK:63%pWo*j/('@V/'g]NjTG\0_rIR2(SMEgcCTRT(PE<[>u6A\KOs%;u'#Sb'E::1>/7k3'(.Sb'E;RdE]tk]1T*AGEnbLc."ZGm"eT\9[DDGII>0Njr'D=Vku4qWj\h^:>I@'mJ5_S%&BCB:Ei-LeG^XFlDJb^Y[Z+RlfV-EG&ReH0_YX[e]'G\5_6d(N/++l^_n,\K`^AGLhJ;\,L\dRr@_N9?!HEiT@8WhV%%\45s.XB3i#mlZ;O]qHH$/Ei%K8ZdQjs;0Kn23KYiBcC:(WIZ:WXcH_8OWHR."[..pr*H?6tj@ZiOAu1JoU[3fCF!=\cSMr'9r#0-:S=L>(;XM,"C#den46#UsaH^N'bt8qi7bJAdklE\XNG6UN8LphGmJ@4M14IHaoZ4ZeUS*GEl,hcgJIA*j0/;/@Qkc>p\%HZTE*>L[/)'bO%iG=%Tgkm*;*hiHePME][1UY'\l*6G@jY0C3"'YZ]r[+)[^I,`B1E(E&BY`bumYNV%!SeOlDqb;n/9dg?'q4ZdOS[Rn3(plmZ16:2P'Basg/)`%.GgIUKr`=pD9c$7.r?]EM%oF&T#0%=e2CqgR?]ZEgdI$DAl%B#Eb_)MPfu`=$>q',40t93l`5*_bh8Da2V@gYE&Vi]VQ()KrX7N+S=QWoK:W#DG;ElEWnLkD^VJ[LfpSiuf_I1>2fj/>WXX.N$f'!sSZ-@VSc8b81M:@#g0j*Y^tm5fRAr0tq(H\GF*=G78_NQ-gq8J&/+4sePah.#2X&$&Rs;:1Y*)Dfq&XF+0&4*r2_4>HWK`n@iATo:c'rsanue-J\bR:aK.brlM)QsR.]JZ%n)61g_TeQpZgt8^9"Fa=DM'Rs]SSQtmjb<$S+#;okebT6GdHtDP"N:\*c?T_gq8J&/+4sePah.#2X&$&Rs;:1Y*)Dfq4>O->a^k$GP6E&U7Dq/Eb2uZ:#;@QVo5`CRI>QfpEnTCYq&o9SJ&PTA\Rn5hOA2V`3*@5msUDo-JBoR.p(k[hrMJ-G"V,DQ208qH#KFJ'"`0q^@t@YRqO1PB*FWiRqV!0gtDND[j)'CR@@mQc.q"K*4I-rQ^O=VkKVf8qAcsh"dbXHB]mXqg%l\t,6aF%RqV!0gtDND[j)'CR@@mQc.q"K*4I-rQ^O=VkKVf8qAcsh"dbXHB]mXqg%l\t,6aF%RqV!0gtDND[j)'CR@@mQc.q"K*4I/H/+[u@c*aft?=b>Bh0TdDi&]&hZ#a5_,3@X-'"?d[bI+Tr?=b>Bh0TdDi&]&hZ#a5_,3@X-'"?d[bI+Tr?=b>Bh0TdDi&]&hZ#a5_,3@X-'"?d[bI+Tr?=b>Bh0TdDi&]&hZ#a5_,3@X-'"?d[bI+Tr?=b>Bh0TdDi&]&hZ#a5_,3@X-'"=O(9l,HWFN$+_O4)&'[O9tGf*4b0MJMc(V2`$&:VM1Z%?AjOfAo(e)fsc*I.pqd*2P0gaa971k-dGKm_(M<8lo8]pF'n&D0tj0HYm_dY.,hI;;.Dlp>ij[g>FAbED>;bZn]&Wa`m3]_,7f'R_2.)@rC%bn(qi4UNFI4H&pCngpSTf^"3HYl&'9IT#mbEg^]8if:NeP&#\sQciW4&pM9BP?]'^]3OKeP.2b)S)i;]hW6NEPf+S^h^$eXpF_fCVBkScq^/j3\9GL-2'm64gc*?__7e$'Xso2hikA!e%IRLSF%o6]&bf"?D/eraR;5FSNjs"jCP-u#b?Ru1mI-jpS(JIBR;;BF-sP=qR5_B$/i2,?Y>Ma4P;7&c='T@?a^:fZ@4,XC`3-Vo>a)olftpM,]STp6RCOYoNO"8/P^*qSi\GRLrYf>U4"9bJG/\%TRf#%c(3WU<:$db\bVf33PV)6tba[6"Q^MX[f-jkU8XVNB.kWX0A5uW0endstream +endobj +14 0 obj +<< +/Contents 25 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.3d82fbc7fb155441d517c93ed9ec525d 13 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +15 0 obj +<< +/Contents 26 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +16 0 obj +<< +/PageMode /UseNone /Pages 18 0 R /Type /Catalog +>> +endobj +17 0 obj +<< +/Author (anonymous) /CreationDate (D:20251216142815+00'00') /Creator (anonymous) /Keywords () /ModDate (D:20251216142815+00'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +18 0 obj +<< +/Count 8 /Kids [ 5 0 R 6 0 R 8 0 R 9 0 R 11 0 R 12 0 R 14 0 R 15 0 R ] /Type /Pages +>> +endobj +19 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 261 +>> +stream +GarW495=S`'SZ;W'k^[])"5]poB8qH=%/@qU>)&lKpEPq`^ToUj7jAr2hAmFc3IcS3]u1M!)nO?K#&(3$W`[Iq8D'E927i,D^h:d1ndTQ!o?uOgOi!M5;;R#n;G^&c9s)+r7(.`dIamA_=.6`V?\;0&JO?e+g!YX&8_+8XHlF=W/Ia'Xk$Qrk@3aA0PQh(F/A?*p4>/mR.MH!>TZ1)N#/`,?ZD:[7;^/hZ>/d(i^,*:I4^^bZ6b[:`%6eRJG9?mY#W4~>endstream +endobj +20 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 170 +>> +stream +GarWp5mr90&-_"(^Z$9?6d9G5GL7PscscphYcOP./#`K?ei9A^4+L=D=F(B57X3>:A[Gj.'WC58euaPELhe*k>#kjh012B&[7,F!'.Fi#)NkQ>n`2Yd~>endstream +endobj +21 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 242 +>> +stream +GarW44U]+\&;KrWMK`$TRZ#Ejh%W'h#K7+SBoIXGUUC)N@r5(2Nk9o[Sql>31)AEh'u8=l^EAVi3IoO'Kiqi%7%;@\=.b]qJX4AdRf].g4aIOJ0IN7E2uH2"iZoh[jaDCb(OO.Q\4>L2't0AZX'_QXW`mKcn@qdY_Po+mf_[DIA3%@^p+P5rOHsf;mM@n1YBPg%,*^&!jN2t$Q>3PS1:d?;-!$J*A]<=N-^O:%Yn7OC#!>ZE~>endstream +endobj +22 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 167 +>> +stream +GarW05mkI_&4Q=V`F#VQSZ,K\70UM]Mn-VGWC30XdbspQV83pXpp557*eT4-nNT1`#^08Rf8pba[K^cm7B44=jRnT)'K?Y!_o-'Xd$KGh6f*pL>lGBg3YUISI%0sL[)4K&0mV"rL1P41m3aEpO(Oendstream +endobj +23 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 262 +>> +stream +GarW4bA+pK&4Q?iMRuQnE&;l#G'=F5'q3C45Kp)<'Bl(2:?1Sq>(.;"Lm=KDjendstream +endobj +24 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 167 +>> +stream +GarW0YmS?5&-_rY`KY,2[kYm/Lmd;U4n)8L^>CNbM-K67PO4$pIc#YA[N="7;k`*bg6HG-3H1I:Oc@?^rETqVk2S`hAuD3XjG$hrY$;o0o!@8O*,PX[%Xbdo219TR[PYjYB"V@;M6R`QhNDP7g@'?7l*!B~>endstream +endobj +25 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 245 +>> +stream +GarW4]*cD?&4QKpMHd)Lgt?4sg)58p(5c>K-G(3oLqu4Qh_c`/,/_X?Kl\)c+FR*G9`ZLXdk-+bF:O1[#^VPk(.0^d>^]N8"Y:8_eceNuo\pFCTl8;ADtoB8^e%/BH9Q'/leU)Ketm'gGAhG8d]3*X.^/,jZXEc>aFc1K9PN;qHF6sh^&:Uu&B+.aq>DL)I_A*B[q/R0b:Eqd>ihB1o8K'3Lb)J@(88&BB3;G3Vi%7"GQK1T:[J~>endstream +endobj +26 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 172 +>> +stream +GapQh0E=F,0U\H3T\pNYT^QKk?tc>IP,;W#U1^23ihPEM_?CT3!/hd>6k,goQl7B?"*$l7Jjr"7HE)RNVF!h>6AQD_Ah8\RZl9o#.%!endstream +endobj +xref +0 27 +0000000000 65535 f +0000000061 00000 n +0000000102 00000 n +0000000209 00000 n +0000000321 00000 n +0000004077 00000 n +0000004335 00000 n +0000004530 00000 n +0000008451 00000 n +0000008709 00000 n +0000008904 00000 n +0000012557 00000 n +0000012817 00000 n +0000013013 00000 n +0000016826 00000 n +0000017086 00000 n +0000017282 00000 n +0000017352 00000 n +0000017614 00000 n +0000017720 00000 n +0000018072 00000 n +0000018333 00000 n +0000018666 00000 n +0000018924 00000 n +0000019277 00000 n +0000019535 00000 n +0000019871 00000 n +trailer +<< +/ID +[<11a4452bbe31319e89fba7a743537da0><11a4452bbe31319e89fba7a743537da0>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 17 0 R +/Root 16 0 R +/Size 27 +>> +startxref +20134 +%%EOF diff --git a/src/documents/tests/samples/barcodes/split-by-tag-multiple-per-page.pdf b/src/documents/tests/samples/barcodes/split-by-tag-multiple-per-page.pdf new file mode 100644 index 000000000..5c4d97c63 --- /dev/null +++ b/src/documents/tests/samples/barcodes/split-by-tag-multiple-per-page.pdf @@ -0,0 +1,181 @@ +%PDF-1.3 +% ReportLab Generated PDF document (opensource) +1 0 obj +<< +/F1 2 0 R /F2 4 0 R +>> +endobj +2 0 obj +<< +/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font +>> +endobj +3 0 obj +<< +/Contents 15 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +4 0 obj +<< +/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font +>> +endobj +5 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 290 /Length 3461 /Subtype /Image + /Type /XObject /Width 290 +>> +stream +Gb"0M0bW:r$j4o4s3aL9.o/:sRKC1+V[Po_hnP="8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.EM=P;M`ictLh5:'u?=R'nd;IE]5Hh=BmqB2p^7X$0Q$9UiFPkD[m)hEDD7]3!20S(%m5Eepo,>73Ncpo[qg"0,Gt5J@p\hbEY.UOcVYbgK@oqO7DN/KYR@egT:O\Y"S^Nmne(=m!@M;\.mreAj`lssm2RjQmR*'f[]=0V/jtsN_^"C8&k'PptV(jd(Ymp-?-DiQUlg??aR5p7DE%a+(Q2+a1De[G>Bl&EKZ&,I(pUY]E@qJJG)r-?G9P(rih-1dREuNfk?>O(#o=aSKd[6HOfEV(Z'2t=fFn_3AbT-'E'3sZfj1^M@pYhQ7E1%B!q_i'CLMJZ]APP)MgR*7.Y/pg53RP?TA*/3L-50YH7,u"@RJ5[/9Q6C5NVbVGhM5l%_.?@umb=+S+0N]gQTFE$MV_[_Y246E[o=\bnb0967Q$FISai'U8mksuCAo?M*bkl?R-I0h_YM$B?F8J^DhM5l%EG"?[c+]I2gNP.=5$X;.1Gdp(p8uQo^/LHoiL3GZR2\raAeSG3ICLU;>is%i\_.+PGos32"IH[hA8X4IM[5E1-IZRS7[g)c,U.'3s[J\0_kok/NUqf`[Xe+0N]gQauWsDDo=BhM5l%_.@LHR@?oiRJ5[/9Q6C=:Zc7&>ipIE-50YH`fmsd"IFD+`\u,TrPk$]NL;edD'YO[I2buE1hPl,[ZP+_p2)p[e!QQPfLD$lgUH]`:1Im2@iJ!ODVrHt3K9FeNGTr/\U>Dmjtp]41q&NWk4WXSRF@Oke(@-QRG54@A56WH:1G57Ao?MGP<"Vj3K7l$RCR_b:ZaKGk$5CC.+u(L[aFc^qb6b_]O]p>fgaTjmPE\no9+M@B,b.F]?bTVcV*tKS8EA]mlo3K5;1^!EOO9f^ACUurOc[u`n=fDB;AhhFPj09^)KAJ38&9VV?L8MpH&M<8.ldJV05RX^_no.Ld9qHZg`b02a-m$D"%2.\6nf;,`[G2:]5WQ\V2c@4Gh=&YtOF%n^mA_13^REE`2l0OaBG;Wq]1Y8G/?Zt8UPc;l3PKnX1F]VM=136/NqdnAb9ps/J2L9Q0S)iGGeB)@_DF)%_Cm',a;^\2o]*8-oZUsS%9V$PXmM>H\bU0m00m3&T\6I=`1RmI^`mi+Cibh&sc>8Yj)cJ,VM7Wri3jVEGD+pLJ-LMZAlc^]d[kW$rRCHJJs-pTpHZ/#)PI^.2/_/Gu9ldRQT$2WWCT5#pBp+rKo47:$?VC&L8X%rrR4!(5rE?5)8Xe^PcTIWmmak?b:!t:GHfiH*GJBI/CQ^$TfeZFd^AG<;?^!=gc(929pYE$LqO43ODYD;<\aOu!e^l'@EjKDMb^K5$WP0]nZLJ^%HY#u61\3[enc_V2NHb$M)gp)%RGYQ;01^D,]VFZHi02I1r6C:L6.0i7*Bj-$T6+]-GAcILP+EW]kd`YIUbagAF!G%Ro\=[]cb7.BSXK;E)u5)]kJfT0mL;AEbfoP2a;6*b2r;r'Dt$>2Aq&o4^*)[NnW'2fK24Nao/eo%"\I%"GP'Z0I+"FNhmnk&i,4+8D*45U9lOt5(Y:H%gNYJ4S)E#I0RZO*cDrSi.cAfFP.AeSDgqSi-Obr20;bpKqYoS`%'Rr(9URn[j=kSMi,2qrR42k/aZcu)c8-TRTajWn-2h:0V>:?H.K8QTXcol?4Z\QM\UQ.esGSE+3uQBQEeG#L%A3LQAu,[ID*eB:EYk%6VF=)'\eEfuWs=\dD1g.f8NjCE.oPBA92cbB:e#8i1-tFRQ=g8G;/Vi_h'@1H2o>ZY116t>@KpYJMpA7)Ji/leW#F/+)#V*VC?f+jW%d?qJl]slE4fpD#^99j27h!!U!Boq])FiC1L1hLXTfG0bKqW+XE:1[0q:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9@iJ\8WL&g=b[jOE:;4>9j"6dh3D"AU^/LHoRCY]P]2P,]<+kV\Q$K"$)s"^pPrVEYk.Xc^pR/TYm^lDcP>l2_4-b)`W>jp44-_ftFlpD:RJ3,\612?`R?LT_mQ6\ZT;`dj^,qT?8Tj10;jmBJ\j>br;jihKBC7jHH(V&TjM!^@3D"AU^/LHoRCY]P]2P,]<+kV\Q$K"$)s"`VbpKshhJ;heIJ#,$L#d]nmrG`@m^r4^I;<3g8o>f_?gbP]CkDQP]k60U=20o&8FDiA/iT9X^3d':\+\@Uj;*pUjhAp_-FiO$C\FlYoddS,jF4Z.EjH)?]D%bBCL@$4DBZPtm^q7jK)=uLB&DH`u,3p=6A-(6\RV^<=bJ\F89ip8rc9/%LApI_"ofZO-'3pR6MG?iVY"m@=Eq[a)Y.q"N1qoK.Z\e#:l3*)"BA[ObqR\dSisd?'T6oD_R;-aleNSse-CL'A2.`f0WDraO2OS)NhURji-Dsc/e(A2o3I+\)VOF#I[81:r8`o)>9poa:.b-_B9dZ9lG;Ws3af/8:1cCb4:>XNcW@"N@mF0]uOu[eh;l6"R9!qH)P=aot>tp`%E[oU'ND1afPBSlqWl_5>q`ONacB7HTe^^)FjdQ)cmKTR7qbD9Vk'+?_^P9A:.ET;&?(LdsY0!m+DK&4Rmo3A$I[=j@CUb=RP3b9\eX>=VRf")l#,`aD:3C^AGI]'8L:b8NahC\ZSbZQoafjZ@E([G)<**^]QYZ/-\/Us$loWbJRG[+pr#4u-V^2.7F`lhj\L&UoOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>j''C?8XL9P~>endstream +endobj +6 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 290 /Length 3802 /Subtype /Image + /Type /XObject /Width 290 +>> +stream +Gb"0M0s\bV$q&G/J(%!dMEdPCi+mj":+lnVm=5//INI)Ff49*4S%J.PEG]YhG"90TqgKU<#1mC0[%"\rkAb?X9m0%=\bggsf*9i;GI3jOn)n\-E(tLG]=Iff*nLVJA9YE8`&:.D17um52nS3pR@'BuYmi#Nq(-`rCL3?aR5kr8:bnZhE]:VmFd\Vb1U.B8oD'q]ZYNm6M4$@;gJBYtcZ1tVk&m)ZR5;)W-1gp`GI)'kQ\h+j'AH>=T?hO:]B47(R$fb8%41WA/9eF9?C-M:3S\hTaNT%`ls#mgH!Qj4iL3_VB"i'SXj#S5Y0?c^9e%nSh_k:3Ao:pVk'a`d'q(KYRXH\B2m4b'5$X;/bfk:U^6P+Uf9LV'Y";&ok.>6_b08,rb.J8:U`qVd?*eH\k2pethM5lEOdZ$Jfs`_Xo=?^G__nF7b^A%/>FE$I?((HGRT*g0^2*GEbhTk6bkl?R._*^*2DS2[>]!0Q26#Lh]@t>"V/Wgs&_Eh1bNrsg1R5i-`^F'q$8/ZcNQb?/&$ab&l]9,+WK$1e;f;-9Kq6%=KRI_oab&l]9,+WK$1gQ`&9B[J%dp!1M:0/cGVUr^Y&/&R@-&K1NOnOOnltfDpHSNR@'BuZ&Qs\p3^pnB$S?=S;D)nI^/(*1Ga)!B')d',P-gVhjg+&1GL[u@N1_Bm.oefbaaNX3>:/gr*mu2B4g:"bflL-7ckM6^,[u*B4>Ju`&9Bcf^m@UR5kp:F-LSfP;;UFZP/nmh8e@Go9=MJSt5(-mlp0RT;Tmpna&[,H1u=QrB+ZJM.\1scb#7Mn)l.k:-:VcH/B.5*DOc%9uNl+135C(NGD#t1NO4LWKbW^c!TMbdDX8a6sM2f1O&HB\99\`1H,o49$,<5r&(Vt:!CgU`2-?eF#ST.CI]$oEt`PmPg%q-p$8So50Gf:pTDB`o>IdeE>qlek2kH"\9ab!<@2U9$J2rG]*_Wc'>)E*D,B2[Q[;fml?Qi?RCE\U>k<").U5,4lm`[X6%s)\mTkOIkDuX%_:Q's;hmG879P-[(c3gRuD@0DDWdeap_^13"74\E;o0\@(5+gZOeMCiI)k!\8S'PaAEV7PDfLBI&mcO,oI9\pV-FT&)MS&\3Frsf3S;D)nVW)JWTA@Q<1M:/9RAm]ccY)ulouriV7V4.Wm-T[ZQu8]D6ht+'6dYM/?e#ibgrPh8e&%B4;gJWOSGDBD58Lk*jNL;.^ci]A-QNk'`Js\0a"UPhCf^/pC@,Gork5Y0"m.A[\;FbFMXNhFHgfCGKs$R;FA@EbCZ,pJJN]R`sPaAfJn)gf`b$I?^nE-8Tk1fnT&MG?28"+/LKjaikc:[\:@WSQ0Ra8*PnH135sRD(+jnB9et\;7bbUbhQ'-)p5eJ=lndoPchMC1O#):L@Qs@gLR;Y3f#4pO$#Xc20A'ccXM8m8&-(Hre).q__X)b0@*V:OMnagLR;Y3f#4pO$#Xc20A'ccXM8m8&-(Hre).q__X)b0@*V:OMnagLR;Y3f#4pO$#Xc!(Lam41+kr*hH\<Shj;F!q+f>DSH"O1;;qq<0`"22O'^"ri;"H3AXY]i4]Z^k.CXCj*T'F<=-0R6b3$\^WQ>C1K.9Tmb:QU^AG)h^?<^>R?[Y^;Wd)d.\>tgaipnG-K6rIU\<*[bZ+I5Ca1b-3>Il`\N)Ir4ql\lb^<1)AQE]o9XW3b2DR(\;fS4jRkn"11U2q`bi_r1B'&1!<;T@*,;\pO'pi(63A]2L'ALUPHqqXlY\ujlXcdqf"VpE1(!K.&do)^!E<0'A'RBbNrt28Yrr_IK$mI\=OF?AlfpD.`G]^oB4B:orR(,]@p(Z.IMMS5AqmOB*FXTeV95ZES(*cGr'G'/%Eg+2O%0u]AD_sRu-H6_.@etTqkTAofdl^9O,mN0!hSf-'dJmp\FDmid+XER9aYXW>'Qic_!-0f<^(PltSmZV7>i>rk+Z/Se\EPgf`b$b^$bCqb5e^`3[V2RIbHepR/OFM.`*C1[!jTmk\qk'@/-eB?n\3hIkg`-D"4TcCC6E][+MJ9K]B2S2i6hH(TptR!;ZB3HJLZo0*hs0_)5bF6:,?k'\Ro@H(GOk0/+]bkk)h_Sie'c'e0DRJ3,Z"m%9odCu(bY'2\4p<1.m[D?G"]NO3>2j8$lgq-f1>is8"'s;a:\b=4[bI,/tcFd<=H8h%'^YHG+)dMOLRh`)M1V*5&^!!h"A^7qkiHdGHCVSZ:>T6r1baT?MG;Hf'bIu*,_.Cp)=lFZcPA@qg]3H:[k00;0Y'2\4p<1.m[D?G"]NO3>2q,]'Pg">YiEL/`q0^cD#5>99UA?`e$VKRQ=]ZQt]<7"Uf>K6hREoMOD/esT-E:Dd\"I7qT67QX^$D,cIOSW0->m.mkKFrd'7J+eqg&o70@t:-Njsq[k+-q6M49jt3HI^G6soQ2^>?fQbOqC9,As6ZH"UK&io]?KcJ0!jdFZ%;Y;^ImE]n('Ln!UDhV$MM\9YWV1O$c3oJQ+(lV60I>gJg"i[4MjGP:\VDI0L/bT1[:IEakNH4r4jf5p)7\;@5cWiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!Wf$BiN/nET~>endstream +endobj +7 0 obj +<< +/Contents 16 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.1ec20b3a96e40a35266a0a8a0d634adb 5 0 R /FormXob.bbe0a4b6628a0e8125ab26a62825893b 6 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +8 0 obj +<< +/Contents 17 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +9 0 obj +<< +/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 290 /Length 3500 /Subtype /Image + /Type /XObject /Width 290 +>> +stream +Gb"0M0s\bV$q&G/J($uOju)%+%1&)hn*)-NT`"8nzzzzzzzzzzzz!!'grT65NupmP_`]63jRce!oT8TqIFGMi(@D>9Q18%WpBeutHu8YIA4O7SpKc+sL9F0lZs.b3omCWORUeq#Fn]1ff7pJ#G-kItht;A6pmP_`]63jRce!oT8TqIF@N3&*FmnO#.ck97`6:E%D03I(`QWUU&i9D1[aFc>'f5%G8^-ObfLFJ>\r;M/@@JB>r)?I1e@5,du+nSeX'Eoh!BoPLr@VHWJ@\f-`;Z:LY8Kmo_Ad?D#0[5)F,u]k>=.H$p;]q^?Xu6pgRT0&;GI9.]Q(k==7(su_^mKeN$]^*XT/b_iRI^9\/Rk'_VO.X[X!?($+R'u%ohpmP1W1+Tpkqp$[=RJ65/WUOJ"FCk0:>qq.oTiPM!n,14O/tI1k<0>3<$5]2)lT?d&ATH1smHj(k't2X`iUD'W$A9g"p/H/Qm_8!9o-U&'oK;S+h0mmRk"Rt-k]u$5])/Y.baWi8dIY"AkBe/\3oGMcAUk_L);rMA#.X2i!H.gHJ/`tUi5T+.\FGmdDZ"(U:O*o%bOL")-=7^7DrE74n%8HFqc1)_qsI.l2X9/9=XrGe)G9:D2aqfB^S]TJQh-2j3jnnI0b'oU-pqAhRYDp-&E0eZ@h0kOd.U2CjG:$Z9F`64iQ1)?^./R#Qi;;q9^,G95_HAAGGP@N9hjJ)bTkmPnBP&2>q6mNRbVk[p.ML'C@j^(Kp6jTgZ9`&rR;L1/gVQ-1gJBf,9Jj)8R=&5kB4`+*#*k$W[Pk<$n'e`_=)ulnbsWAV8,n1Y\;=[tT6B[\7M6R:p1O1\nJ`cce;3%4W%9Cu];YgRj<\hRi@\^S#q;\'`3BG@'2DFDp_.g3E)3$iGVE:#8>Yn(i8??dQL.gM#W\4"p(2\i4mRD7k)U"b&c3-?#Z=p[5]00Bh9RD7&iiSJV&)h4)':2Vu(;!l(CTPIJrZHZrfS**lhrDLp#UDVjQe.sCQCb]ds]kIE*doS^q;DVjQe.sCQCb]ds]kIE*doS^q;DVjQe.sCQCb]ds]kIE*doS^q;DVjQe.sCQCb]ds]kIE*doS^q;DVjQe.sCQCb]dt()PtR=ZX#Ne^?[k]n7>Yqk"X@5,N$b[n+tfaEOuZ]=tTY?Y5"1hF(X2o%i[0Y4&I/QW`::2c81eHoLr:lT;0:AQJTg:"6Qqhp&n(qT^RT40.j^1..d;(9\b4QZdNohWf>5rbj0%"E=9M)9$`?o2DU%CYHQ'd/bh(O4X[8`a;i@8^*XN&i6/4oS>^0IF"$YVRS;Lg0=0)JU8j3sU!2h<13!]9bY$3.m58[g;k8V]Y5^+\)>H2oUMjp,BG:)qO1+5JhOIYF/#[obb<8HCGKl;^1-_DuEi6Cq2J1g9.'X4-oCLWfGBu>fA*2$m'&-5<5G.=`Vmk,5B&9%+Ymi#No@Ya?H95tRk08_qgJBXiTC$Zs\'m6IhOI,Nj6S(_kfW7]G@i>d]6GuK^GF1_VGb-dpCd3^o5%kcjh#ajEPFrts0m[M:a=eTY?+/Q$@*@YXq:#sL!:q!ThdT+nZPdC66nmtiM>M)I1WbY,IfmOP01+SS@m%\[Q[3Of"^576*(!7h)CHLZU3?^5"\m^4&XAlS&gq!Tkn-ZV5pa>F_*aPG"-*$7)!s@;;.u'G3*prREq=mOkD[UDr,o,2X7_Vq-@@iZY!i\p.aV;G9mdq<$L'BqoS#Q/D7G5&5=2B&?"jH1t1iW7uLWGC>n*R[oSo2j&%8I1k:217u7s3aHUt;K^6R.'Y9Ko@YXqe('1+7"Oc'p,d.jaf?/$.4ML+cQY]SR95;DOlX_E(t>pel7ZRjbNl-1fe?XOG^S03-W:M%[Eu17u7s3aHUt;K^6R.'Y9Ko@YXqe('1+apUs(p,X02DEh7SfseP+,u1V;r+DqE82-sb)nbWE/3Y5NP"]T:Lk9Zk"(]B\*gf?F9qzzzzzzzzzzzz5k,pqe-_`~>endstream +endobj +10 0 obj +<< +/Contents 18 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << +/FormXob.1280b7d13f0587f75dbba24117c3e12a 9 0 R +>> +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +11 0 obj +<< +/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 14 0 R /Resources << +/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +>> /Rotate 0 /Trans << + +>> + /Type /Page +>> +endobj +12 0 obj +<< +/PageMode /UseNone /Pages 14 0 R /Type /Catalog +>> +endobj +13 0 obj +<< +/Author (anonymous) /CreationDate (D:20251216142815+00'00') /Creator (anonymous) /Keywords () /ModDate (D:20251216142815+00'00') /Producer (ReportLab PDF Library - \(opensource\)) + /Subject (unspecified) /Title (untitled) /Trapped /False +>> +endobj +14 0 obj +<< +/Count 5 /Kids [ 3 0 R 7 0 R 8 0 R 10 0 R 11 0 R ] /Type /Pages +>> +endobj +15 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 164 +>> +stream +GarW05mkI_&4Q=V`ET>Mc.&b?;-+rnF+G1',/ca*pUAWf>EIgiipknB9RY?:(LXAhG(PtB're&F\nA'4a%aIp+-h"W@9D(-_!#HM*Z:^`FOHNUN-;cL_m8qodCk0^Akq$V4PUhHkMQ7^Ejj*/Mgoa@anH4$%uMYhOT~>endstream +endobj +16 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 306 +>> +stream +GasbT4\rsL&4$!fMAlpjH?ZXMZl9aE"XK0lYb%&R$>PaP&&cf78Q/KO<^N*hq5!cWA-.^JqQm+$jrVMM!b1Zf5UJAHTA[O5a#Wj7rghI[YR$H&I1;qf=XrnMp^cl'VsjlS<tc"96#@mAfhO_96j,pMI1=[Fq,J31>/c9Cp=j48@sD.G@[NB&N,!B3"QRendstream +endobj +17 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 185 +>> +stream +GarW0:CDb>&4c2endstream +endobj +18 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 244 +>> +stream +GarW4b6l*?&4Q?hMRuh(23Tpmkt^cRET&,M[qV:g6EQRMs2I6!U^T$](X?G+!r#.NZmDs+Qu<6UTF4R17*n#s2&gSmk2Mk.09@0r[k9DgRu9WjKt]k!Ic1n'J.q+%HiE61]07.7.f1^O]tp[&Fn>&8hUMD]+;spqhR>>LX`Bap0=GTNaa\,&7Zqt_h]FP:T4bD(VQ.g\Pm&EGSuJ6sK$-Os9'08g6q!hekXZP?.6B5f2_iendstream +endobj +19 0 obj +<< +/Filter [ /ASCII85Decode /FlateDecode ] /Length 164 +>> +stream +GapQh0E=F,0U\H3T\pNYT^QKk?tc>IP,;W#U1^23ihPEM_?CT3!/hd>6k,goQl7B?"*$l7Jjr"7HE)RrVF!h>6AQD_Ah8\RZl9o#.%!/H~>endstream +endobj +xref +0 20 +0000000000 65535 f +0000000061 00000 n +0000000102 00000 n +0000000209 00000 n +0000000404 00000 n +0000000516 00000 n +0000004168 00000 n +0000008161 00000 n +0000008467 00000 n +0000008662 00000 n +0000012353 00000 n +0000012612 00000 n +0000012808 00000 n +0000012878 00000 n +0000013140 00000 n +0000013226 00000 n +0000013481 00000 n +0000013878 00000 n +0000014154 00000 n +0000014489 00000 n +trailer +<< +/ID +[<3a098456c5603f47bfc8fb47cd3d7621><3a098456c5603f47bfc8fb47cd3d7621>] +% ReportLab generated PDF document -- digest (opensource) + +/Info 13 0 R +/Root 12 0 R +/Size 20 +>> +startxref +14744 +%%EOF diff --git a/src/documents/tests/samples/documents/originals/0000004.pdf b/src/documents/tests/samples/documents/originals/0000004.pdf new file mode 100644 index 000000000..953bb88ab Binary files /dev/null and b/src/documents/tests/samples/documents/originals/0000004.pdf differ diff --git a/src/documents/tests/samples/documents/originals/0000004.pdf.gpg b/src/documents/tests/samples/documents/originals/0000004.pdf.gpg deleted file mode 100644 index 754efcbf6..000000000 Binary files a/src/documents/tests/samples/documents/originals/0000004.pdf.gpg and /dev/null differ diff --git a/src/documents/tests/samples/documents/thumbnails/0000004.webp b/src/documents/tests/samples/documents/thumbnails/0000004.webp new file mode 100644 index 000000000..a7ff623b2 Binary files /dev/null and b/src/documents/tests/samples/documents/thumbnails/0000004.webp differ diff --git a/src/documents/tests/samples/documents/thumbnails/0000004.webp.gpg b/src/documents/tests/samples/documents/thumbnails/0000004.webp.gpg deleted file mode 100644 index 3abc69d36..000000000 Binary files a/src/documents/tests/samples/documents/thumbnails/0000004.webp.gpg and /dev/null differ diff --git a/src/documents/tests/samples/malicious.svg b/src/documents/tests/samples/malicious.svg deleted file mode 100644 index 11fb65821..000000000 --- a/src/documents/tests/samples/malicious.svg +++ /dev/null @@ -1,4 +0,0 @@ - - Hello - - diff --git a/src/documents/tests/test_admin.py b/src/documents/tests/test_admin.py index 278014f7c..de2f07df5 100644 --- a/src/documents/tests/test_admin.py +++ b/src/documents/tests/test_admin.py @@ -2,9 +2,11 @@ import types from unittest.mock import patch from django.contrib.admin.sites import AdminSite +from django.contrib.auth.models import Permission from django.contrib.auth.models import User from django.test import TestCase from django.utils import timezone +from rest_framework import status from documents import index from documents.admin import DocumentAdmin @@ -25,7 +27,7 @@ class TestDocumentAdmin(DirectoriesMixin, TestCase): super().setUp() self.doc_admin = DocumentAdmin(model=Document, admin_site=AdminSite()) - def test_save_model(self): + def test_save_model(self) -> None: doc = Document.objects.create(title="test") doc.title = "new title" @@ -33,7 +35,7 @@ class TestDocumentAdmin(DirectoriesMixin, TestCase): self.assertEqual(Document.objects.get(id=doc.id).title, "new title") self.assertEqual(self.get_document_from_index(doc)["id"], doc.id) - def test_delete_model(self): + def test_delete_model(self) -> None: doc = Document.objects.create(title="test") index.add_or_update_document(doc) self.assertIsNotNone(self.get_document_from_index(doc)) @@ -43,7 +45,7 @@ class TestDocumentAdmin(DirectoriesMixin, TestCase): self.assertRaises(Document.DoesNotExist, Document.objects.get, id=doc.id) self.assertIsNone(self.get_document_from_index(doc)) - def test_delete_queryset(self): + def test_delete_queryset(self) -> None: docs = [] for i in range(42): doc = Document.objects.create( @@ -65,7 +67,7 @@ class TestDocumentAdmin(DirectoriesMixin, TestCase): for doc in docs: self.assertIsNone(self.get_document_from_index(doc)) - def test_created(self): + def test_created(self) -> None: doc = Document.objects.create( title="test", created=timezone.make_aware(timezone.datetime(2020, 4, 12)), @@ -96,7 +98,7 @@ class TestPaperlessAdmin(DirectoriesMixin, TestCase): super().setUp() self.user_admin = PaperlessUserAdmin(model=User, admin_site=AdminSite()) - def test_request_is_passed_to_form(self): + def test_request_is_passed_to_form(self) -> None: user = User.objects.create(username="test", is_superuser=False) non_superuser = User.objects.create(username="requestuser") request = types.SimpleNamespace(user=non_superuser) @@ -104,7 +106,7 @@ class TestPaperlessAdmin(DirectoriesMixin, TestCase): form = formType(data={}, instance=user) self.assertEqual(form.request, request) - def test_only_superuser_can_change_superuser(self): + def test_only_superuser_can_change_superuser(self) -> None: superuser = User.objects.create_superuser(username="superuser", password="test") non_superuser = User.objects.create(username="requestuser") user = User.objects.create(username="test", is_superuser=False) @@ -125,3 +127,36 @@ class TestPaperlessAdmin(DirectoriesMixin, TestCase): form.request = types.SimpleNamespace(user=superuser) self.assertTrue(form.is_valid()) self.assertEqual({}, form.errors) + + def test_superuser_can_only_be_modified_by_superuser(self) -> None: + superuser = User.objects.create_superuser(username="superuser", password="test") + user = User.objects.create( + username="test", + is_superuser=False, + is_staff=True, + ) + change_user_perm = Permission.objects.get(codename="change_user") + user.user_permissions.add(change_user_perm) + + self.client.force_login(user) + response = self.client.patch( + f"/api/users/{superuser.pk}/", + {"first_name": "Updated"}, + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + self.assertEqual( + response.content.decode(), + "Superusers can only be modified by other superusers", + ) + + self.client.logout() + self.client.force_login(superuser) + response = self.client.patch( + f"/api/users/{superuser.pk}/", + {"first_name": "Updated"}, + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + superuser.refresh_from_db() + self.assertEqual(superuser.first_name, "Updated") diff --git a/src/documents/tests/test_api_app_config.py b/src/documents/tests/test_api_app_config.py index 750aeddbf..7717c3488 100644 --- a/src/documents/tests/test_api_app_config.py +++ b/src/documents/tests/test_api_app_config.py @@ -1,5 +1,7 @@ import json +from io import BytesIO from pathlib import Path +from unittest.mock import patch from django.contrib.auth.models import User from django.core.files.uploadedfile import SimpleUploadedFile @@ -20,7 +22,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): user = User.objects.create_superuser(username="temp_admin") self.client.force_authenticate(user=user) - def test_api_get_config(self): + def test_api_get_config(self) -> None: """ GIVEN: - API request to get app config @@ -65,10 +67,18 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): "barcode_max_pages": None, "barcode_enable_tag": None, "barcode_tag_mapping": None, + "barcode_tag_split": None, + "ai_enabled": False, + "llm_embedding_backend": None, + "llm_embedding_model": None, + "llm_backend": None, + "llm_model": None, + "llm_api_key": None, + "llm_endpoint": None, }, ) - def test_api_get_ui_settings_with_config(self): + def test_api_get_ui_settings_with_config(self) -> None: """ GIVEN: - Existing config with app_title, app_logo specified @@ -91,7 +101,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): | response.data["settings"], ) - def test_api_update_config(self): + def test_api_update_config(self) -> None: """ GIVEN: - API request to update app config @@ -114,7 +124,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): config = ApplicationConfiguration.objects.first() self.assertEqual(config.color_conversion_strategy, ColorConvertChoices.RGB) - def test_api_update_config_empty_fields(self): + def test_api_update_config_empty_fields(self) -> None: """ GIVEN: - API request to update app config with empty string for user_args JSONField and language field @@ -141,7 +151,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): self.assertEqual(config.language, None) self.assertEqual(config.barcode_tag_mapping, None) - def test_api_replace_app_logo(self): + def test_api_replace_app_logo(self) -> None: """ GIVEN: - Existing config with app_logo specified @@ -190,7 +200,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): ) self.assertFalse(Path(old_logo.path).exists()) - def test_api_rejects_malicious_svg_logo(self): + def test_api_rejects_malicious_svg_logo(self) -> None: """ GIVEN: - An SVG logo containing a + + """ + svg_file = BytesIO(malicious_svg) + svg_file.name = "malicious_script.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("disallowed svg tag", str(response.data).lower()) + + def test_api_rejects_malicious_svg_with_style_javascript(self) -> None: + """ + GIVEN: + - An SVG logo containing javascript: in style attribute + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + """ + + malicious_svg = b""" + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "malicious_style.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn( + "disallowed pattern in style attribute", + str(response.data).lower(), + ) + self.assertIn("style", str(response.data).lower()) + + def test_api_rejects_svg_with_style_expression(self) -> None: + """ + GIVEN: + - An SVG logo containing CSS expression() in style + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + """ + + malicious_svg = b""" + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "expression_style.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertIn("disallowed", str(response.data).lower()) - def test_create_not_allowed(self): + def test_api_rejects_svg_with_style_cdata_javascript(self) -> None: + """ + GIVEN: + - An SVG logo with javascript: hidden in a CDATA style block + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + """ + + malicious_svg = b""" + + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "cdata_style.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("disallowed", str(response.data).lower()) + + def test_api_rejects_svg_with_style_import(self) -> None: + """ + GIVEN: + - An SVG logo containing @import in style + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + """ + + malicious_svg = b""" + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "import_style.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("disallowed", str(response.data).lower()) + + def test_api_accepts_valid_svg_with_safe_style(self) -> None: + """ + GIVEN: + - A valid SVG logo with safe style attributes + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is accepted with 200 + """ + + safe_svg = b""" + + + + """ + + svg_file = BytesIO(safe_svg) + svg_file.name = "safe_logo.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_api_accepts_valid_svg_with_safe_style_tag(self) -> None: + """ + GIVEN: + - A valid SVG logo with an embedded + + + """ + + svg_file = BytesIO(safe_svg) + svg_file.name = "safe_logo_with_style.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_api_rejects_svg_with_disallowed_attribute(self) -> None: + """ + GIVEN: + - An SVG with a disallowed attribute (onclick) + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + """ + + malicious_svg = b""" + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "onclick_attribute.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("disallowed", str(response.data).lower()) + self.assertIn("attribute", str(response.data).lower()) + + def test_api_rejects_svg_with_disallowed_tag(self) -> None: + """ + GIVEN: + - An SVG with a disallowed tag (script) + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + """ + + malicious_svg = b""" + + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "script_tag.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("disallowed", str(response.data).lower()) + self.assertIn("tag", str(response.data).lower()) + + def test_api_rejects_svg_with_javascript_href(self) -> None: + """ + GIVEN: + - An SVG with javascript: in href attribute + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + """ + malicious_svg = b""" + + + + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "javascript_href.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("disallowed", str(response.data).lower()) + self.assertIn("javascript", str(response.data).lower()) + + def test_api_rejects_svg_with_javascript_xlink_href(self) -> None: + """ + GIVEN: + - An SVG with javascript: in xlink:href attribute + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + """ + malicious_svg = b""" + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "javascript_xlink_href.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("disallowed", str(response.data).lower()) + self.assertIn("javascript", str(response.data).lower()) + + def test_api_rejects_svg_with_data_text_html_href(self) -> None: + """ + GIVEN: + - An SVG with data:text/html in href attribute + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + """ + malicious_svg = b""" + + + + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "data_html_href.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + # This will now catch "Disallowed URI scheme" + self.assertIn("disallowed", str(response.data).lower()) + + def test_api_rejects_svg_with_unknown_namespace_attribute(self) -> None: + """ + GIVEN: + - An SVG with an attribute in an unknown/custom namespace + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 + - Error message identifies the namespaced attribute as disallowed + """ + + # Define a custom namespace "my:hack" and try to use it + malicious_svg = b""" + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "unknown_namespace.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + # The error message should show the full Clark notation (curly braces) + # because the validator's 'else' block kept the raw lxml name. + error_msg = str(response.data).lower() + self.assertIn("disallowed svg attribute", error_msg) + self.assertIn("{http://example.com/hack}fill", error_msg) + + def test_api_rejects_svg_with_external_http_href(self) -> None: + """ + GIVEN: + - An SVG with an external URI (http://) in a safe tag's href attribute. + WHEN: + - Uploaded via PATCH to app config + THEN: + - SVG is rejected with 400 because http:// is not a safe_prefix. + """ + from io import BytesIO + + # http:// is not in dangerous_schemes, but it is not in safe_prefixes. + malicious_svg = b""" + + + """ + + svg_file = BytesIO(malicious_svg) + svg_file.name = "external_http_href.svg" + + response = self.client.patch( + f"{self.ENDPOINT}1/", + {"app_logo": svg_file}, + format="multipart", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + # Check for the error message raised by the safe_prefixes check + self.assertIn("uri scheme not allowed", str(response.data).lower()) + + def test_create_not_allowed(self) -> None: """ GIVEN: - API request to create a new app config @@ -231,3 +620,76 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED) self.assertEqual(ApplicationConfiguration.objects.count(), 1) + + def test_update_llm_api_key(self) -> None: + """ + GIVEN: + - Existing config with llm_api_key specified + WHEN: + - API to update llm_api_key is called with all *s + - API to update llm_api_key is called with empty string + THEN: + - llm_api_key is unchanged + - llm_api_key is set to None + """ + config = ApplicationConfiguration.objects.first() + config.llm_api_key = "1234567890" + config.save() + + # Test with all * + response = self.client.patch( + f"{self.ENDPOINT}1/", + json.dumps( + { + "llm_api_key": "*" * 32, + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + config.refresh_from_db() + self.assertEqual(config.llm_api_key, "1234567890") + # Test with empty string + response = self.client.patch( + f"{self.ENDPOINT}1/", + json.dumps( + { + "llm_api_key": "", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + config.refresh_from_db() + self.assertEqual(config.llm_api_key, None) + + def test_enable_ai_index_triggers_update(self) -> None: + """ + GIVEN: + - Existing config with AI disabled + WHEN: + - Config is updated to enable AI with llm_embedding_backend + THEN: + - LLM index is triggered to update + """ + config = ApplicationConfiguration.objects.first() + config.ai_enabled = False + config.llm_embedding_backend = None + config.save() + + with ( + patch("documents.tasks.llmindex_index.delay") as mock_update, + patch("paperless_ai.indexing.vector_store_file_exists") as mock_exists, + ): + mock_exists.return_value = False + self.client.patch( + f"{self.ENDPOINT}1/", + json.dumps( + { + "ai_enabled": True, + "llm_embedding_backend": "openai", + }, + ), + content_type="application/json", + ) + mock_update.assert_called_once() diff --git a/src/documents/tests/test_api_bulk_download.py b/src/documents/tests/test_api_bulk_download.py index a7e8f5df3..865f57247 100644 --- a/src/documents/tests/test_api_bulk_download.py +++ b/src/documents/tests/test_api_bulk_download.py @@ -20,7 +20,7 @@ from documents.tests.utils import SampleDirMixin class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): ENDPOINT = "/api/documents/bulk_download/" - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") @@ -56,7 +56,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): shutil.copy(self.SAMPLE_DIR / "simple.jpg", self.doc3.source_path) shutil.copy(self.SAMPLE_DIR / "test_with_bom.pdf", self.doc3.archive_path) - def test_download_originals(self): + def test_download_originals(self) -> None: response = self.client.post( self.ENDPOINT, json.dumps( @@ -79,7 +79,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): with self.doc3.source_file as f: self.assertEqual(f.read(), zipf.read("2020-03-21 document B.jpg")) - def test_download_default(self): + def test_download_default(self) -> None: response = self.client.post( self.ENDPOINT, json.dumps({"documents": [self.doc2.id, self.doc3.id]}), @@ -100,7 +100,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): with self.doc3.archive_file as f: self.assertEqual(f.read(), zipf.read("2020-03-21 document B.pdf")) - def test_download_both(self): + def test_download_both(self) -> None: response = self.client.post( self.ENDPOINT, json.dumps({"documents": [self.doc2.id, self.doc3.id], "content": "both"}), @@ -134,7 +134,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): zipf.read("originals/2020-03-21 document B.jpg"), ) - def test_filename_clashes(self): + def test_filename_clashes(self) -> None: response = self.client.post( self.ENDPOINT, json.dumps({"documents": [self.doc2.id, self.doc2b.id]}), @@ -156,7 +156,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): with self.doc2b.source_file as f: self.assertEqual(f.read(), zipf.read("2021-01-01 document A_01.pdf")) - def test_compression(self): + def test_compression(self) -> None: self.client.post( self.ENDPOINT, json.dumps( @@ -166,7 +166,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): ) @override_settings(FILENAME_FORMAT="{correspondent}/{title}") - def test_formatted_download_originals(self): + def test_formatted_download_originals(self) -> None: """ GIVEN: - Defined file naming format @@ -218,7 +218,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): ) @override_settings(FILENAME_FORMAT="somewhere/{title}") - def test_formatted_download_archive(self): + def test_formatted_download_archive(self) -> None: """ GIVEN: - Defined file naming format @@ -261,7 +261,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): self.assertEqual(f.read(), zipf.read("somewhere/Title 2 - Doc 3.pdf")) @override_settings(FILENAME_FORMAT="{document_type}/{title}") - def test_formatted_download_both(self): + def test_formatted_download_both(self) -> None: """ GIVEN: - Defined file naming format @@ -322,7 +322,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase): zipf.read("originals/statement/Title 2 - Doc 3.jpg"), ) - def test_download_insufficient_permissions(self): + def test_download_insufficient_permissions(self) -> None: user = User.objects.create_user(username="temp_user") self.client.force_authenticate(user=user) diff --git a/src/documents/tests/test_api_bulk_edit.py b/src/documents/tests/test_api_bulk_edit.py index 945f06b67..deb1d5586 100644 --- a/src/documents/tests/test_api_bulk_edit.py +++ b/src/documents/tests/test_api_bulk_edit.py @@ -19,7 +19,7 @@ from documents.tests.utils import DirectoriesMixin class TestBulkEditAPI(DirectoriesMixin, APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() user = User.objects.create_superuser(username="temp_admin") @@ -58,12 +58,12 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.cf1 = CustomField.objects.create(name="cf1", data_type="string") self.cf2 = CustomField.objects.create(name="cf2", data_type="string") - def setup_mock(self, m, method_name, return_value="OK"): + def setup_mock(self, m, method_name, return_value="OK") -> None: m.return_value = return_value m.__name__ = method_name @mock.patch("documents.bulk_edit.bulk_update_documents.delay") - def test_api_set_correspondent(self, bulk_update_task_mock): + def test_api_set_correspondent(self, bulk_update_task_mock) -> None: self.assertNotEqual(self.doc1.correspondent, self.c1) response = self.client.post( "/api/documents/bulk_edit/", @@ -82,7 +82,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): bulk_update_task_mock.assert_called_once_with(document_ids=[self.doc1.pk]) @mock.patch("documents.bulk_edit.bulk_update_documents.delay") - def test_api_unset_correspondent(self, bulk_update_task_mock): + def test_api_unset_correspondent(self, bulk_update_task_mock) -> None: self.doc1.correspondent = self.c1 self.doc1.save() self.assertIsNotNone(self.doc1.correspondent) @@ -104,7 +104,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertIsNone(self.doc1.correspondent) @mock.patch("documents.bulk_edit.bulk_update_documents.delay") - def test_api_set_type(self, bulk_update_task_mock): + def test_api_set_type(self, bulk_update_task_mock) -> None: self.assertNotEqual(self.doc1.document_type, self.dt1) response = self.client.post( "/api/documents/bulk_edit/", @@ -123,7 +123,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): bulk_update_task_mock.assert_called_once_with(document_ids=[self.doc1.pk]) @mock.patch("documents.bulk_edit.bulk_update_documents.delay") - def test_api_unset_type(self, bulk_update_task_mock): + def test_api_unset_type(self, bulk_update_task_mock) -> None: self.doc1.document_type = self.dt1 self.doc1.save() @@ -144,7 +144,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): bulk_update_task_mock.assert_called_once_with(document_ids=[self.doc1.pk]) @mock.patch("documents.bulk_edit.bulk_update_documents.delay") - def test_api_add_tag(self, bulk_update_task_mock): + def test_api_add_tag(self, bulk_update_task_mock) -> None: self.assertFalse(self.doc1.tags.filter(pk=self.t1.pk).exists()) response = self.client.post( @@ -166,7 +166,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): bulk_update_task_mock.assert_called_once_with(document_ids=[self.doc1.pk]) @mock.patch("documents.bulk_edit.bulk_update_documents.delay") - def test_api_remove_tag(self, bulk_update_task_mock): + def test_api_remove_tag(self, bulk_update_task_mock) -> None: self.doc1.tags.add(self.t1) response = self.client.post( @@ -185,7 +185,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertFalse(self.doc1.tags.filter(pk=self.t1.pk).exists()) @mock.patch("documents.serialisers.bulk_edit.modify_tags") - def test_api_modify_tags(self, m): + def test_api_modify_tags(self, m) -> None: self.setup_mock(m, "modify_tags") response = self.client.post( "/api/documents/bulk_edit/", @@ -209,7 +209,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(kwargs["remove_tags"], [self.t2.id]) @mock.patch("documents.serialisers.bulk_edit.modify_tags") - def test_api_modify_tags_not_provided(self, m): + def test_api_modify_tags_not_provided(self, m) -> None: """ GIVEN: - API data to modify tags is missing remove_tags field @@ -237,7 +237,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): m.assert_not_called() @mock.patch("documents.serialisers.bulk_edit.modify_custom_fields") - def test_api_modify_custom_fields(self, m): + def test_api_modify_custom_fields(self, m) -> None: self.setup_mock(m, "modify_custom_fields") response = self.client.post( "/api/documents/bulk_edit/", @@ -263,7 +263,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(kwargs["remove_custom_fields"], [self.cf2.id]) @mock.patch("documents.serialisers.bulk_edit.modify_custom_fields") - def test_api_modify_custom_fields_with_values(self, m): + def test_api_modify_custom_fields_with_values(self, m) -> None: self.setup_mock(m, "modify_custom_fields") response = self.client.post( "/api/documents/bulk_edit/", @@ -287,7 +287,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(kwargs["remove_custom_fields"], [self.cf2.id]) @mock.patch("documents.serialisers.bulk_edit.modify_custom_fields") - def test_api_modify_custom_fields_invalid_params(self, m): + def test_api_modify_custom_fields_invalid_params(self, m) -> None: """ GIVEN: - API data to modify custom fields is malformed @@ -407,7 +407,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): m.assert_not_called() @mock.patch("documents.serialisers.bulk_edit.delete") - def test_api_delete(self, m): + def test_api_delete(self, m) -> None: self.setup_mock(m, "delete") response = self.client.post( "/api/documents/bulk_edit/", @@ -423,7 +423,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(len(kwargs), 0) @mock.patch("documents.serialisers.bulk_edit.set_storage_path") - def test_api_set_storage_path(self, m): + def test_api_set_storage_path(self, m) -> None: """ GIVEN: - API data to set the storage path of a document @@ -453,7 +453,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(kwargs["storage_path"], self.sp1.id) @mock.patch("documents.serialisers.bulk_edit.set_storage_path") - def test_api_unset_storage_path(self, m): + def test_api_unset_storage_path(self, m) -> None: """ GIVEN: - API data to clear/unset the storage path of a document @@ -482,7 +482,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertListEqual(args[0], [self.doc1.id]) self.assertEqual(kwargs["storage_path"], None) - def test_api_invalid_storage_path(self): + def test_api_invalid_storage_path(self) -> None: """ GIVEN: - API data to set the storage path of a document @@ -507,7 +507,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.async_task.assert_not_called() - def test_api_set_storage_path_not_provided(self): + def test_api_set_storage_path_not_provided(self) -> None: """ GIVEN: - API data to set the storage path of a document @@ -532,7 +532,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.async_task.assert_not_called() - def test_api_invalid_doc(self): + def test_api_invalid_doc(self) -> None: self.assertEqual(Document.objects.count(), 5) response = self.client.post( "/api/documents/bulk_edit/", @@ -542,7 +542,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(Document.objects.count(), 5) - def test_api_invalid_method(self): + def test_api_invalid_method(self) -> None: self.assertEqual(Document.objects.count(), 5) response = self.client.post( "/api/documents/bulk_edit/", @@ -558,7 +558,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(Document.objects.count(), 5) - def test_api_invalid_correspondent(self): + def test_api_invalid_correspondent(self) -> None: self.assertEqual(self.doc2.correspondent, self.c1) response = self.client.post( "/api/documents/bulk_edit/", @@ -576,7 +576,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): doc2 = Document.objects.get(id=self.doc2.id) self.assertEqual(doc2.correspondent, self.c1) - def test_api_no_correspondent(self): + def test_api_no_correspondent(self) -> None: response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -590,7 +590,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_api_invalid_document_type(self): + def test_api_invalid_document_type(self) -> None: self.assertEqual(self.doc2.document_type, self.dt1) response = self.client.post( "/api/documents/bulk_edit/", @@ -608,7 +608,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): doc2 = Document.objects.get(id=self.doc2.id) self.assertEqual(doc2.document_type, self.dt1) - def test_api_no_document_type(self): + def test_api_no_document_type(self) -> None: response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -622,7 +622,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_api_add_invalid_tag(self): + def test_api_add_invalid_tag(self) -> None: self.assertEqual(list(self.doc2.tags.all()), [self.t1]) response = self.client.post( "/api/documents/bulk_edit/", @@ -639,7 +639,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(list(self.doc2.tags.all()), [self.t1]) - def test_api_add_tag_no_tag(self): + def test_api_add_tag_no_tag(self) -> None: response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -649,7 +649,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_api_delete_invalid_tag(self): + def test_api_delete_invalid_tag(self) -> None: self.assertEqual(list(self.doc2.tags.all()), [self.t1]) response = self.client.post( "/api/documents/bulk_edit/", @@ -666,7 +666,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(list(self.doc2.tags.all()), [self.t1]) - def test_api_delete_tag_no_tag(self): + def test_api_delete_tag_no_tag(self) -> None: response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -676,7 +676,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_api_modify_invalid_tags(self): + def test_api_modify_invalid_tags(self) -> None: self.assertEqual(list(self.doc2.tags.all()), [self.t1]) response = self.client.post( "/api/documents/bulk_edit/", @@ -694,7 +694,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_api_modify_tags_no_tags(self): + def test_api_modify_tags_no_tags(self) -> None: response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -721,7 +721,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_api_selection_data_empty(self): + def test_api_selection_data_empty(self) -> None: response = self.client.post( "/api/documents/selection_data/", json.dumps({"documents": []}), @@ -741,7 +741,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): map(lambda c: c["id"], Entity.objects.values("id")), ) - def test_api_selection_data(self): + def test_api_selection_data(self) -> None: response = self.client.post( "/api/documents/selection_data/", json.dumps( @@ -774,7 +774,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): ) @mock.patch("documents.serialisers.bulk_edit.set_permissions") - def test_set_permissions(self, m): + def test_set_permissions(self, m) -> None: self.setup_mock(m, "set_permissions") user1 = User.objects.create(username="user1") user2 = User.objects.create(username="user2") @@ -809,7 +809,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(len(kwargs["set_permissions"]["view"]["users"]), 2) @mock.patch("documents.serialisers.bulk_edit.set_permissions") - def test_set_permissions_merge(self, m): + def test_set_permissions_merge(self, m) -> None: self.setup_mock(m, "set_permissions") user1 = User.objects.create(username="user1") user2 = User.objects.create(username="user2") @@ -862,7 +862,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): @mock.patch("documents.serialisers.bulk_edit.set_storage_path") @mock.patch("documents.serialisers.bulk_edit.merge") - def test_insufficient_global_perms(self, mock_merge, mock_set_storage): + def test_insufficient_global_perms(self, mock_merge, mock_set_storage) -> None: """ GIVEN: - User has no global permissions to change a document @@ -929,7 +929,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): mock_merge.assert_not_called() @mock.patch("documents.serialisers.bulk_edit.set_permissions") - def test_insufficient_permissions_ownership(self, m): + def test_insufficient_permissions_ownership(self, m) -> None: """ GIVEN: - Documents owned by user other than logged in user @@ -983,7 +983,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): m.assert_called_once() @mock.patch("documents.serialisers.bulk_edit.set_storage_path") - def test_insufficient_permissions_edit(self, m): + def test_insufficient_permissions_edit(self, m) -> None: """ GIVEN: - Documents for which current user only has view permissions @@ -1037,7 +1037,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): m.assert_called_once() @mock.patch("documents.serialisers.bulk_edit.rotate") - def test_rotate(self, m): + def test_rotate(self, m) -> None: self.setup_mock(m, "rotate") response = self.client.post( "/api/documents/bulk_edit/", @@ -1059,7 +1059,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(kwargs["degrees"], 90) @mock.patch("documents.serialisers.bulk_edit.rotate") - def test_rotate_invalid_params(self, m): + def test_rotate_invalid_params(self, m) -> None: response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -1091,7 +1091,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): m.assert_not_called() @mock.patch("documents.serialisers.bulk_edit.merge") - def test_merge(self, m): + def test_merge(self, m) -> None: self.setup_mock(m, "merge") response = self.client.post( "/api/documents/bulk_edit/", @@ -1114,7 +1114,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(kwargs["user"], self.user) @mock.patch("documents.serialisers.bulk_edit.merge") - def test_merge_and_delete_insufficient_permissions(self, m): + def test_merge_and_delete_insufficient_permissions(self, m) -> None: self.doc1.owner = User.objects.get(username="temp_admin") self.doc1.save() user1 = User.objects.create(username="user1") @@ -1161,7 +1161,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): m.assert_called_once() @mock.patch("documents.serialisers.bulk_edit.merge") - def test_merge_invalid_parameters(self, m): + def test_merge_invalid_parameters(self, m) -> None: """ GIVEN: - API data for merging documents is called @@ -1190,7 +1190,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): m.assert_not_called() @mock.patch("documents.serialisers.bulk_edit.split") - def test_split(self, m): + def test_split(self, m) -> None: self.setup_mock(m, "split") response = self.client.post( "/api/documents/bulk_edit/", @@ -1212,7 +1212,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(kwargs["pages"], [[1], [2, 3, 4], [5, 6], [7]]) self.assertEqual(kwargs["user"], self.user) - def test_split_invalid_params(self): + def test_split_invalid_params(self) -> None: response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -1280,7 +1280,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertIn(b"delete_originals must be a boolean", response.content) @mock.patch("documents.serialisers.bulk_edit.delete_pages") - def test_delete_pages(self, m): + def test_delete_pages(self, m) -> None: self.setup_mock(m, "delete_pages") response = self.client.post( "/api/documents/bulk_edit/", @@ -1301,7 +1301,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertCountEqual(args[0], [self.doc2.id]) self.assertEqual(kwargs["pages"], [1, 2, 3, 4]) - def test_delete_pages_invalid_params(self): + def test_delete_pages_invalid_params(self) -> None: response = self.client.post( "/api/documents/bulk_edit/", json.dumps( @@ -1371,7 +1371,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertIn(b"pages must be a list of integers", response.content) @mock.patch("documents.serialisers.bulk_edit.edit_pdf") - def test_edit_pdf(self, m): + def test_edit_pdf(self, m) -> None: self.setup_mock(m, "edit_pdf") response = self.client.post( "/api/documents/bulk_edit/", @@ -1393,7 +1393,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(kwargs["operations"], [{"page": 1}]) self.assertEqual(kwargs["user"], self.user) - def test_edit_pdf_invalid_params(self): + def test_edit_pdf_invalid_params(self) -> None: # multiple documents response = self.client.post( "/api/documents/bulk_edit/", @@ -1557,7 +1557,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): ) @mock.patch("documents.serialisers.bulk_edit.edit_pdf") - def test_edit_pdf_page_out_of_bounds(self, m): + def test_edit_pdf_page_out_of_bounds(self, m) -> None: """ GIVEN: - API data for editing PDF is called @@ -1582,8 +1582,60 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertIn(b"out of bounds", response.content) + @mock.patch("documents.serialisers.bulk_edit.remove_password") + def test_remove_password(self, m) -> None: + self.setup_mock(m, "remove_password") + response = self.client.post( + "/api/documents/bulk_edit/", + json.dumps( + { + "documents": [self.doc2.id], + "method": "remove_password", + "parameters": {"password": "secret", "update_document": True}, + }, + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + m.assert_called_once() + args, kwargs = m.call_args + self.assertCountEqual(args[0], [self.doc2.id]) + self.assertEqual(kwargs["password"], "secret") + self.assertTrue(kwargs["update_document"]) + self.assertEqual(kwargs["user"], self.user) + + def test_remove_password_invalid_params(self) -> None: + response = self.client.post( + "/api/documents/bulk_edit/", + json.dumps( + { + "documents": [self.doc2.id], + "method": "remove_password", + "parameters": {}, + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn(b"password not specified", response.content) + + response = self.client.post( + "/api/documents/bulk_edit/", + json.dumps( + { + "documents": [self.doc2.id], + "method": "remove_password", + "parameters": {"password": 123}, + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn(b"password must be a string", response.content) + @override_settings(AUDIT_LOG_ENABLED=True) - def test_bulk_edit_audit_log_enabled_simple_field(self): + def test_bulk_edit_audit_log_enabled_simple_field(self) -> None: """ GIVEN: - Audit log is enabled @@ -1609,7 +1661,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(LogEntry.objects.filter(object_pk=self.doc1.id).count(), 1) @override_settings(AUDIT_LOG_ENABLED=True) - def test_bulk_edit_audit_log_enabled_tags(self): + def test_bulk_edit_audit_log_enabled_tags(self) -> None: """ GIVEN: - Audit log is enabled @@ -1638,7 +1690,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase): self.assertEqual(LogEntry.objects.filter(object_pk=self.doc1.id).count(), 1) @override_settings(AUDIT_LOG_ENABLED=True) - def test_bulk_edit_audit_log_enabled_custom_fields(self): + def test_bulk_edit_audit_log_enabled_custom_fields(self) -> None: """ GIVEN: - Audit log is enabled diff --git a/src/documents/tests/test_api_custom_fields.py b/src/documents/tests/test_api_custom_fields.py index 8e24226dc..9d9014b29 100644 --- a/src/documents/tests/test_api_custom_fields.py +++ b/src/documents/tests/test_api_custom_fields.py @@ -1,9 +1,11 @@ import json from datetime import date +from unittest import mock from unittest.mock import ANY from django.contrib.auth.models import Permission from django.contrib.auth.models import User +from django.test import override_settings from rest_framework import status from rest_framework.test import APITestCase @@ -16,12 +18,12 @@ from documents.tests.utils import DirectoriesMixin class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): ENDPOINT = "/api/custom_fields/" - def setUp(self): + def setUp(self) -> None: self.user = User.objects.create_superuser(username="temp_admin") self.client.force_authenticate(user=self.user) return super().setUp() - def test_create_custom_field(self): + def test_create_custom_field(self) -> None: """ GIVEN: - Each of the supported data types is created @@ -86,7 +88,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): ], ) - def test_create_custom_field_nonunique_name(self): + def test_create_custom_field_nonunique_name(self) -> None: """ GIVEN: - Custom field exists @@ -109,7 +111,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): ) self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST) - def test_create_custom_field_select_invalid_options(self): + def test_create_custom_field_select_invalid_options(self) -> None: """ GIVEN: - Custom field does not exist @@ -148,7 +150,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): ) self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST) - def test_custom_field_select_unique_ids(self): + def test_custom_field_select_unique_ids(self) -> None: """ GIVEN: - Existing custom field @@ -211,7 +213,8 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): ], ) - def test_custom_field_select_options_pruned(self): + @override_settings(CELERY_TASK_ALWAYS_EAGER=True) + def test_custom_field_select_options_pruned(self) -> None: """ GIVEN: - Select custom field exists and document instance with one of the options @@ -242,7 +245,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): CustomFieldInstance.objects.create( document=doc, field=custom_field_select, - value_text="abc-123", + value_select="def-456", ) resp = self.client.patch( @@ -274,7 +277,53 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): doc.refresh_from_db() self.assertEqual(doc.custom_fields.first().value, None) - def test_custom_field_select_old_version(self): + @mock.patch("documents.signals.handlers.process_cf_select_update.delay") + def test_custom_field_update_offloaded_once(self, mock_delay) -> None: + """ + GIVEN: + - A select custom field attached to multiple documents + WHEN: + - The select options are updated + THEN: + - The async update task is enqueued once + """ + cf_select = CustomField.objects.create( + name="Select Field", + data_type=CustomField.FieldDataType.SELECT, + extra_data={ + "select_options": [ + {"label": "Option 1", "id": "abc-123"}, + {"label": "Option 2", "id": "def-456"}, + ], + }, + ) + + documents = [ + Document.objects.create( + title="WOW", + content="the content", + checksum=f"{i}", + mime_type="application/pdf", + ) + for i in range(3) + ] + for document in documents: + CustomFieldInstance.objects.create( + document=document, + field=cf_select, + value_select="def-456", + ) + + cf_select.extra_data = { + "select_options": [ + {"label": "Option 1", "id": "abc-123"}, + ], + } + cf_select.save() + + mock_delay.assert_called_once_with(cf_select) + + def test_custom_field_select_old_version(self) -> None: """ GIVEN: - Nothing @@ -328,7 +377,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): ], ) - def test_custom_field_select_value_old_version(self): + def test_custom_field_select_value_old_version(self) -> None: """ GIVEN: - Existing document with custom field select @@ -381,7 +430,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): data = resp.json() self.assertEqual(data["custom_fields"][0]["value"], 1) - def test_create_custom_field_monetary_validation(self): + def test_create_custom_field_monetary_validation(self) -> None: """ GIVEN: - Custom field does not exist @@ -441,7 +490,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): ) self.assertEqual(resp.status_code, status.HTTP_201_CREATED) - def test_create_custom_field_instance(self): + def test_create_custom_field_instance(self) -> None: """ GIVEN: - Field of each data type is created @@ -585,7 +634,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): doc.refresh_from_db() self.assertEqual(len(doc.custom_fields.all()), 10) - def test_change_custom_field_instance_value(self): + def test_change_custom_field_instance_value(self) -> None: """ GIVEN: - Custom field instance is created and attached to document @@ -643,7 +692,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(CustomFieldInstance.objects.count(), 1) self.assertEqual(doc.custom_fields.first().value, "a new test value") - def test_delete_custom_field_instance(self): + def test_delete_custom_field_instance(self) -> None: """ GIVEN: - Multiple custom field instances are created and attached to document @@ -709,7 +758,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(len(doc.custom_fields.all()), 1) self.assertEqual(doc.custom_fields.first().value, date_value) - def test_custom_field_validation(self): + def test_custom_field_validation(self) -> None: """ GIVEN: - Document exists with no fields @@ -750,7 +799,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(CustomFieldInstance.objects.count(), 0) self.assertEqual(len(doc.custom_fields.all()), 0) - def test_custom_field_value_url_validation(self): + def test_custom_field_value_url_validation(self) -> None: """ GIVEN: - Document & custom field exist @@ -804,7 +853,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(resp.status_code, status.HTTP_200_OK) - def test_custom_field_value_integer_validation(self): + def test_custom_field_value_integer_validation(self) -> None: """ GIVEN: - Document & custom field exist @@ -842,7 +891,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(CustomFieldInstance.objects.count(), 0) self.assertEqual(len(doc.custom_fields.all()), 0) - def test_custom_field_value_monetary_validation(self): + def test_custom_field_value_monetary_validation(self) -> None: """ GIVEN: - Document & custom field exist @@ -913,7 +962,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(CustomFieldInstance.objects.count(), 0) self.assertEqual(len(doc.custom_fields.all()), 0) - def test_custom_field_value_short_text_validation(self): + def test_custom_field_value_short_text_validation(self) -> None: """ GIVEN: - Document & custom field exist @@ -948,7 +997,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(CustomFieldInstance.objects.count(), 0) self.assertEqual(len(doc.custom_fields.all()), 0) - def test_custom_field_value_select_validation(self): + def test_custom_field_value_select_validation(self) -> None: """ GIVEN: - Document & custom field exist @@ -989,7 +1038,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(CustomFieldInstance.objects.count(), 0) self.assertEqual(len(doc.custom_fields.all()), 0) - def test_custom_field_value_documentlink_validation(self): + def test_custom_field_value_documentlink_validation(self) -> None: """ GIVEN: - Document & custom field exist @@ -1039,7 +1088,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(CustomFieldInstance.objects.count(), 0) - def test_custom_field_not_null(self): + def test_custom_field_not_null(self) -> None: """ GIVEN: - Existing document @@ -1065,7 +1114,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST) - def test_symmetric_doclink_fields(self): + def test_symmetric_doclink_fields(self) -> None: """ GIVEN: - Existing document @@ -1198,7 +1247,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(doc5.custom_fields.first().value, [1]) - def test_custom_field_filters(self): + def test_custom_field_filters(self) -> None: custom_field_string = CustomField.objects.create( name="Test Custom Field String", data_type=CustomField.FieldDataType.STRING, @@ -1234,7 +1283,7 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): self.assertEqual(len(results), 1) self.assertEqual(results[0]["name"], custom_field_int.name) - def test_custom_fields_document_count(self): + def test_custom_fields_document_count(self) -> None: custom_field_string = CustomField.objects.create( name="Test Custom Field String", data_type=CustomField.FieldDataType.STRING, diff --git a/src/documents/tests/test_api_documents.py b/src/documents/tests/test_api_documents.py index 927744c37..c362f9646 100644 --- a/src/documents/tests/test_api_documents.py +++ b/src/documents/tests/test_api_documents.py @@ -50,14 +50,14 @@ from documents.tests.utils import DocumentConsumeDelayMixin class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") self.client.force_authenticate(user=self.user) cache.clear() - def testDocuments(self): + def testDocuments(self) -> None: response = self.client.get("/api/documents/").data self.assertEqual(response["count"], 0) @@ -110,7 +110,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(len(Document.objects.all()), 0) - def test_document_fields(self): + def test_document_fields(self) -> None: c = Correspondent.objects.create(name="c", pk=41) dt = DocumentType.objects.create(name="dt", pk=63) Tag.objects.create(name="t", pk=85) @@ -131,6 +131,10 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIn("content", results_full[0]) self.assertIn("id", results_full[0]) + # Content length is used internally for performance reasons. + # No need to expose this field. + self.assertNotIn("content_length", results_full[0]) + response = self.client.get("/api/documents/?fields=id", format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) results = response.data["results"] @@ -172,7 +176,36 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): results = response.data["results"] self.assertEqual(len(results[0]), 0) - def test_document_legacy_created_format(self): + def test_document_fields_api_version_8_respects_created(self) -> None: + Document.objects.create( + title="legacy", + checksum="123", + mime_type="application/pdf", + created=date(2024, 1, 15), + ) + + response = self.client.get( + "/api/documents/?fields=id", + headers={"Accept": "application/json; version=8"}, + format="json", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + results = response.data["results"] + self.assertIn("id", results[0]) + self.assertNotIn("created", results[0]) + + response = self.client.get( + "/api/documents/?fields=id,created", + headers={"Accept": "application/json; version=8"}, + format="json", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + results = response.data["results"] + self.assertIn("id", results[0]) + self.assertIn("created", results[0]) + self.assertRegex(results[0]["created"], r"^2024-01-15T00:00:00.*$") + + def test_document_legacy_created_format(self) -> None: """ GIVEN: - Existing document @@ -225,7 +258,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): doc.refresh_from_db() self.assertEqual(doc.created, date(2023, 6, 28)) - def test_document_update_legacy_created_format(self): + def test_document_update_legacy_created_format(self) -> None: """ GIVEN: - Existing document @@ -253,7 +286,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): doc.refresh_from_db() self.assertEqual(doc.created, date(2023, 2, 1)) - def test_document_update_with_created_date(self): + def test_document_update_with_created_date(self) -> None: """ GIVEN: - Existing document @@ -279,7 +312,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): doc.refresh_from_db() self.assertEqual(doc.created_date, created_date) - def test_document_actions(self): + def test_document_actions(self) -> None: _, filename = tempfile.mkstemp(dir=self.dirs.originals_dir) content = b"This is a test" @@ -314,7 +347,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.content, content_thumbnail) - def test_document_actions_with_perms(self): + def test_document_actions_with_perms(self) -> None: """ GIVEN: - Document with owner and without granted permissions @@ -371,7 +404,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) @override_settings(FILENAME_FORMAT="") - def test_download_with_archive(self): + def test_download_with_archive(self) -> None: content = b"This is a test" content_archive = b"This is the same test but archived" @@ -412,7 +445,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.content, content) - def test_document_actions_not_existing_file(self): + def test_document_actions_not_existing_file(self) -> None: doc = Document.objects.create( title="none", filename=Path("asd").name, @@ -428,7 +461,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): response = self.client.get(f"/api/documents/{doc.pk}/thumb/") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - def test_document_history_action(self): + def test_document_history_action(self) -> None: """ GIVEN: - Document @@ -459,7 +492,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): {"title": ["First title", "New title"]}, ) - def test_document_history_action_w_custom_fields(self): + def test_document_history_action_w_custom_fields(self) -> None: """ GIVEN: - Document with custom fields @@ -522,7 +555,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.data[1]["action"], "create") @override_settings(AUDIT_LOG_ENABLED=False) - def test_document_history_action_disabled(self): + def test_document_history_action_disabled(self) -> None: """ GIVEN: - Audit log is disabled @@ -547,7 +580,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): response = self.client.get(f"/api/documents/{doc.pk}/history/") self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_document_history_insufficient_perms(self): + def test_document_history_insufficient_perms(self) -> None: """ GIVEN: - Audit log is enabled @@ -585,7 +618,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): response = self.client.get(f"/api/documents/{doc2.pk}/history/") self.assertEqual(response.status_code, status.HTTP_200_OK) - def test_document_filters(self): + def test_document_filters(self) -> None: doc1 = Document.objects.create( title="none1", checksum="A", @@ -760,7 +793,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): results = response.data["results"] self.assertEqual(len(results), 3) - def test_custom_field_select_filter(self): + def test_custom_field_select_filter(self) -> None: """ GIVEN: - Documents with select custom field values @@ -795,7 +828,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(r.status_code, status.HTTP_200_OK) self.assertEqual(r.data["count"], 0) - def test_document_checksum_filter(self): + def test_document_checksum_filter(self) -> None: Document.objects.create( title="none1", checksum="A", @@ -823,7 +856,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): results = response.data["results"] self.assertEqual(len(results), 0) - def test_document_original_filename_filter(self): + def test_document_original_filename_filter(self) -> None: doc1 = Document.objects.create( title="none1", checksum="A", @@ -863,7 +896,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): [doc1.id, doc2.id, doc3.id], ) - def test_documents_title_content_filter(self): + def test_documents_title_content_filter(self) -> None: doc1 = Document.objects.create( title="title A", content="content A", @@ -912,7 +945,24 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): results = response.data["results"] self.assertEqual(len(results), 0) - def test_document_permissions_filters(self): + def test_documents_title_content_filter_strips_boundary_whitespace(self) -> None: + doc = Document.objects.create( + title="Testwort", + content="", + checksum="A", + mime_type="application/pdf", + ) + + response = self.client.get( + "/api/documents/", + {"title_content": " Testwort "}, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + results = response.data["results"] + self.assertEqual(len(results), 1) + self.assertEqual(results[0]["id"], doc.id) + + def test_document_permissions_filters(self) -> None: """ GIVEN: - Documents with owners, with and without granted permissions @@ -1016,7 +1066,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): [u1_doc1.id], ) - def test_pagination_all(self): + def test_pagination_all(self) -> None: """ GIVEN: - A set of 50 documents @@ -1041,7 +1091,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(len(response.data["all"]), 50) self.assertCountEqual(response.data["all"], [d.id for d in docs]) - def test_statistics(self): + def test_statistics(self) -> None: doc1 = Document.objects.create( title="none1", checksum="A", @@ -1091,7 +1141,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.data["document_type_count"], 1) self.assertEqual(response.data["storage_path_count"], 2) - def test_statistics_no_inbox_tag(self): + def test_statistics_no_inbox_tag(self) -> None: Document.objects.create(title="none1", checksum="A") response = self.client.get("/api/statistics/") @@ -1099,7 +1149,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.data["documents_inbox"], None) self.assertEqual(response.data["inbox_tags"], None) - def test_statistics_multiple_users(self): + def test_statistics_multiple_users(self) -> None: """ GIVEN: - Inbox tags with different owners and documents that are accessible to different users @@ -1138,7 +1188,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["documents_inbox"], 0) - def test_upload(self): + def test_upload(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1162,7 +1212,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(overrides.document_type_id) self.assertIsNone(overrides.tag_ids) - def test_create_wrong_endpoint(self): + def test_create_wrong_endpoint(self) -> None: response = self.client.post( "/api/documents/", {}, @@ -1170,7 +1220,18 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED) - def test_upload_empty_metadata(self): + def test_upload_insufficient_permissions(self) -> None: + self.client.force_authenticate(user=User.objects.create_user("testuser2")) + + with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f: + response = self.client.post( + "/api/documents/post_document/", + {"document": f}, + ) + + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + def test_upload_empty_metadata(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1201,7 +1262,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(overrides.storage_path_id) self.assertIsNone(overrides.tag_ids) - def test_upload_invalid_form(self): + def test_upload_invalid_form(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1214,7 +1275,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.consume_file_mock.assert_not_called() - def test_upload_invalid_file(self): + def test_upload_invalid_file(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1227,7 +1288,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.consume_file_mock.assert_not_called() - def test_upload_with_title(self): + def test_upload_with_title(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1248,7 +1309,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(overrides.document_type_id) self.assertIsNone(overrides.tag_ids) - def test_upload_with_correspondent(self): + def test_upload_with_correspondent(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1270,7 +1331,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(overrides.document_type_id) self.assertIsNone(overrides.tag_ids) - def test_upload_with_invalid_correspondent(self): + def test_upload_with_invalid_correspondent(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1284,7 +1345,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.consume_file_mock.assert_not_called() - def test_upload_with_document_type(self): + def test_upload_with_document_type(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1306,7 +1367,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(overrides.title) self.assertIsNone(overrides.tag_ids) - def test_upload_with_invalid_document_type(self): + def test_upload_with_invalid_document_type(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1320,7 +1381,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.consume_file_mock.assert_not_called() - def test_upload_with_storage_path(self): + def test_upload_with_storage_path(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1342,7 +1403,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(overrides.title) self.assertIsNone(overrides.tag_ids) - def test_upload_with_invalid_storage_path(self): + def test_upload_with_invalid_storage_path(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1356,7 +1417,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.consume_file_mock.assert_not_called() - def test_upload_with_tags(self): + def test_upload_with_tags(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1379,7 +1440,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(overrides.correspondent_id) self.assertIsNone(overrides.title) - def test_upload_with_invalid_tags(self): + def test_upload_with_invalid_tags(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1395,7 +1456,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.consume_file_mock.assert_not_called() - def test_upload_with_created(self): + def test_upload_with_created(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1423,7 +1484,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(overrides.created, created.date()) - def test_upload_with_asn(self): + def test_upload_with_asn(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1447,7 +1508,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(overrides.tag_ids) self.assertEqual(500, overrides.asn) - def test_upload_with_custom_fields(self): + def test_upload_with_custom_fields(self) -> None: self.consume_file_mock.return_value = celery.result.AsyncResult( id=str(uuid.uuid4()), ) @@ -1476,7 +1537,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(overrides.filename, "simple.pdf") self.assertEqual(overrides.custom_fields, {custom_field.id: None}) - def test_upload_with_custom_fields_and_workflow(self): + def test_upload_with_custom_fields_and_workflow(self) -> None: """ GIVEN: A document with a source file WHEN: Upload the document with custom fields and a workflow @@ -1538,7 +1599,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): overrides.update(new_overrides) self.assertEqual(overrides.custom_fields, {cf.id: None, cf2.id: 123}) - def test_upload_with_custom_field_values(self): + def test_upload_with_custom_field_values(self) -> None: """ GIVEN: A document with a source file WHEN: Upload the document with custom fields and values @@ -1584,7 +1645,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): {cf_string.id: "a string", cf_int.id: 123}, ) - def test_upload_with_custom_fields_errors(self): + def test_upload_with_custom_fields_errors(self) -> None: """ GIVEN: A document with a source file WHEN: Upload the document with invalid custom fields payloads @@ -1618,7 +1679,45 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.consume_file_mock.assert_not_called() - def test_upload_with_webui_source(self): + def test_patch_document_integer_custom_field_out_of_range(self) -> None: + """ + GIVEN: + - An integer custom field + - A document + WHEN: + - Patching the document with an integer value exceeding PostgreSQL's range + THEN: + - HTTP 400 is returned (validation catches the overflow) + - No custom field instance is created + """ + cf_int = CustomField.objects.create( + name="intfield", + data_type=CustomField.FieldDataType.INT, + ) + doc = Document.objects.create( + title="Doc", + checksum="123", + mime_type="application/pdf", + ) + + response = self.client.patch( + f"/api/documents/{doc.pk}/", + { + "custom_fields": [ + { + "field": cf_int.pk, + "value": 2**31, # overflow for PostgreSQL integer fields + }, + ], + }, + format="json", + ) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("custom_fields", response.data) + self.assertEqual(CustomFieldInstance.objects.count(), 0) + + def test_upload_with_webui_source(self) -> None: """ GIVEN: A document with a source file WHEN: Upload the document with 'from_webui' flag @@ -1642,7 +1741,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(input_doc.source, WorkflowTrigger.DocumentSourceChoices.WEB_UI) - def test_upload_invalid_pdf(self): + def test_upload_invalid_pdf(self) -> None: """ GIVEN: Invalid PDF named "*.pdf" that mime_type is in settings.CONSUMER_PDF_RECOVERABLE_MIME_TYPES WHEN: Upload the file @@ -1660,7 +1759,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) - def test_get_metadata(self): + def test_get_metadata(self) -> None: doc = Document.objects.create( title="test", filename="file.pdf", @@ -1698,11 +1797,11 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): response = self.client.get(f"/api/documents/{doc.pk}/metadata/") self.assertEqual(response.status_code, status.HTTP_200_OK) - def test_get_metadata_invalid_doc(self): + def test_get_metadata_invalid_doc(self) -> None: response = self.client.get("/api/documents/34576/metadata/") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - def test_get_metadata_no_archive(self): + def test_get_metadata_no_archive(self) -> None: doc = Document.objects.create( title="test", filename="file.pdf", @@ -1722,7 +1821,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(meta["archive_metadata"]) self.assertIsNone(meta["archive_media_filename"]) - def test_get_metadata_missing_files(self): + def test_get_metadata_missing_files(self) -> None: doc = Document.objects.create( title="test", filename="file.pdf", @@ -1743,7 +1842,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertIsNone(meta["archive_metadata"]) self.assertIsNone(meta["archive_size"]) - def test_get_empty_suggestions(self): + def test_get_empty_suggestions(self) -> None: doc = Document.objects.create(title="test", mime_type="application/pdf") response = self.client.get(f"/api/documents/{doc.pk}/suggestions/") @@ -1760,7 +1859,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): }, ) - def test_get_suggestions_invalid_doc(self): + def test_get_suggestions_invalid_doc(self) -> None: response = self.client.get("/api/documents/34676/suggestions/") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) @@ -1890,11 +1989,11 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): response = self.client.get(f"/api/documents/{doc.pk}/suggestions/") self.assertEqual(response.status_code, status.HTTP_200_OK) - @mock.patch("documents.parsers.parse_date_generator") + @mock.patch("documents.views.get_date_parser") @override_settings(NUMBER_OF_SUGGESTED_DATES=0) def test_get_suggestions_dates_disabled( self, - parse_date_generator, + mock_get_date_parser: mock.MagicMock, ): """ GIVEN: @@ -1911,9 +2010,10 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.client.get(f"/api/documents/{doc.pk}/suggestions/") - self.assertFalse(parse_date_generator.called) - def test_saved_views(self): + mock_get_date_parser.assert_not_called() + + def test_saved_views(self) -> None: u1 = User.objects.create_superuser("user1") u2 = User.objects.create_superuser("user2") @@ -1970,7 +2070,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): status.HTTP_404_NOT_FOUND, ) - def test_saved_view_create_update_patch(self): + def test_saved_view_create_update_patch(self) -> None: User.objects.create_user("user1") view = { @@ -2017,7 +2117,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): v1 = SavedView.objects.get(id=v1.id) self.assertEqual(v1.filter_rules.count(), 0) - def test_saved_view_display_options(self): + def test_saved_view_display_options(self) -> None: """ GIVEN: - Saved view @@ -2108,7 +2208,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): v1.refresh_from_db() self.assertEqual(v1.display_fields, None) - def test_saved_view_display_customfields(self): + def test_saved_view_display_customfields(self) -> None: """ GIVEN: - Saved view @@ -2179,7 +2279,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_saved_view_cleanup_after_custom_field_deletion(self): + def test_saved_view_cleanup_after_custom_field_deletion(self) -> None: """ GIVEN: - Saved view with custom field in display fields and as sort field @@ -2215,7 +2315,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): [str(SavedView.DisplayFields.TITLE), str(SavedView.DisplayFields.CREATED)], ) - def test_get_logs(self): + def test_get_logs(self) -> None: log_data = "test\ntest2\n" with (Path(settings.LOGGING_DIR) / "mail.log").open("w") as f: f.write(log_data) @@ -2225,7 +2325,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertCountEqual(response.data, ["mail", "paperless"]) - def test_get_logs_only_when_exist(self): + def test_get_logs_only_when_exist(self) -> None: log_data = "test\ntest2\n" with (Path(settings.LOGGING_DIR) / "paperless.log").open("w") as f: f.write(log_data) @@ -2233,16 +2333,16 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertCountEqual(response.data, ["paperless"]) - def test_get_invalid_log(self): + def test_get_invalid_log(self) -> None: response = self.client.get("/api/logs/bogus_log/") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) @override_settings(LOGGING_DIR="bogus_dir") - def test_get_nonexistent_log(self): + def test_get_nonexistent_log(self) -> None: response = self.client.get("/api/logs/paperless/") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - def test_get_log(self): + def test_get_log(self) -> None: log_data = "test\ntest2\n" with (Path(settings.LOGGING_DIR) / "paperless.log").open("w") as f: f.write(log_data) @@ -2250,7 +2350,24 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertListEqual(response.data, ["test", "test2"]) - def test_invalid_regex_other_algorithm(self): + def test_get_log_with_limit(self) -> None: + log_data = "test1\ntest2\ntest3\n" + with (Path(settings.LOGGING_DIR) / "paperless.log").open("w") as f: + f.write(log_data) + response = self.client.get("/api/logs/paperless/", {"limit": 2}) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertListEqual(response.data, ["test2", "test3"]) + + def test_get_log_with_invalid_limit(self) -> None: + log_data = "test1\ntest2\n" + with (Path(settings.LOGGING_DIR) / "paperless.log").open("w") as f: + f.write(log_data) + response = self.client.get("/api/logs/paperless/", {"limit": "abc"}) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + response = self.client.get("/api/logs/paperless/", {"limit": -5}) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_invalid_regex_other_algorithm(self) -> None: for endpoint in ["correspondents", "tags", "document_types"]: response = self.client.post( f"/api/{endpoint}/", @@ -2263,7 +2380,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_201_CREATED, endpoint) - def test_invalid_regex(self): + def test_invalid_regex(self) -> None: for endpoint in ["correspondents", "tags", "document_types"]: response = self.client.post( f"/api/{endpoint}/", @@ -2280,7 +2397,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): endpoint, ) - def test_valid_regex(self): + def test_valid_regex(self) -> None: for endpoint in ["correspondents", "tags", "document_types"]: response = self.client.post( f"/api/{endpoint}/", @@ -2293,7 +2410,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_201_CREATED, endpoint) - def test_regex_no_algorithm(self): + def test_regex_no_algorithm(self) -> None: for endpoint in ["correspondents", "tags", "document_types"]: response = self.client.post( f"/api/{endpoint}/", @@ -2302,7 +2419,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_201_CREATED, endpoint) - def test_tag_color_default(self): + def test_tag_color_default(self) -> None: response = self.client.post("/api/tags/", {"name": "tag"}, format="json") self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(Tag.objects.get(id=response.data["id"]).color, "#a6cee3") @@ -2315,7 +2432,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): 1, ) - def test_tag_color(self): + def test_tag_color(self) -> None: response = self.client.post( "/api/tags/", data={"name": "tag", "colour": 3}, @@ -2333,7 +2450,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): 3, ) - def test_tag_color_invalid(self): + def test_tag_color_invalid(self) -> None: response = self.client.post( "/api/tags/", data={"name": "tag", "colour": 34}, @@ -2342,7 +2459,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_tag_color_custom(self): + def test_tag_color_custom(self) -> None: tag = Tag.objects.create(name="test", color="#abcdef") self.assertEqual( self.client.get( @@ -2353,7 +2470,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): 1, ) - def test_get_existing_notes(self): + def test_get_existing_notes(self) -> None: """ GIVEN: - A document with a single note @@ -2415,7 +2532,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): }, ) - def test_docnote_serializer_v7(self): + def test_docnote_serializer_v7(self) -> None: doc = Document.objects.create( title="test", mime_type="application/pdf", @@ -2435,7 +2552,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.user.id, ) - def test_create_note(self): + def test_create_note(self) -> None: """ GIVEN: - Existing document @@ -2479,7 +2596,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): # modified was updated to today self.assertEqual(doc.modified.day, timezone.now().day) - def test_notes_permissions_aware(self): + def test_notes_permissions_aware(self) -> None: """ GIVEN: - Existing document owned by user2 but with granted view perms for user1 @@ -2535,7 +2652,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.content, b"Insufficient permissions to delete notes") self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - def test_delete_note(self): + def test_delete_note(self) -> None: """ GIVEN: - Existing document, existing note @@ -2571,7 +2688,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): # modified was updated to today self.assertEqual(doc.modified.day, timezone.now().day) - def test_get_notes_no_doc(self): + def test_get_notes_no_doc(self) -> None: """ GIVEN: - A request to get notes from a non-existent document @@ -2586,7 +2703,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - def test_tag_unique_name_and_owner(self): + def test_tag_unique_name_and_owner(self) -> None: """ GIVEN: - Multiple users @@ -2646,7 +2763,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_tag_unique_name_and_owner_enforced_on_update(self): + def test_tag_unique_name_and_owner_enforced_on_update(self) -> None: """ GIVEN: - Multiple users @@ -2680,7 +2797,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_create_share_links(self): + def test_create_share_links(self) -> None: """ GIVEN: - Existing document @@ -2752,7 +2869,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - def test_share_links_permissions_aware(self): + def test_share_links_permissions_aware(self) -> None: """ GIVEN: - Existing document owned by user2 but with granted view perms for user1 @@ -2793,7 +2910,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(resp.status_code, status.HTTP_200_OK) - def test_next_asn(self): + def test_next_asn(self) -> None: """ GIVEN: - Existing documents with ASNs, highest owned by user2 @@ -2837,7 +2954,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(resp.content, b"1000") - def test_next_asn_no_documents_with_asn(self): + def test_next_asn_no_documents_with_asn(self) -> None: """ GIVEN: - Existing document, but with no ASN assugned @@ -2866,7 +2983,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(resp.content, b"1") - def test_asn_not_unique_with_trashed_doc(self): + def test_asn_not_unique_with_trashed_doc(self) -> None: """ GIVEN: - Existing document with ASN that is trashed @@ -2910,7 +3027,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): }, ) - def test_remove_inbox_tags(self): + def test_remove_inbox_tags(self) -> None: """ GIVEN: - Existing document with or without inbox tags @@ -2980,7 +3097,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): EMAIL_ENABLED=True, EMAIL_BACKEND="django.core.mail.backends.locmem.EmailBackend", ) - def test_email_document(self): + def test_email_document(self) -> None: """ GIVEN: - Existing document @@ -3022,7 +3139,8 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(len(mail.outbox), 1) - self.assertEqual(mail.outbox[0].attachments[0][0], "archive.pdf") + expected_filename = f"{doc.created} test.pdf" + self.assertEqual(mail.outbox[0].attachments[0][0], expected_filename) self.client.post( f"/api/documents/{doc2.pk}/email/", @@ -3035,10 +3153,11 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): ) self.assertEqual(len(mail.outbox), 2) - self.assertEqual(mail.outbox[1].attachments[0][0], "test2.pdf") + expected_filename2 = f"{doc2.created} test2.pdf" + self.assertEqual(mail.outbox[1].attachments[0][0], expected_filename2) @mock.patch("django.core.mail.message.EmailMessage.send", side_effect=Exception) - def test_email_document_errors(self, mocked_send): + def test_email_document_errors(self, mocked_send) -> None: """ GIVEN: - Existing document @@ -3093,7 +3212,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): "message": "hello", }, ) - self.assertEqual(resp.status_code, status.HTTP_404_NOT_FOUND) + self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST) resp = self.client.post( f"/api/documents/{doc.pk}/email/", @@ -3124,7 +3243,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): self.assertEqual(resp.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR) @mock.patch("django_softdelete.models.SoftDeleteModel.delete") - def test_warn_on_delete_with_old_uuid_field(self, mocked_delete): + def test_warn_on_delete_with_old_uuid_field(self, mocked_delete) -> None: """ GIVEN: - Existing document in a (mocked) MariaDB database with an old UUID field @@ -3154,7 +3273,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): class TestDocumentApiV2(DirectoriesMixin, APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") @@ -3162,7 +3281,7 @@ class TestDocumentApiV2(DirectoriesMixin, APITestCase): self.client.force_authenticate(user=self.user) self.client.defaults["HTTP_ACCEPT"] = "application/json; version=2" - def test_tag_validate_color(self): + def test_tag_validate_color(self) -> None: self.assertEqual( self.client.post( "/api/tags/", @@ -3205,7 +3324,7 @@ class TestDocumentApiV2(DirectoriesMixin, APITestCase): status.HTTP_400_BAD_REQUEST, ) - def test_tag_text_color(self): + def test_tag_text_color(self) -> None: t = Tag.objects.create(name="tag1", color="#000000") self.assertEqual( self.client.get(f"/api/tags/{t.id}/", format="json").data["text_color"], @@ -3235,7 +3354,7 @@ class TestDocumentApiV2(DirectoriesMixin, APITestCase): class TestDocumentApiCustomFieldsSorting(DirectoriesMixin, APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") @@ -3259,7 +3378,7 @@ class TestDocumentApiCustomFieldsSorting(DirectoriesMixin, APITestCase): cache.clear() - def test_document_custom_fields_sorting(self): + def test_document_custom_fields_sorting(self) -> None: """ GIVEN: - Documents with custom fields @@ -3379,7 +3498,7 @@ class TestDocumentApiCustomFieldsSorting(DirectoriesMixin, APITestCase): [self.doc1.id, self.doc3.id, self.doc2.id], ) - def test_document_custom_fields_sorting_invalid(self): + def test_document_custom_fields_sorting_invalid(self) -> None: """ GIVEN: - Documents with custom fields @@ -3394,7 +3513,7 @@ class TestDocumentApiCustomFieldsSorting(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - def test_document_custom_fields_sorting_invalid_data_type(self): + def test_document_custom_fields_sorting_invalid_data_type(self) -> None: """ GIVEN: - Documents with custom fields diff --git a/src/documents/tests/test_api_email.py b/src/documents/tests/test_api_email.py new file mode 100644 index 000000000..f6f30a226 --- /dev/null +++ b/src/documents/tests/test_api_email.py @@ -0,0 +1,439 @@ +import json +import shutil +from unittest import mock + +from django.contrib.auth.models import Permission +from django.contrib.auth.models import User +from django.core import mail +from django.test import override_settings +from rest_framework import status +from rest_framework.test import APITestCase + +from documents.models import Document +from documents.tests.utils import DirectoriesMixin +from documents.tests.utils import SampleDirMixin + + +class TestEmail(DirectoriesMixin, SampleDirMixin, APITestCase): + ENDPOINT = "/api/documents/email/" + + def setUp(self) -> None: + super().setUp() + + self.user = User.objects.create_superuser(username="temp_admin") + self.client.force_authenticate(user=self.user) + + self.doc1 = Document.objects.create( + title="test1", + mime_type="application/pdf", + content="this is document 1", + checksum="1", + filename="test1.pdf", + archive_checksum="A1", + archive_filename="archive1.pdf", + ) + self.doc2 = Document.objects.create( + title="test2", + mime_type="application/pdf", + content="this is document 2", + checksum="2", + filename="test2.pdf", + ) + + # Copy sample files to document paths (using different files to distinguish versions) + shutil.copy( + self.SAMPLE_DIR / "documents" / "originals" / "0000001.pdf", + self.doc1.archive_path, + ) + shutil.copy( + self.SAMPLE_DIR / "documents" / "originals" / "0000002.pdf", + self.doc1.source_path, + ) + shutil.copy( + self.SAMPLE_DIR / "documents" / "originals" / "0000003.pdf", + self.doc2.source_path, + ) + + @override_settings( + EMAIL_ENABLED=True, + EMAIL_BACKEND="django.core.mail.backends.locmem.EmailBackend", + ) + def test_email_success(self) -> None: + """ + GIVEN: + - Multiple existing documents (doc1 with archive, doc2 without) + WHEN: + - API request is made to bulk email documents + THEN: + - Email is sent with all documents attached + - Archive version used by default for doc1 + - Original version used for doc2 (no archive available) + """ + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk, self.doc2.pk], + "addresses": "hello@paperless-ngx.com,test@example.com", + "subject": "Bulk email test", + "message": "Here are your documents", + }, + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["message"], "Email sent") + self.assertEqual(len(mail.outbox), 1) + + email = mail.outbox[0] + self.assertEqual(email.to, ["hello@paperless-ngx.com", "test@example.com"]) + self.assertEqual(email.subject, "Bulk email test") + self.assertEqual(email.body, "Here are your documents") + self.assertEqual(len(email.attachments), 2) + + attachment_names = [att[0] for att in email.attachments] + self.assertEqual(len(attachment_names), 2) + self.assertIn(f"{self.doc1!s}.pdf", attachment_names) + self.assertIn(f"{self.doc2!s}.pdf", attachment_names) + + doc1_attachment = next( + att for att in email.attachments if att[0] == f"{self.doc1!s}.pdf" + ) + archive_size = self.doc1.archive_path.stat().st_size + self.assertEqual(len(doc1_attachment[1]), archive_size) + + doc2_attachment = next( + att for att in email.attachments if att[0] == f"{self.doc2!s}.pdf" + ) + original_size = self.doc2.source_path.stat().st_size + self.assertEqual(len(doc2_attachment[1]), original_size) + + @override_settings( + EMAIL_ENABLED=True, + EMAIL_BACKEND="django.core.mail.backends.locmem.EmailBackend", + ) + def test_email_use_original_version(self) -> None: + """ + GIVEN: + - Documents with archive versions + WHEN: + - API request is made to bulk email with use_archive_version=False + THEN: + - Original files are attached instead of archive versions + """ + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk], + "addresses": "test@example.com", + "subject": "Test", + "message": "Test message", + "use_archive_version": False, + }, + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(mail.outbox), 1) + + attachment = mail.outbox[0].attachments[0] + self.assertEqual(attachment[0], f"{self.doc1!s}.pdf") + + original_size = self.doc1.source_path.stat().st_size + self.assertEqual(len(attachment[1]), original_size) + + def test_email_missing_required_fields(self) -> None: + """ + GIVEN: + - Request with missing required fields + WHEN: + - API request is made to bulk email endpoint + THEN: + - Bad request response is returned + """ + # Missing addresses + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk], + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + # Missing subject + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk], + "addresses": "test@example.com", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + # Missing message + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk], + "addresses": "test@example.com", + "subject": "Test", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + # Missing documents + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "addresses": "test@example.com", + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_email_empty_document_list(self) -> None: + """ + GIVEN: + - Request with empty document list + WHEN: + - API request is made to bulk email endpoint + THEN: + - Bad request response is returned + """ + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [], + "addresses": "test@example.com", + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_email_invalid_document_id(self) -> None: + """ + GIVEN: + - Request with non-existent document ID + WHEN: + - API request is made to bulk email endpoint + THEN: + - Bad request response is returned + """ + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [999], + "addresses": "test@example.com", + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_email_invalid_email_address(self) -> None: + """ + GIVEN: + - Request with invalid email address + WHEN: + - API request is made to bulk email endpoint + THEN: + - Bad request response is returned + """ + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk], + "addresses": "invalid-email", + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + # Test multiple addresses with one invalid + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk], + "addresses": "valid@example.com,invalid-email", + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_email_insufficient_permissions(self) -> None: + """ + GIVEN: + - User without permissions to view document + WHEN: + - API request is made to bulk email documents + THEN: + - Forbidden response is returned + """ + user1 = User.objects.create_user(username="test1") + user1.user_permissions.add(*Permission.objects.filter(codename="view_document")) + + doc_owned = Document.objects.create( + title="owned_doc", + mime_type="application/pdf", + checksum="owned", + owner=self.user, + ) + + self.client.force_authenticate(user1) + + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk, doc_owned.pk], + "addresses": "test@example.com", + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + def test_email_only_requires_view_permission(self) -> None: + """ + GIVEN: + - User having only view documents permission + WHEN: + - API request is made to bulk email documents + THEN: + - Request succeeds + """ + user1 = User.objects.create_user(username="test1") + user1.user_permissions.add(*Permission.objects.filter(codename="view_document")) + + self.client.force_authenticate(user1) + + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk], + "addresses": "test@example.com", + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + @override_settings( + EMAIL_ENABLED=True, + EMAIL_BACKEND="django.core.mail.backends.locmem.EmailBackend", + ) + def test_email_duplicate_filenames(self) -> None: + """ + GIVEN: + - Multiple documents with the same title + WHEN: + - API request is made to bulk email documents + THEN: + - Filenames are made unique with counters + """ + doc3 = Document.objects.create( + title="test1", + mime_type="application/pdf", + content="this is document 3", + checksum="3", + filename="test3.pdf", + ) + shutil.copy(self.SAMPLE_DIR / "simple.pdf", doc3.source_path) + + doc4 = Document.objects.create( + title="test1", + mime_type="application/pdf", + content="this is document 4", + checksum="4", + filename="test4.pdf", + ) + shutil.copy(self.SAMPLE_DIR / "simple.pdf", doc4.source_path) + + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk, doc3.pk, doc4.pk], + "addresses": "test@example.com", + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(mail.outbox), 1) + + attachment_names = [att[0] for att in mail.outbox[0].attachments] + self.assertEqual(len(attachment_names), 3) + self.assertIn(f"{self.doc1!s}.pdf", attachment_names) + self.assertIn(f"{doc3!s}_01.pdf", attachment_names) + self.assertIn(f"{doc3!s}_02.pdf", attachment_names) + + @mock.patch( + "django.core.mail.message.EmailMessage.send", + side_effect=Exception("Email error"), + ) + def test_email_send_error(self, mocked_send) -> None: + """ + GIVEN: + - Existing documents + WHEN: + - API request is made to bulk email and error occurs during email send + THEN: + - Server error response is returned + """ + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "documents": [self.doc1.pk], + "addresses": "test@example.com", + "subject": "Test", + "message": "Test message", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR) + self.assertIn("Error emailing documents", response.content.decode()) diff --git a/src/documents/tests/test_api_filter_by_custom_fields.py b/src/documents/tests/test_api_filter_by_custom_fields.py index 70d43dfde..4fd755d58 100644 --- a/src/documents/tests/test_api_filter_by_custom_fields.py +++ b/src/documents/tests/test_api_filter_by_custom_fields.py @@ -29,7 +29,7 @@ class DocumentWrapper: class TestCustomFieldsSearch(DirectoriesMixin, APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") @@ -167,7 +167,7 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase): reference_predicate: Callable[[DocumentWrapper], bool], *, match_nothing_ok=False, - ): + ) -> None: """ Checks the results of the query against a callable reference predicate. """ @@ -208,7 +208,7 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase): ] self.assertEqual(reference_document_ids, response_document_ids) - def _assert_validation_error(self, query: str, path: list, keyword: str): + def _assert_validation_error(self, query: str, path: list, keyword: str) -> None: """ Asserts that the query raises a validation error. Checks the message to make sure it points to the right place. @@ -240,7 +240,7 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase): # ==========================================================# # Sanity checks # # ==========================================================# - def test_name_value_association(self): + def test_name_value_association(self) -> None: """ GIVEN: - A document with `{"string_field": "https://docs.paperless-ngx.com/", @@ -252,11 +252,13 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase): """ self._assert_query_match_predicate( ["url_field", "exact", "https://docs.paperless-ngx.com/"], - lambda document: "url_field" in document - and document["url_field"] == "https://docs.paperless-ngx.com/", + lambda document: ( + "url_field" in document + and document["url_field"] == "https://docs.paperless-ngx.com/" + ), ) - def test_filter_by_multiple_fields(self): + def test_filter_by_multiple_fields(self) -> None: """ GIVEN: - A document with `{"string_field": "https://docs.paperless-ngx.com/", @@ -274,220 +276,259 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase): # ==========================================================# # Basic expressions supported by all custom field types # # ==========================================================# - def test_exact(self): + def test_exact(self) -> None: self._assert_query_match_predicate( ["string_field", "exact", "paperless"], - lambda document: "string_field" in document - and document["string_field"] == "paperless", + lambda document: ( + "string_field" in document and document["string_field"] == "paperless" + ), ) - def test_in(self): + def test_in(self) -> None: self._assert_query_match_predicate( ["string_field", "in", ["paperless", "Paperless"]], - lambda document: "string_field" in document - and document["string_field"] in ("paperless", "Paperless"), + lambda document: ( + "string_field" in document + and document["string_field"] in ("paperless", "Paperless") + ), ) - def test_isnull(self): + def test_isnull(self) -> None: self._assert_query_match_predicate( ["string_field", "isnull", True], - lambda document: "string_field" in document - and document["string_field"] is None, + lambda document: ( + "string_field" in document and document["string_field"] is None + ), ) - def test_exists(self): + def test_exists(self) -> None: self._assert_query_match_predicate( ["string_field", "exists", True], lambda document: "string_field" in document, ) - def test_exists_false(self): + def test_exists_false(self) -> None: self._assert_query_match_predicate( ["string_field", "exists", False], lambda document: "string_field" not in document, ) - def test_select(self): + def test_select(self) -> None: # For select fields, you can either specify the id of the option # or the name of the option. They function exactly the same. self._assert_query_match_predicate( ["select_field", "exact", "def-456"], - lambda document: "select_field" in document - and document["select_field"] == "def-456", + lambda document: ( + "select_field" in document and document["select_field"] == "def-456" + ), ) # This is the same as: self._assert_query_match_predicate( ["select_field", "exact", "B"], - lambda document: "select_field" in document - and document["select_field"] == "def-456", + lambda document: ( + "select_field" in document and document["select_field"] == "def-456" + ), ) # ==========================================================# # Expressions for string, URL, and monetary fields # # ==========================================================# - def test_icontains(self): + def test_icontains(self) -> None: self._assert_query_match_predicate( ["string_field", "icontains", "aper"], - lambda document: "string_field" in document - and document["string_field"] is not None - and "aper" in document["string_field"].lower(), + lambda document: ( + "string_field" in document + and document["string_field"] is not None + and "aper" in document["string_field"].lower() + ), ) - def test_istartswith(self): + def test_istartswith(self) -> None: self._assert_query_match_predicate( ["string_field", "istartswith", "paper"], - lambda document: "string_field" in document - and document["string_field"] is not None - and document["string_field"].lower().startswith("paper"), + lambda document: ( + "string_field" in document + and document["string_field"] is not None + and document["string_field"].lower().startswith("paper") + ), ) - def test_iendswith(self): + def test_iendswith(self) -> None: self._assert_query_match_predicate( ["string_field", "iendswith", "less"], - lambda document: "string_field" in document - and document["string_field"] is not None - and document["string_field"].lower().endswith("less"), + lambda document: ( + "string_field" in document + and document["string_field"] is not None + and document["string_field"].lower().endswith("less") + ), ) - def test_url_field_istartswith(self): + def test_url_field_istartswith(self) -> None: # URL fields supports all of the expressions above. # Just showing one of them here. self._assert_query_match_predicate( ["url_field", "istartswith", "http://"], - lambda document: "url_field" in document - and document["url_field"] is not None - and document["url_field"].startswith("http://"), + lambda document: ( + "url_field" in document + and document["url_field"] is not None + and document["url_field"].startswith("http://") + ), ) # ==========================================================# # Arithmetic comparisons # # ==========================================================# - def test_gt(self): + def test_gt(self) -> None: self._assert_query_match_predicate( ["date_field", "gt", date(2024, 8, 22).isoformat()], - lambda document: "date_field" in document - and document["date_field"] is not None - and document["date_field"] > date(2024, 8, 22), + lambda document: ( + "date_field" in document + and document["date_field"] is not None + and document["date_field"] > date(2024, 8, 22) + ), ) - def test_gte(self): + def test_gte(self) -> None: self._assert_query_match_predicate( ["date_field", "gte", date(2024, 8, 22).isoformat()], - lambda document: "date_field" in document - and document["date_field"] is not None - and document["date_field"] >= date(2024, 8, 22), + lambda document: ( + "date_field" in document + and document["date_field"] is not None + and document["date_field"] >= date(2024, 8, 22) + ), ) - def test_lt(self): + def test_lt(self) -> None: self._assert_query_match_predicate( ["integer_field", "lt", 0], - lambda document: "integer_field" in document - and document["integer_field"] is not None - and document["integer_field"] < 0, + lambda document: ( + "integer_field" in document + and document["integer_field"] is not None + and document["integer_field"] < 0 + ), ) - def test_lte(self): + def test_lte(self) -> None: self._assert_query_match_predicate( ["integer_field", "lte", 0], - lambda document: "integer_field" in document - and document["integer_field"] is not None - and document["integer_field"] <= 0, + lambda document: ( + "integer_field" in document + and document["integer_field"] is not None + and document["integer_field"] <= 0 + ), ) - def test_range(self): + def test_range(self) -> None: self._assert_query_match_predicate( ["float_field", "range", [-0.05, 0.05]], - lambda document: "float_field" in document - and document["float_field"] is not None - and -0.05 <= document["float_field"] <= 0.05, + lambda document: ( + "float_field" in document + and document["float_field"] is not None + and -0.05 <= document["float_field"] <= 0.05 + ), ) - def test_date_modifier(self): + def test_date_modifier(self) -> None: # For date fields you can optionally prefix the operator # with the part of the date you are comparing with. self._assert_query_match_predicate( ["date_field", "year__gte", 2024], - lambda document: "date_field" in document - and document["date_field"] is not None - and document["date_field"].year >= 2024, + lambda document: ( + "date_field" in document + and document["date_field"] is not None + and document["date_field"].year >= 2024 + ), ) - def test_gt_monetary(self): + def test_gt_monetary(self) -> None: self._assert_query_match_predicate( ["monetary_field", "gt", "99"], - lambda document: "monetary_field" in document - and document["monetary_field"] is not None - and ( - document["monetary_field"] == "USD100.00" # With currency symbol - or document["monetary_field"] == "101.00" # No currency symbol + lambda document: ( + "monetary_field" in document + and document["monetary_field"] is not None + and ( + document["monetary_field"] == "USD100.00" # With currency symbol + or document["monetary_field"] == "101.00" # No currency symbol + ) ), ) # ==========================================================# # Subset check (document link field only) # # ==========================================================# - def test_document_link_contains(self): + def test_document_link_contains(self) -> None: # Document link field "contains" performs a subset check. self._assert_query_match_predicate( ["documentlink_field", "contains", [1, 2]], - lambda document: "documentlink_field" in document - and document["documentlink_field"] is not None - and set(document["documentlink_field"]) >= {1, 2}, + lambda document: ( + "documentlink_field" in document + and document["documentlink_field"] is not None + and set(document["documentlink_field"]) >= {1, 2} + ), ) # The order of IDs don't matter - this is the same as above. self._assert_query_match_predicate( ["documentlink_field", "contains", [2, 1]], - lambda document: "documentlink_field" in document - and document["documentlink_field"] is not None - and set(document["documentlink_field"]) >= {1, 2}, + lambda document: ( + "documentlink_field" in document + and document["documentlink_field"] is not None + and set(document["documentlink_field"]) >= {1, 2} + ), ) - def test_document_link_contains_empty_set(self): + def test_document_link_contains_empty_set(self) -> None: # An empty set is a subset of any set. self._assert_query_match_predicate( ["documentlink_field", "contains", []], - lambda document: "documentlink_field" in document - and document["documentlink_field"] is not None, + lambda document: ( + "documentlink_field" in document + and document["documentlink_field"] is not None + ), ) - def test_document_link_contains_no_reverse_link(self): + def test_document_link_contains_no_reverse_link(self) -> None: # An edge case is that the document in the value list # doesn't have a document link field and thus has no reverse link. self._assert_query_match_predicate( ["documentlink_field", "contains", [self.documents[6].id]], - lambda document: "documentlink_field" in document - and document["documentlink_field"] is not None - and set(document["documentlink_field"]) >= {self.documents[6].id}, + lambda document: ( + "documentlink_field" in document + and document["documentlink_field"] is not None + and set(document["documentlink_field"]) >= {self.documents[6].id} + ), match_nothing_ok=True, ) # ==========================================================# # Logical expressions # # ==========================================================# - def test_logical_and(self): + def test_logical_and(self) -> None: self._assert_query_match_predicate( [ "AND", [["date_field", "year__exact", 2024], ["date_field", "month__lt", 9]], ], - lambda document: "date_field" in document - and document["date_field"] is not None - and document["date_field"].year == 2024 - and document["date_field"].month < 9, + lambda document: ( + "date_field" in document + and document["date_field"] is not None + and document["date_field"].year == 2024 + and document["date_field"].month < 9 + ), ) - def test_logical_or(self): + def test_logical_or(self) -> None: # This is also the recommend way to check for "empty" text, URL, and monetary fields. self._assert_query_match_predicate( [ "OR", [["string_field", "exact", ""], ["string_field", "isnull", True]], ], - lambda document: "string_field" in document - and not bool(document["string_field"]), + lambda document: ( + "string_field" in document and not bool(document["string_field"]) + ), ) - def test_logical_not(self): + def test_logical_not(self) -> None: # This means `NOT ((document has string_field) AND (string_field iexact "paperless"))`, # not `(document has string_field) AND (NOT (string_field iexact "paperless"))`! self._assert_query_match_predicate( @@ -495,8 +536,11 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase): "NOT", ["string_field", "exact", "paperless"], ], - lambda document: not ( - "string_field" in document and document["string_field"] == "paperless" + lambda document: ( + not ( + "string_field" in document + and document["string_field"] == "paperless" + ) ), ) @@ -504,63 +548,63 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase): # Tests for invalid queries # # ==========================================================# - def test_invalid_json(self): + def test_invalid_json(self) -> None: self._assert_validation_error( "not valid json", ["custom_field_query"], "must be valid JSON", ) - def test_invalid_expression(self): + def test_invalid_expression(self) -> None: self._assert_validation_error( json.dumps("valid json but not valid expr"), ["custom_field_query"], "Invalid custom field query expression", ) - def test_invalid_custom_field_name(self): + def test_invalid_custom_field_name(self) -> None: self._assert_validation_error( json.dumps(["invalid name", "iexact", "foo"]), ["custom_field_query", "0"], "is not a valid custom field", ) - def test_invalid_operator(self): + def test_invalid_operator(self) -> None: self._assert_validation_error( json.dumps(["integer_field", "iexact", "foo"]), ["custom_field_query", "1"], "does not support query expr", ) - def test_invalid_value(self): + def test_invalid_value(self) -> None: self._assert_validation_error( json.dumps(["select_field", "exact", []]), ["custom_field_query", "2"], "string", ) - def test_invalid_logical_operator(self): + def test_invalid_logical_operator(self) -> None: self._assert_validation_error( json.dumps(["invalid op", ["integer_field", "gt", 0]]), ["custom_field_query", "0"], "Invalid logical operator", ) - def test_invalid_expr_list(self): + def test_invalid_expr_list(self) -> None: self._assert_validation_error( json.dumps(["AND", "not a list"]), ["custom_field_query", "1"], "Invalid expression list", ) - def test_invalid_operator_prefix(self): + def test_invalid_operator_prefix(self) -> None: self._assert_validation_error( json.dumps(["integer_field", "foo__gt", 0]), ["custom_field_query", "1"], "does not support query expr", ) - def test_query_too_deep(self): + def test_query_too_deep(self) -> None: query = ["string_field", "exact", "paperless"] for _ in range(10): query = ["NOT", query] @@ -570,7 +614,7 @@ class TestCustomFieldsSearch(DirectoriesMixin, APITestCase): "Maximum nesting depth exceeded", ) - def test_query_too_many_atoms(self): + def test_query_too_many_atoms(self) -> None: atom = ["string_field", "exact", "paperless"] query = ["AND", [atom for _ in range(21)]] self._assert_validation_error( diff --git a/src/documents/tests/test_api_objects.py b/src/documents/tests/test_api_objects.py index bba9031db..867c10a17 100644 --- a/src/documents/tests/test_api_objects.py +++ b/src/documents/tests/test_api_objects.py @@ -4,6 +4,7 @@ from unittest import mock from django.contrib.auth.models import Permission from django.contrib.auth.models import User +from django.test import override_settings from rest_framework import status from rest_framework.test import APITestCase @@ -33,7 +34,7 @@ class TestApiObjects(DirectoriesMixin, APITestCase): self.sp1 = StoragePath.objects.create(name="sp1", path="Something/{title}") self.sp2 = StoragePath.objects.create(name="sp2", path="Something2/{title}") - def test_object_filters(self): + def test_object_filters(self) -> None: response = self.client.get( f"/api/tags/?id={self.tag2.id}", ) @@ -90,7 +91,7 @@ class TestApiObjects(DirectoriesMixin, APITestCase): results = response.data["results"] self.assertEqual(len(results), 2) - def test_correspondent_last_correspondence(self): + def test_correspondent_last_correspondence(self) -> None: """ GIVEN: - Correspondent with documents @@ -153,7 +154,7 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase): self.sp1 = StoragePath.objects.create(name="sp1", path="Something/{checksum}") - def test_api_get_storage_path(self): + def test_api_get_storage_path(self) -> None: """ GIVEN: - API request to get all storage paths @@ -171,7 +172,7 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase): self.assertEqual(resp_storage_path["id"], self.sp1.id) self.assertEqual(resp_storage_path["path"], self.sp1.path) - def test_api_create_storage_path(self): + def test_api_create_storage_path(self) -> None: """ GIVEN: - API request to create a storage paths @@ -194,7 +195,7 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(StoragePath.objects.count(), 2) - def test_api_create_invalid_storage_path(self): + def test_api_create_invalid_storage_path(self) -> None: """ GIVEN: - API request to create a storage paths @@ -218,7 +219,31 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(StoragePath.objects.count(), 1) - def test_api_storage_path_placeholders(self): + def test_api_create_storage_path_rejects_traversal(self) -> None: + """ + GIVEN: + - API request to create a storage paths + - Storage path attempts directory traversal + WHEN: + - API is called + THEN: + - Correct HTTP 400 response + - No storage path is created + """ + response = self.client.post( + self.ENDPOINT, + json.dumps( + { + "name": "Traversal path", + "path": "../../../../../tmp/proof", + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(StoragePath.objects.count(), 1) + + def test_api_storage_path_placeholders(self) -> None: """ GIVEN: - API request to create a storage path with placeholders @@ -248,7 +273,7 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase): self.assertEqual(StoragePath.objects.count(), 2) @mock.patch("documents.bulk_edit.bulk_update_documents.delay") - def test_api_update_storage_path(self, bulk_update_mock): + def test_api_update_storage_path(self, bulk_update_mock) -> None: """ GIVEN: - API request to get all storage paths @@ -277,7 +302,7 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase): self.assertCountEqual([document.pk], args[0]) @mock.patch("documents.bulk_edit.bulk_update_documents.delay") - def test_api_delete_storage_path(self, bulk_update_mock): + def test_api_delete_storage_path(self, bulk_update_mock) -> None: """ GIVEN: - API request to delete a storage @@ -305,7 +330,7 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase): # only called once bulk_update_mock.assert_called_once_with([document.pk]) - def test_test_storage_path(self): + def test_test_storage_path(self) -> None: """ GIVEN: - API request to test a storage path @@ -334,10 +359,49 @@ class TestApiStoragePaths(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data, "path/Something") + def test_test_storage_path_respects_none_placeholder_setting(self) -> None: + """ + GIVEN: + - A storage path template referencing an empty field + WHEN: + - Testing the template before and after enabling remove-none + THEN: + - The preview shows "none" by default and drops the placeholder when configured + """ + document = Document.objects.create( + mime_type="application/pdf", + storage_path=self.sp1, + title="Something", + checksum="123", + ) + payload = json.dumps( + { + "document": document.id, + "path": "folder/{{ correspondent }}/{{ title }}", + }, + ) + + response = self.client.post( + f"{self.ENDPOINT}test/", + payload, + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data, "folder/none/Something") + + with override_settings(FILENAME_FORMAT_REMOVE_NONE=True): + response = self.client.post( + f"{self.ENDPOINT}test/", + payload, + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data, "folder/Something") + class TestBulkEditObjects(APITestCase): # See test_api_permissions.py for bulk tests on permissions - def setUp(self): + def setUp(self) -> None: super().setUp() self.temp_admin = User.objects.create_superuser(username="temp_admin") @@ -352,7 +416,7 @@ class TestBulkEditObjects(APITestCase): self.user2 = User.objects.create(username="user2") self.user3 = User.objects.create(username="user3") - def test_bulk_objects_delete(self): + def test_bulk_objects_delete(self) -> None: """ GIVEN: - Existing objects @@ -421,7 +485,7 @@ class TestBulkEditObjects(APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(StoragePath.objects.count(), 0) - def test_bulk_edit_object_permissions_insufficient_global_perms(self): + def test_bulk_edit_object_permissions_insufficient_global_perms(self) -> None: """ GIVEN: - Existing objects, user does not have global delete permissions @@ -447,7 +511,7 @@ class TestBulkEditObjects(APITestCase): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.content, b"Insufficient permissions") - def test_bulk_edit_object_permissions_sufficient_global_perms(self): + def test_bulk_edit_object_permissions_sufficient_global_perms(self) -> None: """ GIVEN: - Existing objects, user does have global delete permissions @@ -476,7 +540,7 @@ class TestBulkEditObjects(APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) - def test_bulk_edit_object_permissions_insufficient_object_perms(self): + def test_bulk_edit_object_permissions_insufficient_object_perms(self) -> None: """ GIVEN: - Objects owned by user other than logged in user diff --git a/src/documents/tests/test_api_permissions.py b/src/documents/tests/test_api_permissions.py index 8ffce1f95..ada93033b 100644 --- a/src/documents/tests/test_api_permissions.py +++ b/src/documents/tests/test_api_permissions.py @@ -23,7 +23,7 @@ from documents.tests.utils import DirectoriesMixin class TestApiAuth(DirectoriesMixin, APITestCase): - def test_auth_required(self): + def test_auth_required(self) -> None: d = Document.objects.create(title="Test") self.assertEqual( @@ -87,19 +87,19 @@ class TestApiAuth(DirectoriesMixin, APITestCase): status.HTTP_401_UNAUTHORIZED, ) - def test_api_version_no_auth(self): + def test_api_version_no_auth(self) -> None: response = self.client.get("/api/documents/") self.assertNotIn("X-Api-Version", response) self.assertNotIn("X-Version", response) - def test_api_version_with_auth(self): + def test_api_version_with_auth(self) -> None: user = User.objects.create_superuser(username="test") self.client.force_authenticate(user) response = self.client.get("/api/documents/") self.assertIn("X-Api-Version", response) self.assertIn("X-Version", response) - def test_api_insufficient_permissions(self): + def test_api_insufficient_permissions(self) -> None: user = User.objects.create_user(username="test") self.client.force_authenticate(user) @@ -132,7 +132,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): status.HTTP_403_FORBIDDEN, ) - def test_api_sufficient_permissions(self): + def test_api_sufficient_permissions(self) -> None: user = User.objects.create_user(username="test") user.user_permissions.add(*Permission.objects.all()) user.is_staff = True @@ -161,7 +161,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): status.HTTP_200_OK, ) - def test_api_get_object_permissions(self): + def test_api_get_object_permissions(self) -> None: user1 = User.objects.create_user(username="test1") user2 = User.objects.create_user(username="test2") user1.user_permissions.add(*Permission.objects.filter(codename="view_document")) @@ -192,7 +192,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): status.HTTP_404_NOT_FOUND, ) - def test_api_default_owner(self): + def test_api_default_owner(self) -> None: """ GIVEN: - API request to create an object (Tag) @@ -221,7 +221,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): tag1 = Tag.objects.filter(name="test1").first() self.assertEqual(tag1.owner, user1) - def test_api_set_no_owner(self): + def test_api_set_no_owner(self) -> None: """ GIVEN: - API request to create an object (Tag) @@ -251,7 +251,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): tag1 = Tag.objects.filter(name="test1").first() self.assertEqual(tag1.owner, None) - def test_api_set_owner_w_permissions(self): + def test_api_set_owner_w_permissions(self) -> None: """ GIVEN: - API request to create an object (Tag) that supplies set_permissions object @@ -299,7 +299,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): self.assertEqual(checker.has_perm("view_tag", tag1), True) self.assertIn("view_tag", get_perms(group1, tag1)) - def test_api_set_other_owner_w_permissions(self): + def test_api_set_other_owner_w_permissions(self) -> None: """ GIVEN: - API request to create an object (Tag) @@ -344,7 +344,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): self.assertEqual(tag1.owner, user2) self.assertIn("view_tag", get_perms(group1, tag1)) - def test_api_set_doc_permissions(self): + def test_api_set_doc_permissions(self) -> None: """ GIVEN: - API request to update doc permissions and owner @@ -395,7 +395,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): self.assertTrue(checker.has_perm("view_document", doc)) self.assertIn("view_document", get_perms(group1, doc)) - def test_patch_doesnt_remove_permissions(self): + def test_patch_doesnt_remove_permissions(self) -> None: """ GIVEN: - existing document with permissions set @@ -441,7 +441,60 @@ class TestApiAuth(DirectoriesMixin, APITestCase): self.assertTrue(checker.has_perm("change_document", doc)) self.assertIn("change_document", get_perms(group1, doc)) - def test_dynamic_permissions_fields(self): + def test_document_permissions_change_requires_owner(self) -> None: + owner = User.objects.create_user(username="owner") + editor = User.objects.create_user(username="editor") + editor.user_permissions.add( + *Permission.objects.all(), + ) + + doc = Document.objects.create( + title="Ownered doc", + content="sensitive", + checksum="abc123", + mime_type="application/pdf", + owner=owner, + ) + + assign_perm("view_document", editor, doc) + assign_perm("change_document", editor, doc) + + self.client.force_authenticate(editor) + response = self.client.patch( + f"/api/documents/{doc.pk}/", + json.dumps( + { + "set_permissions": { + "view": { + "users": [editor.id], + "groups": [], + }, + "change": { + "users": None, + "groups": None, + }, + }, + }, + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + self.client.force_authenticate(editor) + response = self.client.patch( + f"/api/documents/{doc.pk}/", + json.dumps( + { + "owner": editor.id, + }, + ), + content_type="application/json", + ) + + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + def test_dynamic_permissions_fields(self) -> None: user1 = User.objects.create_user(username="user1") user1.user_permissions.add(*Permission.objects.filter(codename="view_document")) user2 = User.objects.create_user(username="user2") @@ -512,7 +565,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): self.assertNotIn("is_shared_by_requester", results[0]) @mock.patch("allauth.mfa.adapter.DefaultMFAAdapter.is_mfa_enabled") - def test_basic_auth_mfa_enabled(self, mock_is_mfa_enabled): + def test_basic_auth_mfa_enabled(self, mock_is_mfa_enabled) -> None: """ GIVEN: - User with MFA enabled @@ -536,7 +589,7 @@ class TestApiAuth(DirectoriesMixin, APITestCase): self.assertEqual(response.data["detail"], "MFA required") @mock.patch("allauth.mfa.totp.internal.auth.TOTP.validate_code") - def test_get_token_mfa_enabled(self, mock_validate_code): + def test_get_token_mfa_enabled(self, mock_validate_code) -> None: """ GIVEN: - User with MFA enabled @@ -604,13 +657,13 @@ class TestApiAuth(DirectoriesMixin, APITestCase): class TestApiUser(DirectoriesMixin, APITestCase): ENDPOINT = "/api/users/" - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") self.client.force_authenticate(user=self.user) - def test_get_users(self): + def test_get_users(self) -> None: """ GIVEN: - Configured users @@ -638,7 +691,7 @@ class TestApiUser(DirectoriesMixin, APITestCase): self.assertEqual(returned_user2["first_name"], user1.first_name) self.assertEqual(returned_user2["last_name"], user1.last_name) - def test_create_user(self): + def test_create_user(self) -> None: """ WHEN: - API request is made to add a user account @@ -648,7 +701,7 @@ class TestApiUser(DirectoriesMixin, APITestCase): user1 = { "username": "testuser", - "password": "test", + "password": "areallysupersecretpassword235", "first_name": "Test", "last_name": "User", } @@ -666,7 +719,7 @@ class TestApiUser(DirectoriesMixin, APITestCase): self.assertEqual(returned_user1.first_name, user1["first_name"]) self.assertEqual(returned_user1.last_name, user1["last_name"]) - def test_delete_user(self): + def test_delete_user(self) -> None: """ GIVEN: - Existing user account @@ -693,7 +746,7 @@ class TestApiUser(DirectoriesMixin, APITestCase): self.assertEqual(User.objects.count(), nUsers - 1) - def test_update_user(self): + def test_update_user(self) -> None: """ GIVEN: - Existing user accounts @@ -730,7 +783,7 @@ class TestApiUser(DirectoriesMixin, APITestCase): f"{self.ENDPOINT}{user1.pk}/", data={ "first_name": "Updated Name 2", - "password": "123xyz", + "password": "newreallystrongpassword456", }, ) @@ -740,7 +793,7 @@ class TestApiUser(DirectoriesMixin, APITestCase): self.assertEqual(returned_user2.first_name, "Updated Name 2") self.assertNotEqual(returned_user2.password, initial_password) - def test_deactivate_totp(self): + def test_deactivate_totp(self) -> None: """ GIVEN: - Existing user account with TOTP enabled @@ -793,7 +846,7 @@ class TestApiUser(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - def test_only_superusers_can_create_or_alter_superuser_status(self): + def test_only_superusers_can_create_or_alter_superuser_status(self) -> None: """ GIVEN: - Existing user account @@ -871,13 +924,13 @@ class TestApiUser(DirectoriesMixin, APITestCase): class TestApiGroup(DirectoriesMixin, APITestCase): ENDPOINT = "/api/groups/" - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") self.client.force_authenticate(user=self.user) - def test_get_groups(self): + def test_get_groups(self) -> None: """ GIVEN: - Configured groups @@ -899,7 +952,7 @@ class TestApiGroup(DirectoriesMixin, APITestCase): self.assertEqual(returned_group1["name"], group1.name) - def test_create_group(self): + def test_create_group(self) -> None: """ WHEN: - API request is made to add a group @@ -922,7 +975,7 @@ class TestApiGroup(DirectoriesMixin, APITestCase): self.assertEqual(returned_group1.name, group1["name"]) - def test_delete_group(self): + def test_delete_group(self) -> None: """ GIVEN: - Existing group @@ -944,7 +997,7 @@ class TestApiGroup(DirectoriesMixin, APITestCase): self.assertEqual(len(Group.objects.all()), 0) - def test_update_group(self): + def test_update_group(self) -> None: """ GIVEN: - Existing groups @@ -972,7 +1025,7 @@ class TestApiGroup(DirectoriesMixin, APITestCase): class TestBulkEditObjectPermissions(APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.temp_admin = User.objects.create_superuser(username="temp_admin") @@ -987,7 +1040,7 @@ class TestBulkEditObjectPermissions(APITestCase): self.user2 = User.objects.create(username="user2") self.user3 = User.objects.create(username="user3") - def test_bulk_object_set_permissions(self): + def test_bulk_object_set_permissions(self) -> None: """ GIVEN: - Existing objects @@ -1103,7 +1156,7 @@ class TestBulkEditObjectPermissions(APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(StoragePath.objects.get(pk=self.sp1.id).owner, self.user3) - def test_bulk_object_set_permissions_merge(self): + def test_bulk_object_set_permissions_merge(self) -> None: """ GIVEN: - Existing objects @@ -1178,7 +1231,7 @@ class TestBulkEditObjectPermissions(APITestCase): # user3 should be removed self.assertNotIn(self.user3, get_users_with_perms(self.t1)) - def test_bulk_edit_object_permissions_insufficient_perms(self): + def test_bulk_edit_object_permissions_insufficient_perms(self) -> None: """ GIVEN: - Objects owned by user other than logged in user @@ -1207,7 +1260,7 @@ class TestBulkEditObjectPermissions(APITestCase): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(response.content, b"Insufficient permissions") - def test_bulk_edit_object_permissions_validation(self): + def test_bulk_edit_object_permissions_validation(self) -> None: """ GIVEN: - Existing objects @@ -1281,12 +1334,12 @@ class TestBulkEditObjectPermissions(APITestCase): class TestFullPermissionsFlag(APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.admin = User.objects.create_superuser(username="admin") - def test_full_perms_flag(self): + def test_full_perms_flag(self) -> None: """ GIVEN: - API request to list documents diff --git a/src/documents/tests/test_api_profile.py b/src/documents/tests/test_api_profile.py index 8475459a2..d642f52d8 100644 --- a/src/documents/tests/test_api_profile.py +++ b/src/documents/tests/test_api_profile.py @@ -29,7 +29,7 @@ class MockOpenIDProvider: # see allauth.socialaccount.providers.openid_connect.provider.OpenIDConnectProviderAccount class MockOpenIDConnectProviderAccount: - def __init__(self, mock_social_account_dict): + def __init__(self, mock_social_account_dict) -> None: self.account = mock_social_account_dict def to_str(self): @@ -41,7 +41,7 @@ class MockOpenIDConnectProvider: id = "openid_connect" name = "OpenID Connect" - def __init__(self, app=None): + def __init__(self, app=None) -> None: self.app = app self.name = app.name @@ -52,7 +52,7 @@ class MockOpenIDConnectProvider: class TestApiProfile(DirectoriesMixin, APITestCase): ENDPOINT = "/api/profile/" - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser( @@ -62,7 +62,7 @@ class TestApiProfile(DirectoriesMixin, APITestCase): ) self.client.force_authenticate(user=self.user) - def setupSocialAccount(self): + def setupSocialAccount(self) -> None: SocialApp.objects.create( name="Keycloak", provider="openid_connect", @@ -73,7 +73,7 @@ class TestApiProfile(DirectoriesMixin, APITestCase): bulk=False, ) - def test_get_profile(self): + def test_get_profile(self) -> None: """ GIVEN: - Configured user @@ -96,7 +96,11 @@ class TestApiProfile(DirectoriesMixin, APITestCase): @mock.patch( "allauth.socialaccount.adapter.DefaultSocialAccountAdapter.list_providers", ) - def test_get_profile_w_social(self, mock_list_providers, mock_get_provider_account): + def test_get_profile_w_social( + self, + mock_list_providers, + mock_get_provider_account, + ) -> None: """ GIVEN: - Configured user and setup social account @@ -136,7 +140,7 @@ class TestApiProfile(DirectoriesMixin, APITestCase): ], ) - def test_profile_w_social_removed_app(self): + def test_profile_w_social_removed_app(self) -> None: """ GIVEN: - Configured user and setup social account @@ -166,7 +170,7 @@ class TestApiProfile(DirectoriesMixin, APITestCase): ], ) - def test_update_profile(self): + def test_update_profile(self) -> None: """ GIVEN: - Configured user @@ -192,7 +196,66 @@ class TestApiProfile(DirectoriesMixin, APITestCase): self.assertEqual(user.first_name, user_data["first_name"]) self.assertEqual(user.last_name, user_data["last_name"]) - def test_update_auth_token(self): + def test_update_profile_invalid_password_returns_field_error(self) -> None: + """ + GIVEN: + - Configured user + WHEN: + - API call is made to update profile with weak password + THEN: + - Profile update fails with password field error + """ + + user_data = { + "email": "new@email.com", + "password": "short", # shorter than default validator threshold + "first_name": "new first name", + "last_name": "new last name", + } + + response = self.client.patch(self.ENDPOINT, user_data) + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("password", response.data) + self.assertIsInstance(response.data["password"], list) + self.assertTrue( + any( + "too short" in message.lower() for message in response.data["password"] + ), + ) + + def test_update_profile_placeholder_password_skips_validation(self) -> None: + """ + GIVEN: + - Configured user with existing password + WHEN: + - API call is made with the obfuscated placeholder password value + THEN: + - Profile is updated without changing the password or running validators + """ + + original_password = "orig-pass-12345" + self.user.set_password(original_password) + self.user.save() + + user_data = { + "email": "new@email.com", + "password": "*" * 12, # matches obfuscated value from serializer + "first_name": "new first name", + "last_name": "new last name", + } + + response = self.client.patch(self.ENDPOINT, user_data) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + user = User.objects.get(username=self.user.username) + self.assertTrue(user.check_password(original_password)) + self.assertEqual(user.email, user_data["email"]) + self.assertEqual(user.first_name, user_data["first_name"]) + self.assertEqual(user.last_name, user_data["last_name"]) + + def test_update_auth_token(self) -> None: """ GIVEN: - Configured user @@ -215,7 +278,7 @@ class TestApiProfile(DirectoriesMixin, APITestCase): self.assertNotEqual(token1.key, token2.key) - def test_profile_not_logged_in(self): + def test_profile_not_logged_in(self) -> None: """ GIVEN: - User not logged in @@ -239,7 +302,7 @@ class TestApiProfile(DirectoriesMixin, APITestCase): def test_get_social_account_providers( self, mock_list_providers, - ): + ) -> None: """ GIVEN: - Configured user @@ -274,7 +337,7 @@ class TestApiProfile(DirectoriesMixin, APITestCase): def test_get_social_account_providers_openid( self, mock_list_providers, - ): + ) -> None: """ GIVEN: - Configured user and openid social account provider @@ -296,7 +359,7 @@ class TestApiProfile(DirectoriesMixin, APITestCase): 2, ) - def test_disconnect_social_account(self): + def test_disconnect_social_account(self) -> None: """ GIVEN: - Configured user @@ -335,13 +398,13 @@ class TestApiProfile(DirectoriesMixin, APITestCase): class TestApiTOTPViews(APITestCase): ENDPOINT = "/api/profile/totp/" - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") self.client.force_authenticate(user=self.user) - def test_get_totp(self): + def test_get_totp(self) -> None: """ GIVEN: - Existing user account @@ -359,7 +422,7 @@ class TestApiTOTPViews(APITestCase): self.assertIn("secret", response.data) @mock.patch("allauth.mfa.totp.internal.auth.validate_totp_code") - def test_activate_totp(self, mock_validate_totp_code): + def test_activate_totp(self, mock_validate_totp_code) -> None: """ GIVEN: - Existing user account @@ -382,7 +445,7 @@ class TestApiTOTPViews(APITestCase): self.assertTrue(Authenticator.objects.filter(user=self.user).exists()) self.assertIn("recovery_codes", response.data) - def test_deactivate_totp(self): + def test_deactivate_totp(self) -> None: """ GIVEN: - Existing user account with TOTP enabled diff --git a/src/documents/tests/test_api_remote_version.py b/src/documents/tests/test_api_remote_version.py index 721d29424..22dd39009 100644 --- a/src/documents/tests/test_api_remote_version.py +++ b/src/documents/tests/test_api_remote_version.py @@ -1,3 +1,4 @@ +from django.core.cache import cache from pytest_httpx import HTTPXMock from rest_framework import status from rest_framework.test import APIClient @@ -8,11 +9,14 @@ from paperless import version class TestApiRemoteVersion: ENDPOINT = "/api/remote_version/" + def setup_method(self) -> None: + cache.clear() + def test_remote_version_enabled_no_update_prefix( self, rest_api_client: APIClient, httpx_mock: HTTPXMock, - ): + ) -> None: httpx_mock.add_response( url="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest", json={"tag_name": "ngx-1.6.0"}, @@ -31,7 +35,7 @@ class TestApiRemoteVersion: self, rest_api_client: APIClient, httpx_mock: HTTPXMock, - ): + ) -> None: httpx_mock.add_response( url="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest", json={"tag_name": version.__full_version_str__}, @@ -50,7 +54,7 @@ class TestApiRemoteVersion: self, rest_api_client: APIClient, httpx_mock: HTTPXMock, - ): + ) -> None: new_version = ( version.__version__[0], version.__version__[1], @@ -76,7 +80,7 @@ class TestApiRemoteVersion: self, rest_api_client: APIClient, httpx_mock: HTTPXMock, - ): + ) -> None: httpx_mock.add_response( content=b'{ "blah":', headers={"Content-Type": "application/json"}, @@ -95,7 +99,7 @@ class TestApiRemoteVersion: self, rest_api_client: APIClient, httpx_mock: HTTPXMock, - ): + ) -> None: httpx_mock.add_response(status_code=503) response = rest_api_client.get(self.ENDPOINT) diff --git a/src/documents/tests/test_api_schema.py b/src/documents/tests/test_api_schema.py index fc2e0fdf3..24d44fbc0 100644 --- a/src/documents/tests/test_api_schema.py +++ b/src/documents/tests/test_api_schema.py @@ -7,7 +7,7 @@ from rest_framework.test import APITestCase class TestApiSchema(APITestCase): ENDPOINT = "/api/schema/" - def test_valid_schema(self): + def test_valid_schema(self) -> None: """ Test that the schema is valid """ @@ -16,7 +16,7 @@ class TestApiSchema(APITestCase): except CommandError as e: self.fail(f"Schema validation failed: {e}") - def test_get_schema_endpoints(self): + def test_get_schema_endpoints(self) -> None: """ Test that the schema endpoints exist and return a 200 status code """ diff --git a/src/documents/tests/test_api_search.py b/src/documents/tests/test_api_search.py index 8f316c145..2aa3f1ae7 100644 --- a/src/documents/tests/test_api_search.py +++ b/src/documents/tests/test_api_search.py @@ -31,13 +31,13 @@ from paperless_mail.models import MailRule class TestDocumentSearchApi(DirectoriesMixin, APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") self.client.force_authenticate(user=self.user) - def test_search(self): + def test_search(self) -> None: d1 = Document.objects.create( title="invoice", content="the thing i bought at a shop and paid with bank account", @@ -89,7 +89,66 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): self.assertEqual(len(results), 0) self.assertCountEqual(response.data["all"], []) - def test_search_multi_page(self): + def test_search_custom_field_ordering(self) -> None: + custom_field = CustomField.objects.create( + name="Sortable field", + data_type=CustomField.FieldDataType.INT, + ) + d1 = Document.objects.create( + title="first", + content="match", + checksum="A1", + ) + d2 = Document.objects.create( + title="second", + content="match", + checksum="B2", + ) + d3 = Document.objects.create( + title="third", + content="match", + checksum="C3", + ) + CustomFieldInstance.objects.create( + document=d1, + field=custom_field, + value_int=30, + ) + CustomFieldInstance.objects.create( + document=d2, + field=custom_field, + value_int=10, + ) + CustomFieldInstance.objects.create( + document=d3, + field=custom_field, + value_int=20, + ) + + with AsyncWriter(index.open_index()) as writer: + index.update_document(writer, d1) + index.update_document(writer, d2) + index.update_document(writer, d3) + + response = self.client.get( + f"/api/documents/?query=match&ordering=custom_field_{custom_field.pk}", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual( + [doc["id"] for doc in response.data["results"]], + [d2.id, d3.id, d1.id], + ) + + response = self.client.get( + f"/api/documents/?query=match&ordering=-custom_field_{custom_field.pk}", + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual( + [doc["id"] for doc in response.data["results"]], + [d1.id, d3.id, d2.id], + ) + + def test_search_multi_page(self) -> None: with AsyncWriter(index.open_index()) as writer: for i in range(55): doc = Document.objects.create( @@ -124,7 +183,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): self.assertNotIn(result["id"], seen_ids) seen_ids.append(result["id"]) - def test_search_invalid_page(self): + def test_search_invalid_page(self) -> None: with AsyncWriter(index.open_index()) as writer: for i in range(15): doc = Document.objects.create( @@ -143,7 +202,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): @override_settings( TIME_ZONE="UTC", ) - def test_search_added_in_last_week(self): + def test_search_added_in_last_week(self) -> None: """ GIVEN: - Three documents added right now @@ -195,7 +254,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): @override_settings( TIME_ZONE="America/Chicago", ) - def test_search_added_in_last_week_with_timezone_behind(self): + def test_search_added_in_last_week_with_timezone_behind(self) -> None: """ GIVEN: - Two documents added right now @@ -247,7 +306,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): @override_settings( TIME_ZONE="Europe/Sofia", ) - def test_search_added_in_last_week_with_timezone_ahead(self): + def test_search_added_in_last_week_with_timezone_ahead(self) -> None: """ GIVEN: - Two documents added right now @@ -296,7 +355,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): # Assert subset in results self.assertDictEqual(result, {**result, **subset}) - def test_search_added_in_last_month(self): + def test_search_added_in_last_month(self) -> None: """ GIVEN: - One document added right now @@ -351,7 +410,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): @override_settings( TIME_ZONE="America/Denver", ) - def test_search_added_in_last_month_timezone_behind(self): + def test_search_added_in_last_month_timezone_behind(self) -> None: """ GIVEN: - One document added right now @@ -407,7 +466,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): @override_settings( TIME_ZONE="Europe/Sofia", ) - def test_search_added_specific_date_with_timezone_ahead(self): + def test_search_added_specific_date_with_timezone_ahead(self) -> None: """ GIVEN: - Two documents added right now @@ -460,7 +519,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): # Assert subset in results self.assertDictEqual(result, {**result, **subset}) - def test_search_added_invalid_date(self): + def test_search_added_invalid_date(self) -> None: """ GIVEN: - One document added right now @@ -486,7 +545,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): self.assertEqual(len(results), 0) @mock.patch("documents.index.autocomplete") - def test_search_autocomplete_limits(self, m): + def test_search_autocomplete_limits(self, m) -> None: """ GIVEN: - No pre-conditions @@ -517,7 +576,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 10) - def test_search_autocomplete_respect_permissions(self): + def test_search_autocomplete_respect_permissions(self) -> None: """ GIVEN: - Multiple users and documents with & without permissions @@ -577,7 +636,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data, [b"apples", b"applebaum", b"appletini"]) - def test_search_autocomplete_field_name_match(self): + def test_search_autocomplete_field_name_match(self) -> None: """ GIVEN: - One document exists in index (must be one document to experience the crash) @@ -600,7 +659,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data, []) - def test_search_autocomplete_search_term(self): + def test_search_autocomplete_search_term(self) -> None: """ GIVEN: - Search results for autocomplete include the exact search term @@ -622,7 +681,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data[0], b"auto") - def test_search_spelling_suggestion(self): + def test_search_spelling_suggestion(self) -> None: with AsyncWriter(index.open_index()) as writer: for i in range(55): doc = Document.objects.create( @@ -647,7 +706,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): "whoosh.searching.Searcher.correct_query", side_effect=Exception("Test error"), ) - def test_corrected_query_error(self, mock_correct_query): + def test_corrected_query_error(self, mock_correct_query) -> None: """ GIVEN: - A query that raises an error on correction @@ -663,7 +722,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): expected_str = "Error while correcting query '2025-06-04': Test error" self.assertIn(expected_str, error_str) - def test_search_more_like(self): + def test_search_more_like(self) -> None: """ GIVEN: - Documents exist which have similar content @@ -713,7 +772,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): self.assertEqual(results[0]["id"], d3.id) self.assertEqual(results[1]["id"], d1.id) - def test_search_filtering(self): + def test_search_filtering(self) -> None: t = Tag.objects.create(name="tag") t2 = Tag.objects.create(name="tag2") c = Correspondent.objects.create(name="correspondent") @@ -972,7 +1031,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): ), ) - def test_search_filtering_respect_owner(self): + def test_search_filtering_respect_owner(self) -> None: """ GIVEN: - Documents with owners set & without @@ -1028,7 +1087,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): r = self.client.get(f"/api/documents/?query=test&owner__id__none={u1.id}") self.assertEqual(r.data["count"], 3) - def test_search_filtering_with_object_perms(self): + def test_search_filtering_with_object_perms(self) -> None: """ GIVEN: - Documents with granted view permissions to others @@ -1089,7 +1148,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): r = self.client.get(f"/api/documents/?query=test&shared_by__id={u1.id}") self.assertEqual(r.data["count"], 1) - def test_search_sorting(self): + def test_search_sorting(self) -> None: u1 = User.objects.create_user("user1") u2 = User.objects.create_user("user2") c1 = Correspondent.objects.create(name="corres Ax") @@ -1179,7 +1238,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): ) @mock.patch("documents.bulk_edit.bulk_update_documents") - def test_global_search(self, m): + def test_global_search(self, m) -> None: """ GIVEN: - Multiple documents and objects @@ -1230,7 +1289,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): content_type__app_label="admin", ), ) - set_permissions([4, 5], set_permissions=[], owner=user2, merge=False) + set_permissions([4, 5], set_permissions={}, owner=user2, merge=False) with index.open_index_writer() as writer: index.update_document(writer, d1) @@ -1298,7 +1357,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase): self.assertEqual(results["custom_fields"][0]["id"], custom_field1.id) self.assertEqual(results["workflows"][0]["id"], workflow1.id) - def test_global_search_bad_request(self): + def test_global_search_bad_request(self) -> None: """ WHEN: - Global search query is made without or with query < 3 characters diff --git a/src/documents/tests/test_api_status.py b/src/documents/tests/test_api_status.py index 9b7bf37ad..d2a092726 100644 --- a/src/documents/tests/test_api_status.py +++ b/src/documents/tests/test_api_status.py @@ -1,4 +1,6 @@ import os +import shutil +import tempfile from pathlib import Path from unittest import mock @@ -15,12 +17,22 @@ from paperless import version class TestSystemStatus(APITestCase): ENDPOINT = "/api/status/" - def setUp(self): + def setUp(self) -> None: + super().setUp() self.user = User.objects.create_superuser( username="temp_admin", ) + self.tmp_dir = Path(tempfile.mkdtemp()) + self.override = override_settings(MEDIA_ROOT=self.tmp_dir) + self.override.enable() - def test_system_status(self): + def tearDown(self) -> None: + super().tearDown() + + self.override.disable() + shutil.rmtree(self.tmp_dir) + + def test_system_status(self) -> None: """ GIVEN: - A user is logged in @@ -46,7 +58,7 @@ class TestSystemStatus(APITestCase): self.assertEqual(response.data["tasks"]["redis_status"], "ERROR") self.assertIsNotNone(response.data["tasks"]["redis_error"]) - def test_system_status_insufficient_permissions(self): + def test_system_status_insufficient_permissions(self) -> None: """ GIVEN: - A user is not logged in or does not have permissions @@ -62,7 +74,7 @@ class TestSystemStatus(APITestCase): response = self.client.get(self.ENDPOINT) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - def test_system_status_container_detection(self): + def test_system_status_container_detection(self) -> None: """ GIVEN: - The application is running in a containerized environment @@ -81,7 +93,7 @@ class TestSystemStatus(APITestCase): self.assertEqual(response.data["install_type"], "kubernetes") @mock.patch("redis.Redis.execute_command") - def test_system_status_redis_ping(self, mock_ping): + def test_system_status_redis_ping(self, mock_ping) -> None: """ GIVEN: - Redies ping returns True @@ -96,7 +108,7 @@ class TestSystemStatus(APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["tasks"]["redis_status"], "OK") - def test_system_status_redis_no_credentials(self): + def test_system_status_redis_no_credentials(self) -> None: """ GIVEN: - Redis URL with credentials @@ -116,7 +128,7 @@ class TestSystemStatus(APITestCase): "redis://localhost:6379", ) - def test_system_status_redis_socket(self): + def test_system_status_redis_socket(self) -> None: """ GIVEN: - Redis URL is socket @@ -136,7 +148,7 @@ class TestSystemStatus(APITestCase): ) @mock.patch("celery.app.control.Inspect.ping") - def test_system_status_celery_ping(self, mock_ping): + def test_system_status_celery_ping(self, mock_ping) -> None: """ GIVEN: - Celery ping returns pong @@ -153,7 +165,7 @@ class TestSystemStatus(APITestCase): @override_settings(INDEX_DIR=Path("/tmp/index")) @mock.patch("whoosh.index.FileIndex.last_modified") - def test_system_status_index_ok(self, mock_last_modified): + def test_system_status_index_ok(self, mock_last_modified) -> None: """ GIVEN: - The index last modified time is set @@ -171,7 +183,7 @@ class TestSystemStatus(APITestCase): @override_settings(INDEX_DIR=Path("/tmp/index/")) @mock.patch("documents.index.open_index", autospec=True) - def test_system_status_index_error(self, mock_open_index): + def test_system_status_index_error(self, mock_open_index) -> None: """ GIVEN: - The index is not found @@ -189,7 +201,7 @@ class TestSystemStatus(APITestCase): self.assertEqual(response.data["tasks"]["index_status"], "ERROR") self.assertIsNotNone(response.data["tasks"]["index_error"]) - def test_system_status_classifier_ok(self): + def test_system_status_classifier_ok(self) -> None: """ GIVEN: - The classifier is found @@ -209,7 +221,7 @@ class TestSystemStatus(APITestCase): self.assertEqual(response.data["tasks"]["classifier_status"], "OK") self.assertIsNone(response.data["tasks"]["classifier_error"]) - def test_system_status_classifier_warning(self): + def test_system_status_classifier_warning(self) -> None: """ GIVEN: - No classifier task is found @@ -226,7 +238,7 @@ class TestSystemStatus(APITestCase): "WARNING", ) - def test_system_status_classifier_error(self): + def test_system_status_classifier_error(self) -> None: """ GIVEN: - An error occurred while loading the classifier @@ -250,7 +262,7 @@ class TestSystemStatus(APITestCase): ) self.assertIsNotNone(response.data["tasks"]["classifier_error"]) - def test_system_status_sanity_check_ok(self): + def test_system_status_sanity_check_ok(self) -> None: """ GIVEN: - The sanity check is successful @@ -270,7 +282,7 @@ class TestSystemStatus(APITestCase): self.assertEqual(response.data["tasks"]["sanity_check_status"], "OK") self.assertIsNone(response.data["tasks"]["sanity_check_error"]) - def test_system_status_sanity_check_warning(self): + def test_system_status_sanity_check_warning(self) -> None: """ GIVEN: - No sanity check task is found @@ -287,7 +299,7 @@ class TestSystemStatus(APITestCase): "WARNING", ) - def test_system_status_sanity_check_error(self): + def test_system_status_sanity_check_error(self) -> None: """ GIVEN: - The sanity check failed @@ -310,3 +322,69 @@ class TestSystemStatus(APITestCase): "ERROR", ) self.assertIsNotNone(response.data["tasks"]["sanity_check_error"]) + + def test_system_status_ai_disabled(self) -> None: + """ + GIVEN: + - The AI feature is disabled + WHEN: + - The user requests the system status + THEN: + - The response contains the correct AI status + """ + with override_settings(AI_ENABLED=False): + self.client.force_login(self.user) + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["tasks"]["llmindex_status"], "DISABLED") + self.assertIsNone(response.data["tasks"]["llmindex_error"]) + + def test_system_status_ai_enabled(self) -> None: + """ + GIVEN: + - The AI index feature is enabled, but no tasks are found + - The AI index feature is enabled and a task is found + WHEN: + - The user requests the system status + THEN: + - The response contains the correct AI status + """ + with override_settings(AI_ENABLED=True, LLM_EMBEDDING_BACKEND="openai"): + self.client.force_login(self.user) + + # No tasks found + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["tasks"]["llmindex_status"], "WARNING") + + PaperlessTask.objects.create( + type=PaperlessTask.TaskType.SCHEDULED_TASK, + status=states.SUCCESS, + task_name=PaperlessTask.TaskName.LLMINDEX_UPDATE, + ) + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["tasks"]["llmindex_status"], "OK") + self.assertIsNone(response.data["tasks"]["llmindex_error"]) + + def test_system_status_ai_error(self) -> None: + """ + GIVEN: + - The AI index feature is enabled and a task is found with an error + WHEN: + - The user requests the system status + THEN: + - The response contains the correct AI status + """ + with override_settings(AI_ENABLED=True, LLM_EMBEDDING_BACKEND="openai"): + PaperlessTask.objects.create( + type=PaperlessTask.TaskType.SCHEDULED_TASK, + status=states.FAILURE, + task_name=PaperlessTask.TaskName.LLMINDEX_UPDATE, + result="AI index update failed", + ) + self.client.force_login(self.user) + response = self.client.get(self.ENDPOINT) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["tasks"]["llmindex_status"], "ERROR") + self.assertIsNotNone(response.data["tasks"]["llmindex_error"]) diff --git a/src/documents/tests/test_api_tasks.py b/src/documents/tests/test_api_tasks.py index c139d05da..5dd003565 100644 --- a/src/documents/tests/test_api_tasks.py +++ b/src/documents/tests/test_api_tasks.py @@ -7,6 +7,7 @@ from django.contrib.auth.models import User from rest_framework import status from rest_framework.test import APITestCase +from documents.models import Document from documents.models import PaperlessTask from documents.tests.utils import DirectoriesMixin from documents.views import TasksViewSet @@ -15,13 +16,13 @@ from documents.views import TasksViewSet class TestTasks(DirectoriesMixin, APITestCase): ENDPOINT = "/api/tasks/" - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser(username="temp_admin") self.client.force_authenticate(user=self.user) - def test_get_tasks(self): + def test_get_tasks(self) -> None: """ GIVEN: - Attempted celery tasks @@ -56,7 +57,7 @@ class TestTasks(DirectoriesMixin, APITestCase): self.assertEqual(returned_task2["status"], celery.states.PENDING) self.assertEqual(returned_task2["task_file_name"], task2.task_file_name) - def test_get_single_task_status(self): + def test_get_single_task_status(self) -> None: """ GIVEN - Query parameter for a valid task ID @@ -85,7 +86,7 @@ class TestTasks(DirectoriesMixin, APITestCase): self.assertEqual(returned_task1["task_id"], task1.task_id) - def test_get_single_task_status_not_valid(self): + def test_get_single_task_status_not_valid(self) -> None: """ GIVEN - Query parameter for a non-existent task ID @@ -109,7 +110,7 @@ class TestTasks(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data), 0) - def test_acknowledge_tasks(self): + def test_acknowledge_tasks(self) -> None: """ GIVEN: - Attempted celery tasks @@ -135,7 +136,45 @@ class TestTasks(DirectoriesMixin, APITestCase): response = self.client.get(self.ENDPOINT + "?acknowledged=false") self.assertEqual(len(response.data), 0) - def test_tasks_owner_aware(self): + def test_acknowledge_tasks_requires_change_permission(self) -> None: + """ + GIVEN: + - A regular user initially without change permissions + - A regular user with change permissions + WHEN: + - API call is made to acknowledge tasks + THEN: + - The first user is forbidden from acknowledging tasks + - The second user is allowed to acknowledge tasks + """ + regular_user = User.objects.create_user(username="test") + self.client.force_authenticate(user=regular_user) + + task = PaperlessTask.objects.create( + task_id=str(uuid.uuid4()), + task_file_name="task_one.pdf", + ) + + response = self.client.post( + self.ENDPOINT + "acknowledge/", + {"tasks": [task.id]}, + ) + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + + regular_user2 = User.objects.create_user(username="test2") + regular_user2.user_permissions.add( + Permission.objects.get(codename="change_paperlesstask"), + ) + regular_user2.save() + self.client.force_authenticate(user=regular_user2) + + response = self.client.post( + self.ENDPOINT + "acknowledge/", + {"tasks": [task.id]}, + ) + self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_tasks_owner_aware(self) -> None: """ GIVEN: - Existing PaperlessTasks with owner and with no owner @@ -181,7 +220,7 @@ class TestTasks(DirectoriesMixin, APITestCase): self.assertEqual(acknowledge_response.status_code, status.HTTP_200_OK) self.assertEqual(acknowledge_response.data, {"result": 2}) - def test_task_result_no_error(self): + def test_task_result_no_error(self) -> None: """ GIVEN: - A celery task completed without error @@ -207,7 +246,7 @@ class TestTasks(DirectoriesMixin, APITestCase): self.assertEqual(returned_data["result"], "Success. New document id 1 created") self.assertEqual(returned_data["related_document"], "1") - def test_task_result_with_error(self): + def test_task_result_with_error(self) -> None: """ GIVEN: - A celery task completed with an exception @@ -220,7 +259,7 @@ class TestTasks(DirectoriesMixin, APITestCase): task_id=str(uuid.uuid4()), task_file_name="task_one.pdf", status=celery.states.FAILURE, - result="test.pdf: Not consuming test.pdf: It is a duplicate.", + result="test.pdf: Unexpected error during ingestion.", ) response = self.client.get(self.ENDPOINT) @@ -232,10 +271,10 @@ class TestTasks(DirectoriesMixin, APITestCase): self.assertEqual( returned_data["result"], - "test.pdf: Not consuming test.pdf: It is a duplicate.", + "test.pdf: Unexpected error during ingestion.", ) - def test_task_name_webui(self): + def test_task_name_webui(self) -> None: """ GIVEN: - Attempted celery task @@ -261,7 +300,7 @@ class TestTasks(DirectoriesMixin, APITestCase): self.assertEqual(returned_data["task_file_name"], "test.pdf") - def test_task_name_consume_folder(self): + def test_task_name_consume_folder(self) -> None: """ GIVEN: - Attempted celery task @@ -287,20 +326,34 @@ class TestTasks(DirectoriesMixin, APITestCase): self.assertEqual(returned_data["task_file_name"], "anothertest.pdf") - def test_task_result_failed_duplicate_includes_related_doc(self): + def test_task_result_duplicate_warning_includes_count(self) -> None: """ GIVEN: - - A celery task failed with a duplicate error + - A celery task succeeds, but a duplicate exists WHEN: - API call is made to get tasks THEN: - - The returned data includes a related document link + - The returned data includes duplicate warning metadata """ + checksum = "duplicate-checksum" + Document.objects.create( + title="Existing", + content="", + mime_type="application/pdf", + checksum=checksum, + ) + created_doc = Document.objects.create( + title="Created", + content="", + mime_type="application/pdf", + checksum=checksum, + archive_checksum="another-checksum", + ) PaperlessTask.objects.create( task_id=str(uuid.uuid4()), task_file_name="task_one.pdf", - status=celery.states.FAILURE, - result="Not consuming task_one.pdf: It is a duplicate of task_one_existing.pdf (#1234).", + status=celery.states.SUCCESS, + result=f"Success. New document id {created_doc.pk} created", ) response = self.client.get(self.ENDPOINT) @@ -310,9 +363,9 @@ class TestTasks(DirectoriesMixin, APITestCase): returned_data = response.data[0] - self.assertEqual(returned_data["related_document"], "1234") + self.assertEqual(returned_data["related_document"], str(created_doc.pk)) - def test_run_train_classifier_task(self): + def test_run_train_classifier_task(self) -> None: """ GIVEN: - A superuser @@ -349,7 +402,7 @@ class TestTasks(DirectoriesMixin, APITestCase): mock_train_classifier.assert_called_once_with(scheduled=False) @mock.patch("documents.tasks.sanity_check") - def test_run_task_requires_superuser(self, mock_check_sanity): + def test_run_task_requires_superuser(self, mock_check_sanity) -> None: """ GIVEN: - A regular user diff --git a/src/documents/tests/test_api_trash.py b/src/documents/tests/test_api_trash.py index 757728690..65fb4306a 100644 --- a/src/documents/tests/test_api_trash.py +++ b/src/documents/tests/test_api_trash.py @@ -10,7 +10,7 @@ from documents.models import Document class TestTrashAPI(APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_user(username="temp_admin") @@ -18,7 +18,7 @@ class TestTrashAPI(APITestCase): self.client.force_authenticate(user=self.user) cache.clear() - def test_api_trash(self): + def test_api_trash(self) -> None: """ GIVEN: - Existing document @@ -68,7 +68,7 @@ class TestTrashAPI(APITestCase): self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(Document.global_objects.count(), 0) - def test_trash_api_empty_all(self): + def test_trash_api_empty_all(self) -> None: """ GIVEN: - Existing documents in trash @@ -101,7 +101,7 @@ class TestTrashAPI(APITestCase): self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(Document.global_objects.count(), 0) - def test_api_trash_show_owned_only(self): + def test_api_trash_show_owned_only(self) -> None: """ GIVEN: - Existing documents in trash @@ -153,7 +153,7 @@ class TestTrashAPI(APITestCase): self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(resp.data["count"], 3) - def test_api_trash_insufficient_permissions(self): + def test_api_trash_insufficient_permissions(self) -> None: """ GIVEN: - Existing document with owner = user2 in trash @@ -180,7 +180,7 @@ class TestTrashAPI(APITestCase): self.assertEqual(resp.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(Document.global_objects.count(), 1) - def test_api_trash_invalid_params(self): + def test_api_trash_invalid_params(self) -> None: """ GIVEN: - Existing documents diff --git a/src/documents/tests/test_api_uisettings.py b/src/documents/tests/test_api_uisettings.py index 26c6f17ae..ec973e2f1 100644 --- a/src/documents/tests/test_api_uisettings.py +++ b/src/documents/tests/test_api_uisettings.py @@ -13,7 +13,7 @@ from paperless.version import __full_version_str__ class TestApiUiSettings(DirectoriesMixin, APITestCase): ENDPOINT = "/api/ui_settings/" - def setUp(self): + def setUp(self) -> None: super().setUp() self.test_user = User.objects.create_superuser(username="test") self.test_user.first_name = "Test" @@ -21,7 +21,7 @@ class TestApiUiSettings(DirectoriesMixin, APITestCase): self.test_user.save() self.client.force_authenticate(user=self.test_user) - def test_api_get_ui_settings(self): + def test_api_get_ui_settings(self) -> None: response = self.client.get(self.ENDPOINT, format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) self.maxDiff = None @@ -49,10 +49,11 @@ class TestApiUiSettings(DirectoriesMixin, APITestCase): "backend_setting": "default", }, "email_enabled": False, + "ai_enabled": False, }, ) - def test_api_set_ui_settings(self): + def test_api_set_ui_settings(self) -> None: settings = { "settings": { "dark_mode": { @@ -75,7 +76,7 @@ class TestApiUiSettings(DirectoriesMixin, APITestCase): settings["settings"], ) - def test_api_set_ui_settings_insufficient_global_permissions(self): + def test_api_set_ui_settings_insufficient_global_permissions(self) -> None: not_superuser = User.objects.create_user(username="test_not_superuser") self.client.force_authenticate(user=not_superuser) @@ -95,7 +96,7 @@ class TestApiUiSettings(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) - def test_api_set_ui_settings_sufficient_global_permissions(self): + def test_api_set_ui_settings_sufficient_global_permissions(self) -> None: not_superuser = User.objects.create_user(username="test_not_superuser") not_superuser.user_permissions.add( *Permission.objects.filter(codename__contains="uisettings"), @@ -119,7 +120,7 @@ class TestApiUiSettings(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) - def test_settings_must_be_dict(self): + def test_settings_must_be_dict(self) -> None: """ GIVEN: - API request to update ui_settings with settings not being a dict @@ -152,7 +153,7 @@ class TestApiUiSettings(DirectoriesMixin, APITestCase): OUTLOOK_OAUTH_CLIENT_SECRET="jkl012", OUTLOOK_OAUTH_ENABLED=True, ) - def test_settings_includes_oauth_urls_if_enabled(self): + def test_settings_includes_oauth_urls_if_enabled(self) -> None: response = self.client.get(self.ENDPOINT, format="json") self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIsNotNone( diff --git a/src/documents/tests/test_api_workflows.py b/src/documents/tests/test_api_workflows.py index 305467048..f07b2b60c 100644 --- a/src/documents/tests/test_api_workflows.py +++ b/src/documents/tests/test_api_workflows.py @@ -78,7 +78,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): self.workflow.actions.add(self.action) self.workflow.save() - def test_api_get_workflow(self): + def test_api_get_workflow(self) -> None: """ GIVEN: - API request to get all workflows @@ -99,7 +99,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): self.action.assign_correspondent.pk, ) - def test_api_create_workflow(self): + def test_api_create_workflow(self) -> None: """ GIVEN: - API request to create a workflow, trigger and action separately @@ -160,7 +160,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(Workflow.objects.count(), 2) - def test_api_create_workflow_nested(self): + def test_api_create_workflow_nested(self) -> None: """ GIVEN: - API request to create a workflow with nested trigger and action @@ -184,6 +184,20 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): "filter_filename": "*", "filter_path": "*/samples/*", "filter_has_tags": [self.t1.id], + "filter_has_all_tags": [self.t2.id], + "filter_has_not_tags": [self.t3.id], + "filter_has_any_correspondents": [self.c.id], + "filter_has_not_correspondents": [self.c2.id], + "filter_has_any_document_types": [self.dt.id], + "filter_has_not_document_types": [self.dt2.id], + "filter_has_any_storage_paths": [self.sp.id], + "filter_has_not_storage_paths": [self.sp2.id], + "filter_custom_field_query": json.dumps( + [ + "AND", + [[self.cf1.id, "exact", "value"]], + ], + ), "filter_has_document_type": self.dt.id, "filter_has_correspondent": self.c.id, "filter_has_storage_path": self.sp.id, @@ -223,8 +237,50 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(Workflow.objects.count(), 2) + workflow = Workflow.objects.get(name="Workflow 2") + trigger = workflow.triggers.first() + self.assertSetEqual( + set(trigger.filter_has_tags.values_list("id", flat=True)), + {self.t1.id}, + ) + self.assertSetEqual( + set(trigger.filter_has_all_tags.values_list("id", flat=True)), + {self.t2.id}, + ) + self.assertSetEqual( + set(trigger.filter_has_not_tags.values_list("id", flat=True)), + {self.t3.id}, + ) + self.assertSetEqual( + set(trigger.filter_has_any_correspondents.values_list("id", flat=True)), + {self.c.id}, + ) + self.assertSetEqual( + set(trigger.filter_has_not_correspondents.values_list("id", flat=True)), + {self.c2.id}, + ) + self.assertSetEqual( + set(trigger.filter_has_any_document_types.values_list("id", flat=True)), + {self.dt.id}, + ) + self.assertSetEqual( + set(trigger.filter_has_not_document_types.values_list("id", flat=True)), + {self.dt2.id}, + ) + self.assertSetEqual( + set(trigger.filter_has_any_storage_paths.values_list("id", flat=True)), + {self.sp.id}, + ) + self.assertSetEqual( + set(trigger.filter_has_not_storage_paths.values_list("id", flat=True)), + {self.sp2.id}, + ) + self.assertEqual( + trigger.filter_custom_field_query, + json.dumps(["AND", [[self.cf1.id, "exact", "value"]]]), + ) - def test_api_create_invalid_workflow_trigger(self): + def test_api_create_invalid_workflow_trigger(self) -> None: """ GIVEN: - API request to create a workflow trigger @@ -260,7 +316,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): self.assertEqual(WorkflowTrigger.objects.count(), 1) - def test_api_create_invalid_assign_title(self): + def test_api_create_invalid_assign_title(self) -> None: """ GIVEN: - API request to create a workflow @@ -299,7 +355,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): self.assertEqual(Workflow.objects.count(), 1) - def test_api_create_workflow_trigger_action_empty_fields(self): + def test_api_create_workflow_trigger_action_empty_fields(self) -> None: """ GIVEN: - API request to create a workflow trigger and action @@ -356,7 +412,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): self.assertEqual(trigger2.filter_path, "*/test/*") self.assertIsNone(trigger2.filter_filename) - def test_api_update_workflow_nested_triggers_actions(self): + def test_api_update_workflow_nested_triggers_actions(self) -> None: """ GIVEN: - Existing workflow with trigger and action @@ -376,6 +432,17 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): { "type": WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, "filter_has_tags": [self.t1.id], + "filter_has_all_tags": [self.t2.id], + "filter_has_not_tags": [self.t3.id], + "filter_has_any_correspondents": [self.c.id], + "filter_has_not_correspondents": [self.c2.id], + "filter_has_any_document_types": [self.dt.id], + "filter_has_not_document_types": [self.dt2.id], + "filter_has_any_storage_paths": [self.sp.id], + "filter_has_not_storage_paths": [self.sp2.id], + "filter_custom_field_query": json.dumps( + ["AND", [[self.cf1.id, "exact", "value"]]], + ), "filter_has_correspondent": self.c.id, "filter_has_document_type": self.dt.id, }, @@ -393,9 +460,45 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): workflow = Workflow.objects.get(id=response.data["id"]) self.assertEqual(workflow.name, "Workflow Updated") self.assertEqual(workflow.triggers.first().filter_has_tags.first(), self.t1) + self.assertEqual( + workflow.triggers.first().filter_has_all_tags.first(), + self.t2, + ) + self.assertEqual( + workflow.triggers.first().filter_has_not_tags.first(), + self.t3, + ) + self.assertEqual( + workflow.triggers.first().filter_has_any_correspondents.first(), + self.c, + ) + self.assertEqual( + workflow.triggers.first().filter_has_not_correspondents.first(), + self.c2, + ) + self.assertEqual( + workflow.triggers.first().filter_has_any_document_types.first(), + self.dt, + ) + self.assertEqual( + workflow.triggers.first().filter_has_not_document_types.first(), + self.dt2, + ) + self.assertEqual( + workflow.triggers.first().filter_has_any_storage_paths.first(), + self.sp, + ) + self.assertEqual( + workflow.triggers.first().filter_has_not_storage_paths.first(), + self.sp2, + ) + self.assertEqual( + workflow.triggers.first().filter_custom_field_query, + json.dumps(["AND", [[self.cf1.id, "exact", "value"]]]), + ) self.assertEqual(workflow.actions.first().assign_title, "Action New Title") - def test_api_update_workflow_no_trigger_actions(self): + def test_api_update_workflow_no_trigger_actions(self) -> None: """ GIVEN: - Existing workflow @@ -439,7 +542,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): self.assertEqual(workflow.triggers.count(), 1) self.assertEqual(workflow.actions.count(), 0) - def test_api_auto_remove_orphaned_triggers_actions(self): + def test_api_auto_remove_orphaned_triggers_actions(self) -> None: """ GIVEN: - Existing trigger and action @@ -479,7 +582,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): self.assertEqual(WorkflowAction.objects.all().count(), 1) self.assertNotEqual(workflow.actions.first().id, self.action.id) - def test_email_action_validation(self): + def test_email_action_validation(self) -> None: """ GIVEN: - API request to create a workflow with an email action @@ -572,7 +675,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_201_CREATED) - def test_webhook_action_validation(self): + def test_webhook_action_validation(self) -> None: """ GIVEN: - API request to create a workflow with a notification action @@ -634,7 +737,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, status.HTTP_201_CREATED) - def test_webhook_action_url_validation(self): + def test_webhook_action_url_validation(self) -> None: """ GIVEN: - API request to create a workflow with a notification action @@ -676,7 +779,7 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): ) self.assertEqual(response.status_code, expected_resp_code) - def test_patch_trigger_cannot_change_id(self): + def test_patch_trigger_cannot_change_id(self) -> None: """ GIVEN: - An existing workflow trigger @@ -735,3 +838,61 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) self.action.refresh_from_db() self.assertEqual(self.action.assign_title, "Patched Title") + + def test_password_action_passwords_field(self): + """ + GIVEN: + - Nothing + WHEN: + - A workflow password removal action is created with passwords set + THEN: + - The passwords field is correctly stored and retrieved + """ + passwords = ["password1", "password2", "password3"] + response = self.client.post( + "/api/workflow_actions/", + json.dumps( + { + "type": WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL, + "passwords": passwords, + }, + ), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + self.assertEqual(response.data["passwords"], passwords) + + def test_password_action_invalid_passwords_field(self): + """ + GIVEN: + - Nothing + WHEN: + - A workflow password removal action is created with invalid passwords field + THEN: + - The required validation error is raised + """ + for payload in [ + {"type": WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL}, + { + "type": WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL, + "passwords": "", + }, + { + "type": WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL, + "passwords": [], + }, + { + "type": WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL, + "passwords": ["", "password2"], + }, + ]: + response = self.client.post( + "/api/workflow_actions/", + json.dumps(payload), + content_type="application/json", + ) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn( + "Passwords are required", + str(response.data["non_field_errors"][0]), + ) diff --git a/src/documents/tests/test_barcodes.py b/src/documents/tests/test_barcodes.py index b2c28a82b..d7dab5a2d 100644 --- a/src/documents/tests/test_barcodes.py +++ b/src/documents/tests/test_barcodes.py @@ -11,6 +11,7 @@ from django.test import override_settings from documents import tasks from documents.barcodes import BarcodePlugin +from documents.consumer import ConsumerError from documents.data_models import ConsumableDocument from documents.data_models import DocumentMetadataOverrides from documents.data_models import DocumentSource @@ -55,7 +56,7 @@ class TestBarcode( GetReaderPluginMixin, TestCase, ): - def test_scan_file_for_separating_barcodes(self): + def test_scan_file_for_separating_barcodes(self) -> None: """ GIVEN: - PDF containing barcodes @@ -76,7 +77,7 @@ class TestBarcode( @override_settings( CONSUMER_BARCODE_TIFF_SUPPORT=True, ) - def test_scan_tiff_for_separating_barcodes(self): + def test_scan_tiff_for_separating_barcodes(self) -> None: """ GIVEN: - TIFF image containing barcodes @@ -93,10 +94,45 @@ class TestBarcode( self.assertDictEqual(separator_page_numbers, {1: False}) + @override_settings(CONSUMER_ENABLE_ASN_BARCODE=True) + def test_asn_barcode_duplicate_in_trash_fails(self): + """ + GIVEN: + - A document with ASN barcode 123 is in the trash + WHEN: + - A file with the same barcode ASN is consumed + THEN: + - The ASN check is re-run and consumption fails + """ + test_file = self.BARCODE_SAMPLE_DIR / "barcode-39-asn-123.pdf" + + first_doc = Document.objects.create( + title="First ASN 123", + content="", + checksum="asn123first", + mime_type="application/pdf", + archive_serial_number=123, + ) + + first_doc.delete() + + dupe_asn = settings.SCRATCH_DIR / "barcode-39-asn-123-second.pdf" + shutil.copy(test_file, dupe_asn) + + with mock.patch("documents.tasks.ProgressManager", DummyProgressManager): + with self.assertRaisesRegex(ConsumerError, r"ASN 123.*trash"): + tasks.consume_file( + ConsumableDocument( + source=DocumentSource.ConsumeFolder, + original_file=dupe_asn, + ), + None, + ) + @override_settings( CONSUMER_BARCODE_TIFF_SUPPORT=True, ) - def test_scan_tiff_with_alpha_for_separating_barcodes(self): + def test_scan_tiff_with_alpha_for_separating_barcodes(self) -> None: """ GIVEN: - TIFF image containing barcodes @@ -113,7 +149,7 @@ class TestBarcode( self.assertDictEqual(separator_page_numbers, {1: False}) - def test_scan_file_for_separating_barcodes_none_present(self): + def test_scan_file_for_separating_barcodes_none_present(self) -> None: """ GIVEN: - File with no barcodes @@ -131,7 +167,7 @@ class TestBarcode( self.assertEqual(reader.pdf_file, test_file) self.assertDictEqual(separator_page_numbers, {}) - def test_scan_file_for_separating_barcodes_middle_page(self): + def test_scan_file_for_separating_barcodes_middle_page(self) -> None: """ GIVEN: - PDF file containing a separator on page 1 (zero indexed) @@ -149,7 +185,7 @@ class TestBarcode( self.assertEqual(reader.pdf_file, test_file) self.assertDictEqual(separator_page_numbers, {1: False}) - def test_scan_file_for_separating_barcodes_multiple_pages(self): + def test_scan_file_for_separating_barcodes_multiple_pages(self) -> None: """ GIVEN: - PDF file containing a separator on pages 2 and 5 (zero indexed) @@ -167,7 +203,7 @@ class TestBarcode( self.assertEqual(reader.pdf_file, test_file) self.assertDictEqual(separator_page_numbers, {2: False, 5: False}) - def test_scan_file_for_separating_barcodes_hard_to_detect(self): + def test_scan_file_for_separating_barcodes_hard_to_detect(self) -> None: """ GIVEN: - PDF file containing a separator on page 1 (zero indexed) @@ -192,7 +228,7 @@ class TestBarcode( self.assertEqual(reader.pdf_file, test_file) self.assertDictEqual(separator_page_numbers, {1: False}) - def test_scan_file_for_separating_barcodes_unreadable(self): + def test_scan_file_for_separating_barcodes_unreadable(self) -> None: """ GIVEN: - PDF file containing a separator on page 1 (zero indexed) @@ -211,7 +247,7 @@ class TestBarcode( self.assertEqual(reader.pdf_file, test_file) self.assertDictEqual(separator_page_numbers, {}) - def test_scan_file_for_separating_barcodes_fax_decode(self): + def test_scan_file_for_separating_barcodes_fax_decode(self) -> None: """ GIVEN: - A PDF containing an image encoded as CCITT Group 4 encoding @@ -229,7 +265,7 @@ class TestBarcode( self.assertEqual(reader.pdf_file, test_file) self.assertDictEqual(separator_page_numbers, {1: False}) - def test_scan_file_for_separating_qr_barcodes(self): + def test_scan_file_for_separating_qr_barcodes(self) -> None: """ GIVEN: - PDF file containing a separator on page 0 (zero indexed) @@ -249,7 +285,7 @@ class TestBarcode( self.assertDictEqual(separator_page_numbers, {0: False}) @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") - def test_scan_file_for_separating_custom_barcodes(self): + def test_scan_file_for_separating_custom_barcodes(self) -> None: """ GIVEN: - PDF file containing a separator on page 0 (zero indexed) @@ -269,7 +305,7 @@ class TestBarcode( self.assertDictEqual(separator_page_numbers, {0: False}) @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") - def test_scan_file_for_separating_custom_qr_barcodes(self): + def test_scan_file_for_separating_custom_qr_barcodes(self) -> None: """ GIVEN: - PDF file containing a separator on page 0 (zero indexed) @@ -290,7 +326,7 @@ class TestBarcode( self.assertDictEqual(separator_page_numbers, {0: False}) @override_settings(CONSUMER_BARCODE_STRING="CUSTOM BARCODE") - def test_scan_file_for_separating_custom_128_barcodes(self): + def test_scan_file_for_separating_custom_128_barcodes(self) -> None: """ GIVEN: - PDF file containing a separator on page 0 (zero indexed) @@ -310,7 +346,7 @@ class TestBarcode( self.assertEqual(reader.pdf_file, test_file) self.assertDictEqual(separator_page_numbers, {0: False}) - def test_scan_file_for_separating_wrong_qr_barcodes(self): + def test_scan_file_for_separating_wrong_qr_barcodes(self) -> None: """ GIVEN: - PDF file containing a separator on page 0 (zero indexed) @@ -331,7 +367,7 @@ class TestBarcode( self.assertDictEqual(separator_page_numbers, {}) @override_settings(CONSUMER_BARCODE_STRING="ADAR-NEXTDOC") - def test_scan_file_qr_barcodes_was_problem(self): + def test_scan_file_qr_barcodes_was_problem(self) -> None: """ GIVEN: - Input PDF with certain QR codes that aren't detected at current size @@ -350,7 +386,7 @@ class TestBarcode( self.assertGreater(len(reader.barcodes), 0) self.assertDictEqual(separator_page_numbers, {1: False}) - def test_scan_file_for_separating_barcodes_password(self): + def test_scan_file_for_separating_barcodes_password(self) -> None: """ GIVEN: - Password protected PDF @@ -372,7 +408,7 @@ class TestBarcode( self.assertEqual(reader.pdf_file, test_file) self.assertDictEqual(separator_page_numbers, {}) - def test_separate_pages(self): + def test_separate_pages(self) -> None: """ GIVEN: - Input PDF 2 pages after separation @@ -389,7 +425,7 @@ class TestBarcode( self.assertEqual(reader.pdf_file, test_file) self.assertEqual(len(documents), 2) - def test_separate_pages_double_code(self): + def test_separate_pages_double_code(self) -> None: """ GIVEN: - Input PDF with two patch code pages in a row @@ -406,7 +442,7 @@ class TestBarcode( self.assertEqual(len(documents), 2) @override_settings(CONSUMER_ENABLE_BARCODES=True) - def test_separate_pages_no_list(self): + def test_separate_pages_no_list(self) -> None: """ GIVEN: - Input file to separate @@ -427,7 +463,7 @@ class TestBarcode( CONSUMER_ENABLE_BARCODES=True, CONSUMER_BARCODE_TIFF_SUPPORT=True, ) - def test_consume_barcode_unsupported_jpg_file(self): + def test_consume_barcode_unsupported_jpg_file(self) -> None: """ GIVEN: - JPEG image as input @@ -446,7 +482,7 @@ class TestBarcode( CONSUMER_ENABLE_BARCODES=True, CONSUMER_ENABLE_ASN_BARCODE=True, ) - def test_separate_pages_by_asn_barcodes_and_patcht(self): + def test_separate_pages_by_asn_barcodes_and_patcht(self) -> None: """ GIVEN: - Input PDF with a patch code on page 3 and ASN barcodes on pages 1,5,6,9,11 @@ -483,7 +519,7 @@ class TestBarcode( CONSUMER_ENABLE_BARCODES=True, CONSUMER_ENABLE_ASN_BARCODE=True, ) - def test_separate_pages_by_asn_barcodes(self): + def test_separate_pages_by_asn_barcodes(self) -> None: """ GIVEN: - Input PDF with ASN barcodes on pages 1,3,4,7,9 @@ -517,7 +553,7 @@ class TestBarcode( CONSUMER_ENABLE_ASN_BARCODE=True, CONSUMER_BARCODE_RETAIN_SPLIT_PAGES=True, ) - def test_separate_pages_by_asn_barcodes_and_patcht_retain_pages(self): + def test_separate_pages_by_asn_barcodes_and_patcht_retain_pages(self) -> None: """ GIVEN: - Input PDF with a patch code on page 3 and ASN barcodes on pages 1,5,6,9,11 @@ -548,7 +584,7 @@ class TestBarcode( }, ) - def test_barcode_config(self): + def test_barcode_config(self) -> None: """ GIVEN: - Barcode app config is set (settings are not) @@ -579,7 +615,7 @@ class TestBarcodeNewConsume( TestCase, ): @override_settings(CONSUMER_ENABLE_BARCODES=True) - def test_consume_barcode_file(self): + def test_consume_barcode_file(self) -> None: """ GIVEN: - Incoming file with at 1 barcode producing 2 documents @@ -614,14 +650,16 @@ class TestBarcodeNewConsume( self.assertIsNotFile(temp_copy) # Check the split files exist + # Check the original_path is set # Check the source is unchanged # Check the overrides are unchanged for ( new_input_doc, new_doc_overrides, ) in self.get_all_consume_delay_call_args(): - self.assertEqual(new_input_doc.source, DocumentSource.ConsumeFolder) self.assertIsFile(new_input_doc.original_file) + self.assertEqual(new_input_doc.original_path, temp_copy) + self.assertEqual(new_input_doc.source, DocumentSource.ConsumeFolder) self.assertEqual(overrides, new_doc_overrides) @@ -640,7 +678,7 @@ class TestAsnBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes reader.cleanup() @override_settings(CONSUMER_ASN_BARCODE_PREFIX="CUSTOM-PREFIX-") - def test_scan_file_for_asn_custom_prefix(self): + def test_scan_file_for_asn_custom_prefix(self) -> None: """ GIVEN: - PDF containing an ASN barcode with custom prefix @@ -658,7 +696,7 @@ class TestAsnBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes self.assertEqual(reader.pdf_file, test_file) self.assertEqual(asn, 123) - def test_scan_file_for_asn_barcode(self): + def test_scan_file_for_asn_barcode(self) -> None: """ GIVEN: - PDF containing an ASN barcode @@ -677,7 +715,7 @@ class TestAsnBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes self.assertEqual(reader.pdf_file, test_file) self.assertEqual(asn, 123) - def test_scan_file_for_asn_not_found(self): + def test_scan_file_for_asn_not_found(self) -> None: """ GIVEN: - PDF without an ASN barcode @@ -694,7 +732,7 @@ class TestAsnBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes self.assertEqual(reader.pdf_file, test_file) self.assertEqual(asn, None) - def test_scan_file_for_asn_barcode_invalid(self): + def test_scan_file_for_asn_barcode_invalid(self) -> None: """ GIVEN: - PDF containing an ASN barcode @@ -716,7 +754,7 @@ class TestAsnBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes self.assertEqual(asn, None) @override_settings(CONSUMER_ENABLE_ASN_BARCODE=True) - def test_consume_barcode_file_asn_assignment(self): + def test_consume_barcode_file_asn_assignment(self) -> None: """ GIVEN: - PDF containing an ASN barcode @@ -747,7 +785,7 @@ class TestAsnBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes self.assertEqual(document.archive_serial_number, 123) @override_settings(CONSUMER_BARCODE_SCANNER="PYZBAR") - def test_scan_file_for_qrcode_without_upscale(self): + def test_scan_file_for_qrcode_without_upscale(self) -> None: """ GIVEN: - A printed and scanned PDF document with a rather small QR code @@ -767,7 +805,7 @@ class TestAsnBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes @override_settings(CONSUMER_BARCODE_SCANNER="PYZBAR") @override_settings(CONSUMER_BARCODE_DPI=600) @override_settings(CONSUMER_BARCODE_UPSCALE=1.5) - def test_scan_file_for_qrcode_with_upscale(self): + def test_scan_file_for_qrcode_with_upscale(self) -> None: """ GIVEN: - A printed and scanned PDF document with a rather small QR code @@ -820,8 +858,37 @@ class TestTagBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes yield reader reader.cleanup() + @override_settings( + CONSUMER_ENABLE_TAG_BARCODE=True, + CONSUMER_TAG_BARCODE_MAPPING={"TAG:(.*)": "\\g<1>"}, + ) + def test_barcode_without_tag_match(self) -> None: + """ + GIVEN: + - Barcode that does not match any TAG mapping pattern + - TAG mapping configured for "TAG:" prefix only + WHEN: + - is_tag property is checked on an ASN barcode + THEN: + - Returns False + """ + test_file = self.BARCODE_SAMPLE_DIR / "barcode-39-asn-123.pdf" + with self.get_reader(test_file) as reader: + reader.detect() + + self.assertGreater( + len(reader.barcodes), + 0, + "Should have detected at least one barcode", + ) + asn_barcode = reader.barcodes[0] + self.assertFalse( + asn_barcode.is_tag, + f"ASN barcode '{asn_barcode.value}' should not match TAG: pattern", + ) + @override_settings(CONSUMER_ENABLE_TAG_BARCODE=True) - def test_scan_file_without_matching_barcodes(self): + def test_scan_file_without_matching_barcodes(self) -> None: """ GIVEN: - PDF containing tag barcodes but none with matching prefix (default "TAG:") @@ -840,7 +907,7 @@ class TestTagBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes CONSUMER_ENABLE_TAG_BARCODE=False, CONSUMER_TAG_BARCODE_MAPPING={"CUSTOM-PREFIX-(.*)": "\\g<1>"}, ) - def test_scan_file_with_matching_barcode_but_function_disabled(self): + def test_scan_file_with_matching_barcode_but_function_disabled(self) -> None: """ GIVEN: - PDF containing a tag barcode with matching custom prefix @@ -860,7 +927,7 @@ class TestTagBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes CONSUMER_ENABLE_TAG_BARCODE=True, CONSUMER_TAG_BARCODE_MAPPING={"CUSTOM-PREFIX-(.*)": "\\g<1>"}, ) - def test_scan_file_for_tag_custom_prefix(self): + def test_scan_file_for_tag_custom_prefix(self) -> None: """ GIVEN: - PDF containing a tag barcode with custom prefix @@ -886,7 +953,7 @@ class TestTagBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes CONSUMER_ENABLE_TAG_BARCODE=True, CONSUMER_TAG_BARCODE_MAPPING={"ASN(.*)": "\\g<1>"}, ) - def test_scan_file_for_many_custom_tags(self): + def test_scan_file_for_many_custom_tags(self) -> None: """ GIVEN: - PDF containing multiple tag barcode with custom prefix @@ -913,7 +980,7 @@ class TestTagBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes CONSUMER_ENABLE_TAG_BARCODE=True, CONSUMER_TAG_BARCODE_MAPPING={"CUSTOM-PREFIX-(.*)": "\\g<3>"}, ) - def test_scan_file_for_tag_raises_value_error(self): + def test_scan_file_for_tag_raises_value_error(self) -> None: """ GIVEN: - Any error occurs during tag barcode processing @@ -926,3 +993,163 @@ class TestTagBarcode(DirectoriesMixin, SampleDirMixin, GetReaderPluginMixin, Tes # expect error to be caught and logged only tags = reader.metadata.tag_ids self.assertEqual(tags, None) + + @override_settings( + CONSUMER_ENABLE_TAG_BARCODE=True, + CONSUMER_TAG_BARCODE_SPLIT=True, + CONSUMER_TAG_BARCODE_MAPPING={"TAG:(.*)": "\\g<1>"}, + ) + def test_split_on_tag_barcodes(self) -> None: + """ + GIVEN: + - PDF containing barcodes with TAG: prefix + - Tag barcode splitting is enabled with TAG: mapping + WHEN: + - File is processed + THEN: + - Splits should occur at pages with TAG barcodes + - Tags should NOT be assigned when tag splitting is enabled (they're assigned during re-consumption) + """ + test_file = self.BARCODE_SAMPLE_DIR / "split-by-tag-basic.pdf" + with self.get_reader(test_file) as reader: + reader.detect() + separator_page_numbers = reader.get_separation_pages() + + self.assertDictEqual(separator_page_numbers, {1: True, 3: True}) + + tags = reader.metadata.tag_ids + self.assertIsNone(tags) + + @override_settings( + CONSUMER_ENABLE_TAG_BARCODE=True, + CONSUMER_TAG_BARCODE_SPLIT=False, + CONSUMER_TAG_BARCODE_MAPPING={"TAG:(.*)": "\\g<1>"}, + ) + def test_no_split_when_tag_split_disabled(self) -> None: + """ + GIVEN: + - PDF containing TAG barcodes (TAG:invoice, TAG:receipt) + - Tag barcode splitting is disabled + WHEN: + - File is processed + THEN: + - No separation pages are identified + - Tags are still extracted and assigned + """ + test_file = self.BARCODE_SAMPLE_DIR / "split-by-tag-basic.pdf" + with self.get_reader(test_file) as reader: + reader.run() + separator_page_numbers = reader.get_separation_pages() + + self.assertDictEqual(separator_page_numbers, {}) + + tags = reader.metadata.tag_ids + self.assertEqual(len(tags), 2) + + @override_settings( + CONSUMER_ENABLE_BARCODES=True, + CONSUMER_ENABLE_TAG_BARCODE=True, + CONSUMER_TAG_BARCODE_SPLIT=True, + CONSUMER_TAG_BARCODE_MAPPING={"TAG:(.*)": "\\g<1>"}, + CELERY_TASK_ALWAYS_EAGER=True, + OCR_MODE="skip", + ) + def test_consume_barcode_file_tag_split_and_assignment(self) -> None: + """ + GIVEN: + - PDF containing TAG barcodes on pages 2 and 4 (TAG:invoice, TAG:receipt) + - Tag barcode splitting is enabled + WHEN: + - File is consumed + THEN: + - PDF is split into 3 documents at barcode pages + - Each split document has the appropriate TAG barcodes extracted and assigned + - Document 1: page 1 (no tags) + - Document 2: pages 2-3 with TAG:invoice + - Document 3: pages 4-5 with TAG:receipt + """ + test_file = self.BARCODE_SAMPLE_DIR / "split-by-tag-basic.pdf" + dst = settings.SCRATCH_DIR / "split-by-tag-basic.pdf" + shutil.copy(test_file, dst) + + with mock.patch("documents.tasks.ProgressManager", DummyProgressManager): + result = tasks.consume_file( + ConsumableDocument( + source=DocumentSource.ConsumeFolder, + original_file=dst, + ), + None, + ) + + self.assertEqual(result, "Barcode splitting complete!") + + documents = Document.objects.all().order_by("id") + self.assertEqual(documents.count(), 3) + + doc1 = documents[0] + self.assertEqual(doc1.tags.count(), 0) + + doc2 = documents[1] + self.assertEqual(doc2.tags.count(), 1) + self.assertEqual(doc2.tags.first().name, "invoice") + + doc3 = documents[2] + self.assertEqual(doc3.tags.count(), 1) + self.assertEqual(doc3.tags.first().name, "receipt") + + @override_settings( + CONSUMER_ENABLE_TAG_BARCODE=True, + CONSUMER_TAG_BARCODE_SPLIT=True, + CONSUMER_TAG_BARCODE_MAPPING={"ASN(.*)": "ASN_\\g<1>", "TAG:(.*)": "\\g<1>"}, + ) + def test_split_by_mixed_asn_tag_backwards_compat(self) -> None: + """ + GIVEN: + - PDF with mixed ASN and TAG barcodes + - Mapping that treats ASN barcodes as tags (backwards compatibility) + - ASN12345 on page 1, TAG:personal on page 3, ASN13456 on page 5, TAG:business on page 7 + WHEN: + - File is consumed + THEN: + - Both ASN and TAG barcodes trigger splits + - Split points are at pages 3, 5, and 7 (page 1 never splits) + - 4 separate documents are produced + """ + test_file = self.BARCODE_SAMPLE_DIR / "split-by-tag-mixed-asn.pdf" + + with self.get_reader(test_file) as reader: + reader.detect() + separator_pages = reader.get_separation_pages() + + self.assertDictEqual(separator_pages, {2: True, 4: True, 6: True}) + + document_list = reader.separate_pages(separator_pages) + self.assertEqual(len(document_list), 4) + + @override_settings( + CONSUMER_ENABLE_TAG_BARCODE=True, + CONSUMER_TAG_BARCODE_SPLIT=True, + CONSUMER_TAG_BARCODE_MAPPING={"TAG:(.*)": "\\g<1>"}, + ) + def test_split_by_tag_multiple_per_page(self) -> None: + """ + GIVEN: + - PDF with multiple TAG barcodes on same page + - TAG:invoice and TAG:expense on page 2, TAG:receipt on page 4 + WHEN: + - File is processed + THEN: + - Pages with barcodes trigger splits + - Split points at pages 2 and 4 + - 3 separate documents are produced + """ + test_file = self.BARCODE_SAMPLE_DIR / "split-by-tag-multiple-per-page.pdf" + + with self.get_reader(test_file) as reader: + reader.detect() + separator_pages = reader.get_separation_pages() + + self.assertDictEqual(separator_pages, {1: True, 3: True}) + + document_list = reader.separate_pages(separator_pages) + self.assertEqual(len(document_list), 3) diff --git a/src/documents/tests/test_bulk_edit.py b/src/documents/tests/test_bulk_edit.py index a281fc02d..86135d030 100644 --- a/src/documents/tests/test_bulk_edit.py +++ b/src/documents/tests/test_bulk_edit.py @@ -1,3 +1,4 @@ +import hashlib import shutil from datetime import date from pathlib import Path @@ -22,7 +23,7 @@ from documents.tests.utils import DirectoriesMixin class TestBulkEdit(DirectoriesMixin, TestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.owner = User.objects.create(username="test_owner") @@ -66,7 +67,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): self.doc4.tags.add(self.t1, self.t2) self.sp1 = StoragePath.objects.create(name="sp1", path="Something/{checksum}") - def test_set_correspondent(self): + def test_set_correspondent(self) -> None: self.assertEqual(Document.objects.filter(correspondent=self.c2).count(), 1) bulk_edit.set_correspondent( [self.doc1.id, self.doc2.id, self.doc3.id], @@ -77,7 +78,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): _, kwargs = self.async_task.call_args self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id]) - def test_unset_correspondent(self): + def test_unset_correspondent(self) -> None: self.assertEqual(Document.objects.filter(correspondent=self.c2).count(), 1) bulk_edit.set_correspondent([self.doc1.id, self.doc2.id, self.doc3.id], None) self.assertEqual(Document.objects.filter(correspondent=self.c2).count(), 0) @@ -85,7 +86,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): _, kwargs = self.async_task.call_args self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id]) - def test_set_document_type(self): + def test_set_document_type(self) -> None: self.assertEqual(Document.objects.filter(document_type=self.dt2).count(), 1) bulk_edit.set_document_type( [self.doc1.id, self.doc2.id, self.doc3.id], @@ -96,7 +97,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): _, kwargs = self.async_task.call_args self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id]) - def test_unset_document_type(self): + def test_unset_document_type(self) -> None: self.assertEqual(Document.objects.filter(document_type=self.dt2).count(), 1) bulk_edit.set_document_type([self.doc1.id, self.doc2.id, self.doc3.id], None) self.assertEqual(Document.objects.filter(document_type=self.dt2).count(), 0) @@ -104,7 +105,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): _, kwargs = self.async_task.call_args self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id]) - def test_set_document_storage_path(self): + def test_set_document_storage_path(self) -> None: """ GIVEN: - 5 documents without defined storage path @@ -127,7 +128,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): self.assertCountEqual(kwargs["document_ids"], [self.doc1.id]) - def test_unset_document_storage_path(self): + def test_unset_document_storage_path(self) -> None: """ GIVEN: - 4 documents without defined storage path @@ -158,7 +159,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): self.assertCountEqual(kwargs["document_ids"], [self.doc1.id]) - def test_add_tag(self): + def test_add_tag(self) -> None: self.assertEqual(Document.objects.filter(tags__id=self.t1.id).count(), 2) bulk_edit.add_tag( [self.doc1.id, self.doc2.id, self.doc3.id, self.doc4.id], @@ -169,7 +170,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): _, kwargs = self.async_task.call_args self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc3.id]) - def test_remove_tag(self): + def test_remove_tag(self) -> None: self.assertEqual(Document.objects.filter(tags__id=self.t1.id).count(), 2) bulk_edit.remove_tag([self.doc1.id, self.doc3.id, self.doc4.id], self.t1.id) self.assertEqual(Document.objects.filter(tags__id=self.t1.id).count(), 1) @@ -177,7 +178,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): _, kwargs = self.async_task.call_args self.assertCountEqual(kwargs["document_ids"], [self.doc4.id]) - def test_modify_tags(self): + def test_modify_tags(self) -> None: tag_unrelated = Tag.objects.create(name="unrelated") self.doc2.tags.add(tag_unrelated) self.doc3.tags.add(tag_unrelated) @@ -195,7 +196,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): # TODO: doc3 should not be affected, but the query for that is rather complicated self.assertCountEqual(kwargs["document_ids"], [self.doc2.id, self.doc3.id]) - def test_modify_custom_fields(self): + def test_modify_custom_fields(self) -> None: """ GIVEN: - 2 documents with custom fields @@ -251,7 +252,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): _, kwargs = self.async_task.call_args self.assertCountEqual(kwargs["document_ids"], [self.doc1.id, self.doc2.id]) - def test_modify_custom_fields_with_values(self): + def test_modify_custom_fields_with_values(self) -> None: """ GIVEN: - 2 documents with custom fields @@ -343,7 +344,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): self.doc2.custom_fields.filter(field=cf3).first().value, ) - def test_modify_custom_fields_doclink_self_link(self): + def test_modify_custom_fields_doclink_self_link(self) -> None: """ GIVEN: - 2 existing documents @@ -372,7 +373,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): [self.doc1.id], ) - def test_delete(self): + def test_delete(self) -> None: self.assertEqual(Document.objects.count(), 5) bulk_edit.delete([self.doc1.id, self.doc2.id]) self.assertEqual(Document.objects.count(), 3) @@ -382,7 +383,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): ) @mock.patch("documents.tasks.bulk_update_documents.delay") - def test_set_permissions(self, m): + def test_set_permissions(self, m) -> None: doc_ids = [self.doc1.id, self.doc2.id, self.doc3.id] assign_perm("view_document", self.group1, self.doc1) @@ -421,7 +422,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): self.assertEqual(groups_with_perms.count(), 1) @mock.patch("documents.tasks.bulk_update_documents.delay") - def test_set_permissions_merge(self, m): + def test_set_permissions_merge(self, m) -> None: doc_ids = [self.doc1.id, self.doc2.id, self.doc3.id] self.doc1.owner = self.user1 @@ -465,7 +466,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): self.assertEqual(groups_with_perms.count(), 2) @mock.patch("documents.models.Document.delete") - def test_delete_documents_old_uuid_field(self, m): + def test_delete_documents_old_uuid_field(self, m) -> None: m.side_effect = Exception("Data too long for column 'transaction_id' at row 1") doc_ids = [self.doc1.id, self.doc2.id, self.doc3.id] bulk_edit.delete(doc_ids) @@ -475,7 +476,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase): class TestPDFActions(DirectoriesMixin, TestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() sample1 = self.dirs.scratch_dir / "sample.pdf" shutil.copy( @@ -571,7 +572,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): self.img_doc.save() @mock.patch("documents.tasks.consume_file.s") - def test_merge(self, mock_consume_file): + def test_merge(self, mock_consume_file) -> None: """ GIVEN: - Existing documents @@ -581,7 +582,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): - Consume file should be called """ doc_ids = [self.doc1.id, self.doc2.id, self.doc3.id] - metadata_document_id = self.doc1.id + metadata_document_id = self.doc2.id user = User.objects.create(username="test_user") result = bulk_edit.merge( @@ -602,20 +603,21 @@ class TestPDFActions(DirectoriesMixin, TestCase): expected_filename, ) self.assertEqual(consume_file_args[1].title, None) + # No metadata_document_id, delete_originals False, so ASN should be None + self.assertIsNone(consume_file_args[1].asn) # With metadata_document_id overrides result = bulk_edit.merge(doc_ids, metadata_document_id=metadata_document_id) consume_file_args, _ = mock_consume_file.call_args - self.assertEqual(consume_file_args[1].title, "A (merged)") + self.assertEqual(consume_file_args[1].title, "B (merged)") + self.assertEqual(consume_file_args[1].created, self.doc2.created) self.assertEqual(result, "OK") @mock.patch("documents.bulk_edit.delete.si") @mock.patch("documents.tasks.consume_file.s") - @mock.patch("documents.bulk_edit.chain") def test_merge_and_delete_originals( self, - mock_chain, mock_consume_file, mock_delete_documents, ): @@ -629,6 +631,12 @@ class TestPDFActions(DirectoriesMixin, TestCase): - Document deletion task should be called """ doc_ids = [self.doc1.id, self.doc2.id, self.doc3.id] + self.doc1.archive_serial_number = 101 + self.doc2.archive_serial_number = 102 + self.doc3.archive_serial_number = 103 + self.doc1.save() + self.doc2.save() + self.doc3.save() result = bulk_edit.merge(doc_ids, delete_originals=True) self.assertEqual(result, "OK") @@ -639,7 +647,8 @@ class TestPDFActions(DirectoriesMixin, TestCase): mock_consume_file.assert_called() mock_delete_documents.assert_called() - mock_chain.assert_called_once() + consume_sig = mock_consume_file.return_value + consume_sig.apply_async.assert_called_once() consume_file_args, _ = mock_consume_file.call_args self.assertEqual( @@ -647,6 +656,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): expected_filename, ) self.assertEqual(consume_file_args[1].title, None) + self.assertEqual(consume_file_args[1].asn, 101) delete_documents_args, _ = mock_delete_documents.call_args self.assertEqual( @@ -654,8 +664,94 @@ class TestPDFActions(DirectoriesMixin, TestCase): doc_ids, ) + self.doc1.refresh_from_db() + self.doc2.refresh_from_db() + self.doc3.refresh_from_db() + self.assertIsNone(self.doc1.archive_serial_number) + self.assertIsNone(self.doc2.archive_serial_number) + self.assertIsNone(self.doc3.archive_serial_number) + + @mock.patch("documents.bulk_edit.delete.si") @mock.patch("documents.tasks.consume_file.s") - def test_merge_with_archive_fallback(self, mock_consume_file): + def test_merge_and_delete_originals_restore_on_failure( + self, + mock_consume_file, + mock_delete_documents, + ) -> None: + """ + GIVEN: + - Existing documents + WHEN: + - Merge action with deleting documents is called with 1 document + - Error occurs when queuing consume file task + THEN: + - Archive serial numbers are restored + """ + doc_ids = [self.doc1.id] + self.doc1.archive_serial_number = 111 + self.doc1.save() + sig = mock.Mock() + sig.apply_async.side_effect = Exception("boom") + mock_consume_file.return_value = sig + + with self.assertRaises(Exception): + bulk_edit.merge(doc_ids, delete_originals=True) + + self.doc1.refresh_from_db() + self.assertEqual(self.doc1.archive_serial_number, 111) + + @mock.patch("documents.bulk_edit.delete.si") + @mock.patch("documents.tasks.consume_file.s") + def test_merge_and_delete_originals_metadata_handoff( + self, + mock_consume_file, + mock_delete_documents, + ) -> None: + """ + GIVEN: + - Existing documents with ASNs + WHEN: + - Merge with delete_originals=True and metadata_document_id set + THEN: + - Handoff ASN uses metadata document ASN + """ + doc_ids = [self.doc1.id, self.doc2.id] + self.doc1.archive_serial_number = 101 + self.doc2.archive_serial_number = 202 + self.doc1.save() + self.doc2.save() + + result = bulk_edit.merge( + doc_ids, + metadata_document_id=self.doc2.id, + delete_originals=True, + ) + self.assertEqual(result, "OK") + + consume_file_args, _ = mock_consume_file.call_args + self.assertEqual(consume_file_args[1].asn, 202) + + def test_restore_archive_serial_numbers_task(self) -> None: + """ + GIVEN: + - Existing document with no archive serial number + WHEN: + - Restore archive serial number task is called with backup data + THEN: + - Document archive serial number is restored + """ + self.doc1.archive_serial_number = 444 + self.doc1.save() + Document.objects.filter(pk=self.doc1.id).update(archive_serial_number=None) + + backup: dict[int, int | None] = {self.doc1.id: 444} + bulk_edit.restore_archive_serial_numbers_task(backup) + + self.doc1.refresh_from_db() + self.assertEqual(self.doc1.archive_serial_number, 444) + + @mock.patch("documents.tasks.consume_file.s") + def test_merge_with_archive_fallback(self, mock_consume_file) -> None: """ GIVEN: - Existing documents @@ -682,7 +778,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): @mock.patch("documents.tasks.consume_file.delay") @mock.patch("pikepdf.open") - def test_merge_with_errors(self, mock_open_pdf, mock_consume_file): + def test_merge_with_errors(self, mock_open_pdf, mock_consume_file) -> None: """ GIVEN: - Existing documents @@ -706,7 +802,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): mock_consume_file.assert_not_called() @mock.patch("documents.tasks.consume_file.s") - def test_split(self, mock_consume_file): + def test_split(self, mock_consume_file) -> None: """ GIVEN: - Existing documents @@ -722,6 +818,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): self.assertEqual(mock_consume_file.call_count, 2) consume_file_args, _ = mock_consume_file.call_args self.assertEqual(consume_file_args[1].title, "B (split 2)") + self.assertIsNone(consume_file_args[1].asn) self.assertEqual(result, "OK") @@ -746,6 +843,8 @@ class TestPDFActions(DirectoriesMixin, TestCase): """ doc_ids = [self.doc2.id] pages = [[1, 2], [3]] + self.doc2.archive_serial_number = 200 + self.doc2.save() result = bulk_edit.split(doc_ids, pages, delete_originals=True) self.assertEqual(result, "OK") @@ -763,9 +862,45 @@ class TestPDFActions(DirectoriesMixin, TestCase): doc_ids, ) + self.doc2.refresh_from_db() + self.assertIsNone(self.doc2.archive_serial_number) + + @mock.patch("documents.bulk_edit.delete.si") + @mock.patch("documents.tasks.consume_file.s") + @mock.patch("documents.bulk_edit.chord") + def test_split_restore_on_failure( + self, + mock_chord, + mock_consume_file, + mock_delete_documents, + ) -> None: + """ + GIVEN: + - Existing documents + WHEN: + - Split action with deleting documents is called with 1 document and 2 page groups + - Error occurs when queuing chord task + THEN: + - Archive serial numbers are restored + """ + doc_ids = [self.doc2.id] + pages = [[1, 2]] + self.doc2.archive_serial_number = 222 + self.doc2.save() + + sig = mock.Mock() + sig.apply_async.side_effect = Exception("boom") + mock_chord.return_value = sig + + result = bulk_edit.split(doc_ids, pages, delete_originals=True) + self.assertEqual(result, "OK") + + self.doc2.refresh_from_db() + self.assertEqual(self.doc2.archive_serial_number, 222) + @mock.patch("documents.tasks.consume_file.delay") @mock.patch("pikepdf.Pdf.save") - def test_split_with_errors(self, mock_save_pdf, mock_consume_file): + def test_split_with_errors(self, mock_save_pdf, mock_consume_file) -> None: """ GIVEN: - Existing documents @@ -909,7 +1044,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): @mock.patch("documents.bulk_edit.group") @mock.patch("documents.tasks.consume_file.s") - def test_edit_pdf_basic_operations(self, mock_consume_file, mock_group): + def test_edit_pdf_basic_operations(self, mock_consume_file, mock_group) -> None: """ GIVEN: - Existing document @@ -928,7 +1063,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): @mock.patch("documents.bulk_edit.group") @mock.patch("documents.tasks.consume_file.s") - def test_edit_pdf_with_user_override(self, mock_consume_file, mock_group): + def test_edit_pdf_with_user_override(self, mock_consume_file, mock_group) -> None: """ GIVEN: - Existing document @@ -948,7 +1083,7 @@ class TestPDFActions(DirectoriesMixin, TestCase): @mock.patch("documents.bulk_edit.chord") @mock.patch("documents.tasks.consume_file.s") - def test_edit_pdf_with_delete_original(self, mock_consume_file, mock_chord): + def test_edit_pdf_with_delete_original(self, mock_consume_file, mock_chord) -> None: """ GIVEN: - Existing document @@ -960,10 +1095,49 @@ class TestPDFActions(DirectoriesMixin, TestCase): mock_chord.return_value.delay.return_value = None doc_ids = [self.doc2.id] operations = [{"page": 1}, {"page": 2}] + self.doc2.archive_serial_number = 250 + self.doc2.save() result = bulk_edit.edit_pdf(doc_ids, operations, delete_original=True) self.assertEqual(result, "OK") mock_chord.assert_called_once() + consume_file_args, _ = mock_consume_file.call_args + self.assertEqual(consume_file_args[1].asn, 250) + self.doc2.refresh_from_db() + self.assertIsNone(self.doc2.archive_serial_number) + + @mock.patch("documents.bulk_edit.delete.si") + @mock.patch("documents.tasks.consume_file.s") + @mock.patch("documents.bulk_edit.chord") + def test_edit_pdf_restore_on_failure( + self, + mock_chord: mock.Mock, + mock_consume_file: mock.Mock, + mock_delete_documents: mock.Mock, + ) -> None: + """ + GIVEN: + - Existing document + WHEN: + - edit_pdf is called with delete_original=True + - Error occurs when queuing chord task + THEN: + - Archive serial numbers are restored + """ + doc_ids = [self.doc2.id] + operations = [{"page": 1}] + self.doc2.archive_serial_number = 333 + self.doc2.save() + + sig = mock.Mock() + sig.apply_async.side_effect = Exception("boom") + mock_chord.return_value = sig + + with self.assertRaises(Exception): + bulk_edit.edit_pdf(doc_ids, operations, delete_original=True) + + self.doc2.refresh_from_db() + self.assertEqual(self.doc2.archive_serial_number, 333) @mock.patch("documents.tasks.consume_file.delay") def test_edit_pdf_with_update_document(self, mock_consume_delay): @@ -994,7 +1168,11 @@ class TestPDFActions(DirectoriesMixin, TestCase): @mock.patch("documents.bulk_edit.group") @mock.patch("documents.tasks.consume_file.s") - def test_edit_pdf_without_metadata(self, mock_consume_file, mock_group): + def test_edit_pdf_without_metadata( + self, + mock_consume_file: mock.Mock, + mock_group: mock.Mock, + ) -> None: """ GIVEN: - Existing document @@ -1013,7 +1191,11 @@ class TestPDFActions(DirectoriesMixin, TestCase): @mock.patch("documents.bulk_edit.group") @mock.patch("documents.tasks.consume_file.s") - def test_edit_pdf_open_failure(self, mock_consume_file, mock_group): + def test_edit_pdf_open_failure( + self, + mock_consume_file: mock.Mock, + mock_group: mock.Mock, + ) -> None: """ GIVEN: - Existing document @@ -1057,3 +1239,147 @@ class TestPDFActions(DirectoriesMixin, TestCase): bulk_edit.edit_pdf(doc_ids, operations, update_document=True) mock_group.assert_not_called() mock_consume_file.assert_not_called() + + @mock.patch("documents.bulk_edit.update_document_content_maybe_archive_file.delay") + @mock.patch("pikepdf.open") + def test_remove_password_update_document(self, mock_open, mock_update_document): + doc = self.doc1 + original_checksum = doc.checksum + + fake_pdf = mock.MagicMock() + fake_pdf.pages = [mock.Mock(), mock.Mock(), mock.Mock()] + + def save_side_effect(target_path): + Path(target_path).write_bytes(b"new pdf content") + + fake_pdf.save.side_effect = save_side_effect + mock_open.return_value.__enter__.return_value = fake_pdf + + result = bulk_edit.remove_password( + [doc.id], + password="secret", + update_document=True, + ) + + self.assertEqual(result, "OK") + mock_open.assert_called_once_with(doc.source_path, password="secret") + fake_pdf.remove_unreferenced_resources.assert_called_once() + doc.refresh_from_db() + self.assertNotEqual(doc.checksum, original_checksum) + expected_checksum = hashlib.md5(doc.source_path.read_bytes()).hexdigest() + self.assertEqual(doc.checksum, expected_checksum) + self.assertEqual(doc.page_count, len(fake_pdf.pages)) + mock_update_document.assert_called_once_with(document_id=doc.id) + + @mock.patch("documents.bulk_edit.chord") + @mock.patch("documents.bulk_edit.group") + @mock.patch("documents.tasks.consume_file.s") + @mock.patch("documents.bulk_edit.tempfile.mkdtemp") + @mock.patch("pikepdf.open") + def test_remove_password_creates_consumable_document( + self, + mock_open, + mock_mkdtemp, + mock_consume_file, + mock_group, + mock_chord, + ): + doc = self.doc2 + temp_dir = self.dirs.scratch_dir / "remove-password" + temp_dir.mkdir(parents=True, exist_ok=True) + mock_mkdtemp.return_value = str(temp_dir) + + fake_pdf = mock.MagicMock() + fake_pdf.pages = [mock.Mock(), mock.Mock()] + + def save_side_effect(target_path): + Path(target_path).write_bytes(b"password removed") + + fake_pdf.save.side_effect = save_side_effect + mock_open.return_value.__enter__.return_value = fake_pdf + mock_group.return_value.delay.return_value = None + + user = User.objects.create(username="owner") + + result = bulk_edit.remove_password( + [doc.id], + password="secret", + include_metadata=False, + update_document=False, + delete_original=False, + user=user, + ) + + self.assertEqual(result, "OK") + mock_open.assert_called_once_with(doc.source_path, password="secret") + mock_consume_file.assert_called_once() + consume_args, _ = mock_consume_file.call_args + consumable_document = consume_args[0] + overrides = consume_args[1] + expected_path = temp_dir / f"{doc.id}_unprotected.pdf" + self.assertTrue(expected_path.exists()) + self.assertEqual( + Path(consumable_document.original_file).resolve(), + expected_path.resolve(), + ) + self.assertEqual(overrides.owner_id, user.id) + mock_group.assert_called_once_with([mock_consume_file.return_value]) + mock_group.return_value.delay.assert_called_once() + mock_chord.assert_not_called() + + @mock.patch("documents.bulk_edit.delete") + @mock.patch("documents.bulk_edit.chord") + @mock.patch("documents.bulk_edit.group") + @mock.patch("documents.tasks.consume_file.s") + @mock.patch("documents.bulk_edit.tempfile.mkdtemp") + @mock.patch("pikepdf.open") + def test_remove_password_deletes_original( + self, + mock_open, + mock_mkdtemp, + mock_consume_file, + mock_group, + mock_chord, + mock_delete, + ): + doc = self.doc2 + temp_dir = self.dirs.scratch_dir / "remove-password-delete" + temp_dir.mkdir(parents=True, exist_ok=True) + mock_mkdtemp.return_value = str(temp_dir) + + fake_pdf = mock.MagicMock() + fake_pdf.pages = [mock.Mock(), mock.Mock()] + + def save_side_effect(target_path): + Path(target_path).write_bytes(b"password removed") + + fake_pdf.save.side_effect = save_side_effect + mock_open.return_value.__enter__.return_value = fake_pdf + mock_chord.return_value.delay.return_value = None + + result = bulk_edit.remove_password( + [doc.id], + password="secret", + include_metadata=False, + update_document=False, + delete_original=True, + ) + + self.assertEqual(result, "OK") + mock_open.assert_called_once_with(doc.source_path, password="secret") + mock_consume_file.assert_called_once() + mock_group.assert_not_called() + mock_chord.assert_called_once() + mock_chord.return_value.delay.assert_called_once() + mock_delete.si.assert_called_once_with([doc.id]) + + @mock.patch("pikepdf.open") + def test_remove_password_open_failure(self, mock_open): + mock_open.side_effect = RuntimeError("wrong password") + + with self.assertLogs("paperless.bulk_edit", level="ERROR") as cm: + with self.assertRaises(ValueError) as exc: + bulk_edit.remove_password([self.doc1.id], password="secret") + + self.assertIn("wrong password", str(exc.exception)) + self.assertIn("Error removing password from document", cm.output[0]) diff --git a/src/documents/tests/test_caching.py b/src/documents/tests/test_caching.py index 4c8d2ead0..d75bda3c9 100644 --- a/src/documents/tests/test_caching.py +++ b/src/documents/tests/test_caching.py @@ -3,7 +3,7 @@ import pickle from documents.caching import StoredLRUCache -def test_lru_cache_entries(): +def test_lru_cache_entries() -> None: CACHE_TTL = 1 # LRU cache with a capacity of 2 elements cache = StoredLRUCache("test_lru_cache_key", 2, backend_ttl=CACHE_TTL) @@ -28,7 +28,7 @@ def test_lru_cache_entries(): assert cache.get(1) == 1 -def test_stored_lru_cache_key_ttl(mocker): +def test_stored_lru_cache_key_ttl(mocker) -> None: mock_backend = mocker.Mock() cache = StoredLRUCache("test_key", backend=mock_backend, backend_ttl=321) diff --git a/src/documents/tests/test_checks.py b/src/documents/tests/test_checks.py index 4af05746f..b78946ba9 100644 --- a/src/documents/tests/test_checks.py +++ b/src/documents/tests/test_checks.py @@ -1,4 +1,3 @@ -import textwrap from unittest import mock from django.core.checks import Error @@ -6,61 +5,12 @@ from django.core.checks import Warning from django.test import TestCase from django.test import override_settings -from documents.checks import changed_password_check from documents.checks import filename_format_check from documents.checks import parser_check -from documents.models import Document -from documents.tests.factories import DocumentFactory class TestDocumentChecks(TestCase): - def test_changed_password_check_empty_db(self): - self.assertListEqual(changed_password_check(None), []) - - def test_changed_password_check_no_encryption(self): - DocumentFactory.create(storage_type=Document.STORAGE_TYPE_UNENCRYPTED) - self.assertListEqual(changed_password_check(None), []) - - def test_encrypted_missing_passphrase(self): - DocumentFactory.create(storage_type=Document.STORAGE_TYPE_GPG) - msgs = changed_password_check(None) - self.assertEqual(len(msgs), 1) - msg_text = msgs[0].msg - self.assertEqual( - msg_text, - "The database contains encrypted documents but no password is set.", - ) - - @override_settings( - PASSPHRASE="test", - ) - @mock.patch("paperless.db.GnuPG.decrypted") - @mock.patch("documents.models.Document.source_file") - def test_encrypted_decrypt_fails(self, mock_decrypted, mock_source_file): - mock_decrypted.return_value = None - mock_source_file.return_value = b"" - - DocumentFactory.create(storage_type=Document.STORAGE_TYPE_GPG) - - msgs = changed_password_check(None) - - self.assertEqual(len(msgs), 1) - msg_text = msgs[0].msg - self.assertEqual( - msg_text, - textwrap.dedent( - """ - The current password doesn't match the password of the - existing documents. - - If you intend to change your password, you must first export - all of the old documents, start fresh with the new password - and then re-import them." - """, - ), - ) - - def test_parser_check(self): + def test_parser_check(self) -> None: self.assertEqual(parser_check(None), []) with mock.patch("documents.checks.document_consumer_declaration.send") as m: @@ -76,7 +26,7 @@ class TestDocumentChecks(TestCase): ], ) - def test_filename_format_check(self): + def test_filename_format_check(self) -> None: self.assertEqual(filename_format_check(None), []) with override_settings(FILENAME_FORMAT="{created}/{title}"): diff --git a/src/documents/tests/test_classifier.py b/src/documents/tests/test_classifier.py index 4f2ad85f5..f04152ae0 100644 --- a/src/documents/tests/test_classifier.py +++ b/src/documents/tests/test_classifier.py @@ -31,14 +31,14 @@ def dummy_preprocess(content: str, **kwargs): class TestClassifier(DirectoriesMixin, TestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.classifier = DocumentClassifier() self.classifier.preprocess_content = mock.MagicMock( side_effect=dummy_preprocess, ) - def generate_test_data(self): + def generate_test_data(self) -> None: self.c1 = Correspondent.objects.create( name="c1", matching_algorithm=Correspondent.MATCH_AUTO, @@ -119,7 +119,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.doc2.tags.add(self.t3) self.doc_inbox.tags.add(self.t2) - def generate_train_and_save(self): + def generate_train_and_save(self) -> None: """ Generates the training data, trains and saves the updated pickle file. This ensures the test is using the same scikit learn version @@ -129,7 +129,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.classifier.train() self.classifier.save() - def test_no_training_data(self): + def test_no_training_data(self) -> None: """ GIVEN: - No documents exist to train @@ -141,7 +141,7 @@ class TestClassifier(DirectoriesMixin, TestCase): with self.assertRaisesMessage(ValueError, "No training data available."): self.classifier.train() - def test_no_non_inbox_tags(self): + def test_no_non_inbox_tags(self) -> None: """ GIVEN: - No documents without an inbox tag exist @@ -168,7 +168,7 @@ class TestClassifier(DirectoriesMixin, TestCase): with self.assertRaisesMessage(ValueError, "No training data available."): self.classifier.train() - def testEmpty(self): + def testEmpty(self) -> None: """ GIVEN: - A document exists @@ -189,7 +189,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertIsNone(self.classifier.predict_document_type("")) self.assertIsNone(self.classifier.predict_correspondent("")) - def testTrain(self): + def testTrain(self) -> None: """ GIVEN: - Test data @@ -211,7 +211,7 @@ class TestClassifier(DirectoriesMixin, TestCase): [self.t1.pk, self.t3.pk], ) - def testPredict(self): + def testPredict(self) -> None: """ GIVEN: - Classifier trained against test data @@ -265,7 +265,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertEqual(mock_preprocess_content.call_count, 2) self.assertEqual(mock_transform.call_count, 2) - def test_no_retrain_if_no_change(self): + def test_no_retrain_if_no_change(self) -> None: """ GIVEN: - Classifier trained with current data @@ -280,7 +280,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertTrue(self.classifier.train()) self.assertFalse(self.classifier.train()) - def test_retrain_if_change(self): + def test_retrain_if_change(self) -> None: """ GIVEN: - Classifier trained with current data @@ -300,7 +300,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertTrue(self.classifier.train()) - def test_retrain_if_auto_match_set_changed(self): + def test_retrain_if_auto_match_set_changed(self) -> None: """ GIVEN: - Classifier trained with current data @@ -322,7 +322,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertTrue(self.classifier.train()) - def testVersionIncreased(self): + def testVersionIncreased(self) -> None: """ GIVEN: - Existing classifier model saved at a version @@ -348,7 +348,7 @@ class TestClassifier(DirectoriesMixin, TestCase): # assure that we can load the classifier after saving it. classifier2.load() - def testSaveClassifier(self): + def testSaveClassifier(self) -> None: self.generate_train_and_save() new_classifier = DocumentClassifier() @@ -357,7 +357,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertFalse(new_classifier.train()) - def test_load_and_classify(self): + def test_load_and_classify(self) -> None: self.generate_train_and_save() new_classifier = DocumentClassifier() @@ -367,7 +367,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertCountEqual(new_classifier.predict_tags(self.doc2.content), [45, 12]) @mock.patch("documents.classifier.pickle.load") - def test_load_corrupt_file(self, patched_pickle_load: mock.MagicMock): + def test_load_corrupt_file(self, patched_pickle_load: mock.MagicMock) -> None: """ GIVEN: - Corrupted classifier pickle file @@ -394,7 +394,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertIsNone(load_classifier()) patched_pickle_load.assert_called() - def test_load_new_scikit_learn_version(self): + def test_load_new_scikit_learn_version(self) -> None: """ GIVEN: - classifier pickle file created with a different scikit-learn version @@ -409,7 +409,7 @@ class TestClassifier(DirectoriesMixin, TestCase): # Need to rethink how to pass the load through to a file with a single # old model? - def test_one_correspondent_predict(self): + def test_one_correspondent_predict(self) -> None: c1 = Correspondent.objects.create( name="c1", matching_algorithm=Correspondent.MATCH_AUTO, @@ -424,7 +424,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.classifier.train() self.assertEqual(self.classifier.predict_correspondent(doc1.content), c1.pk) - def test_one_correspondent_predict_manydocs(self): + def test_one_correspondent_predict_manydocs(self) -> None: c1 = Correspondent.objects.create( name="c1", matching_algorithm=Correspondent.MATCH_AUTO, @@ -445,7 +445,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertEqual(self.classifier.predict_correspondent(doc1.content), c1.pk) self.assertIsNone(self.classifier.predict_correspondent(doc2.content)) - def test_one_type_predict(self): + def test_one_type_predict(self) -> None: dt = DocumentType.objects.create( name="dt", matching_algorithm=DocumentType.MATCH_AUTO, @@ -461,7 +461,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.classifier.train() self.assertEqual(self.classifier.predict_document_type(doc1.content), dt.pk) - def test_one_type_predict_manydocs(self): + def test_one_type_predict_manydocs(self) -> None: dt = DocumentType.objects.create( name="dt", matching_algorithm=DocumentType.MATCH_AUTO, @@ -484,7 +484,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertEqual(self.classifier.predict_document_type(doc1.content), dt.pk) self.assertIsNone(self.classifier.predict_document_type(doc2.content)) - def test_one_path_predict(self): + def test_one_path_predict(self) -> None: sp = StoragePath.objects.create( name="sp", matching_algorithm=StoragePath.MATCH_AUTO, @@ -500,7 +500,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.classifier.train() self.assertEqual(self.classifier.predict_storage_path(doc1.content), sp.pk) - def test_one_path_predict_manydocs(self): + def test_one_path_predict_manydocs(self) -> None: sp = StoragePath.objects.create( name="sp", matching_algorithm=StoragePath.MATCH_AUTO, @@ -523,7 +523,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertEqual(self.classifier.predict_storage_path(doc1.content), sp.pk) self.assertIsNone(self.classifier.predict_storage_path(doc2.content)) - def test_one_tag_predict(self): + def test_one_tag_predict(self) -> None: t1 = Tag.objects.create(name="t1", matching_algorithm=Tag.MATCH_AUTO, pk=12) doc1 = Document.objects.create( @@ -536,7 +536,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.classifier.train() self.assertListEqual(self.classifier.predict_tags(doc1.content), [t1.pk]) - def test_one_tag_predict_unassigned(self): + def test_one_tag_predict_unassigned(self) -> None: Tag.objects.create(name="t1", matching_algorithm=Tag.MATCH_AUTO, pk=12) doc1 = Document.objects.create( @@ -548,7 +548,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.classifier.train() self.assertListEqual(self.classifier.predict_tags(doc1.content), []) - def test_two_tags_predict_singledoc(self): + def test_two_tags_predict_singledoc(self) -> None: t1 = Tag.objects.create(name="t1", matching_algorithm=Tag.MATCH_AUTO, pk=12) t2 = Tag.objects.create(name="t2", matching_algorithm=Tag.MATCH_AUTO, pk=121) @@ -563,7 +563,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.classifier.train() self.assertListEqual(self.classifier.predict_tags(doc4.content), [t1.pk, t2.pk]) - def test_two_tags_predict(self): + def test_two_tags_predict(self) -> None: t1 = Tag.objects.create(name="t1", matching_algorithm=Tag.MATCH_AUTO, pk=12) t2 = Tag.objects.create(name="t2", matching_algorithm=Tag.MATCH_AUTO, pk=121) @@ -599,7 +599,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertListEqual(self.classifier.predict_tags(doc3.content), []) self.assertListEqual(self.classifier.predict_tags(doc4.content), [t1.pk, t2.pk]) - def test_one_tag_predict_multi(self): + def test_one_tag_predict_multi(self) -> None: t1 = Tag.objects.create(name="t1", matching_algorithm=Tag.MATCH_AUTO, pk=12) doc1 = Document.objects.create( @@ -619,7 +619,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertListEqual(self.classifier.predict_tags(doc1.content), [t1.pk]) self.assertListEqual(self.classifier.predict_tags(doc2.content), [t1.pk]) - def test_one_tag_predict_multi_2(self): + def test_one_tag_predict_multi_2(self) -> None: t1 = Tag.objects.create(name="t1", matching_algorithm=Tag.MATCH_AUTO, pk=12) doc1 = Document.objects.create( @@ -638,12 +638,12 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertListEqual(self.classifier.predict_tags(doc1.content), [t1.pk]) self.assertListEqual(self.classifier.predict_tags(doc2.content), []) - def test_load_classifier_not_exists(self): + def test_load_classifier_not_exists(self) -> None: self.assertFalse(Path(settings.MODEL_FILE).exists()) self.assertIsNone(load_classifier()) @mock.patch("documents.classifier.DocumentClassifier.load") - def test_load_classifier(self, load): + def test_load_classifier(self, load) -> None: Path(settings.MODEL_FILE).touch() self.assertIsNotNone(load_classifier()) load.assert_called_once() @@ -659,7 +659,7 @@ class TestClassifier(DirectoriesMixin, TestCase): @pytest.mark.skip( reason="Disabled caching due to high memory usage - need to investigate.", ) - def test_load_classifier_cached(self): + def test_load_classifier_cached(self) -> None: classifier = load_classifier() self.assertIsNotNone(classifier) @@ -668,7 +668,7 @@ class TestClassifier(DirectoriesMixin, TestCase): load.assert_not_called() @mock.patch("documents.classifier.DocumentClassifier.load") - def test_load_classifier_incompatible_version(self, load): + def test_load_classifier_incompatible_version(self, load) -> None: Path(settings.MODEL_FILE).touch() self.assertTrue(Path(settings.MODEL_FILE).exists()) @@ -677,7 +677,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertFalse(Path(settings.MODEL_FILE).exists()) @mock.patch("documents.classifier.DocumentClassifier.load") - def test_load_classifier_os_error(self, load): + def test_load_classifier_os_error(self, load) -> None: Path(settings.MODEL_FILE).touch() self.assertTrue(Path(settings.MODEL_FILE).exists()) @@ -685,7 +685,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertIsNone(load_classifier()) self.assertTrue(Path(settings.MODEL_FILE).exists()) - def test_load_old_classifier_version(self): + def test_load_old_classifier_version(self) -> None: shutil.copy( Path(__file__).parent / "data" / "v1.17.4.model.pickle", self.dirs.scratch_dir, @@ -697,7 +697,7 @@ class TestClassifier(DirectoriesMixin, TestCase): self.assertIsNone(classifier) @mock.patch("documents.classifier.DocumentClassifier.load") - def test_load_classifier_raise_exception(self, mock_load): + def test_load_classifier_raise_exception(self, mock_load) -> None: Path(settings.MODEL_FILE).touch() mock_load.side_effect = IncompatibleClassifierVersionError("Dummy Error") with self.assertRaises(IncompatibleClassifierVersionError): @@ -719,7 +719,7 @@ class TestClassifier(DirectoriesMixin, TestCase): load_classifier(raise_exception=True) -def test_preprocess_content(): +def test_preprocess_content() -> None: """ GIVEN: - Advanced text processing is enabled (default) @@ -739,7 +739,7 @@ def test_preprocess_content(): assert result == expected_preprocess_content -def test_preprocess_content_nltk_disabled(): +def test_preprocess_content_nltk_disabled() -> None: """ GIVEN: - Advanced text processing is disabled @@ -760,7 +760,7 @@ def test_preprocess_content_nltk_disabled(): assert result == expected_preprocess_content -def test_preprocess_content_nltk_load_fail(mocker): +def test_preprocess_content_nltk_load_fail(mocker) -> None: """ GIVEN: - NLTK stop words fail to load diff --git a/src/documents/tests/test_consumer.py b/src/documents/tests/test_consumer.py index 6387b5e95..717cffd6e 100644 --- a/src/documents/tests/test_consumer.py +++ b/src/documents/tests/test_consumer.py @@ -14,6 +14,7 @@ from django.test import override_settings from django.utils import timezone from guardian.core import ObjectPermissionChecker +from documents.barcodes import BarcodePlugin from documents.consumer import ConsumerError from documents.data_models import DocumentMetadataOverrides from documents.data_models import DocumentSource @@ -35,7 +36,7 @@ from paperless_mail.parsers import MailDocumentParser class _BaseTestParser(DocumentParser): - def get_settings(self): + def get_settings(self) -> None: """ This parser does not implement additional settings yet """ @@ -43,7 +44,7 @@ class _BaseTestParser(DocumentParser): class DummyParser(_BaseTestParser): - def __init__(self, logging_group, scratch_dir, archive_path): + def __init__(self, logging_group, scratch_dir, archive_path) -> None: super().__init__(logging_group, None) _, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=scratch_dir) self.archive_path = archive_path @@ -51,7 +52,7 @@ class DummyParser(_BaseTestParser): def get_thumbnail(self, document_path, mime_type, file_name=None): return self.fake_thumb - def parse(self, document_path, mime_type, file_name=None): + def parse(self, document_path, mime_type, file_name=None) -> None: self.text = "The Text" @@ -59,18 +60,18 @@ class CopyParser(_BaseTestParser): def get_thumbnail(self, document_path, mime_type, file_name=None): return self.fake_thumb - def __init__(self, logging_group, progress_callback=None): + def __init__(self, logging_group, progress_callback=None) -> None: super().__init__(logging_group, progress_callback) _, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=self.tempdir) - def parse(self, document_path, mime_type, file_name=None): + def parse(self, document_path, mime_type, file_name=None) -> None: self.text = "The text" self.archive_path = Path(self.tempdir / "archive.pdf") shutil.copy(document_path, self.archive_path) class FaultyParser(_BaseTestParser): - def __init__(self, logging_group, scratch_dir): + def __init__(self, logging_group, scratch_dir) -> None: super().__init__(logging_group) _, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=scratch_dir) @@ -82,7 +83,7 @@ class FaultyParser(_BaseTestParser): class FaultyGenericExceptionParser(_BaseTestParser): - def __init__(self, logging_group, scratch_dir): + def __init__(self, logging_group, scratch_dir) -> None: super().__init__(logging_group) _, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=scratch_dir) @@ -127,7 +128,7 @@ class TestConsumer( first_progress_max=100, last_progress=100, last_progress_max=100, - ): + ) -> None: self.assertGreaterEqual(len(self.status.payloads), 2) payload = self.status.payloads[0] @@ -158,7 +159,7 @@ class TestConsumer( ): return FaultyGenericExceptionParser(logging_group, self.dirs.scratch_dir) - def setUp(self): + def setUp(self) -> None: super().setUp() patcher = mock.patch("documents.parsers.document_consumer_declaration.send") @@ -208,7 +209,7 @@ class TestConsumer( return dst @override_settings(FILENAME_FORMAT=None, TIME_ZONE="America/Chicago") - def testNormalOperation(self): + def testNormalOperation(self) -> None: filename = self.get_test_file() # Get the local time, as an aware datetime @@ -250,7 +251,7 @@ class TestConsumer( self.assertEqual(document.created.day, rough_create_date_local.day) @override_settings(FILENAME_FORMAT=None) - def testDeleteMacFiles(self): + def testDeleteMacFiles(self) -> None: # https://github.com/jonaswinkler/paperless-ng/discussions/1037 filename = self.get_test_file() @@ -272,7 +273,7 @@ class TestConsumer( self.assertIsNotFile(shadow_file) self.assertIsNotFile(filename) - def testOverrideFilename(self): + def testOverrideFilename(self) -> None: filename = self.get_test_file() override_filename = "Statement for November.pdf" @@ -290,7 +291,7 @@ class TestConsumer( self._assert_first_last_send_progress() - def testOverrideTitle(self): + def testOverrideTitle(self) -> None: with self.get_consumer( self.get_test_file(), DocumentMetadataOverrides(title="Override Title"), @@ -304,7 +305,7 @@ class TestConsumer( self.assertEqual(document.title, "Override Title") self._assert_first_last_send_progress() - def testOverrideCorrespondent(self): + def testOverrideCorrespondent(self) -> None: c = Correspondent.objects.create(name="test") with self.get_consumer( @@ -320,7 +321,7 @@ class TestConsumer( self.assertEqual(document.correspondent.id, c.id) self._assert_first_last_send_progress() - def testOverrideDocumentType(self): + def testOverrideDocumentType(self) -> None: dt = DocumentType.objects.create(name="test") with self.get_consumer( @@ -334,7 +335,7 @@ class TestConsumer( self.assertEqual(document.document_type.id, dt.id) self._assert_first_last_send_progress() - def testOverrideStoragePath(self): + def testOverrideStoragePath(self) -> None: sp = StoragePath.objects.create(name="test") with self.get_consumer( @@ -348,7 +349,7 @@ class TestConsumer( self.assertEqual(document.storage_path.id, sp.id) self._assert_first_last_send_progress() - def testOverrideTags(self): + def testOverrideTags(self) -> None: t1 = Tag.objects.create(name="t1") t2 = Tag.objects.create(name="t2") t3 = Tag.objects.create(name="t3") @@ -366,7 +367,7 @@ class TestConsumer( self.assertIn(t3, document.tags.all()) self._assert_first_last_send_progress() - def testOverrideCustomFields(self): + def testOverrideCustomFields(self) -> None: cf1 = CustomField.objects.create(name="Custom Field 1", data_type="string") cf2 = CustomField.objects.create( name="Custom Field 2", @@ -400,7 +401,7 @@ class TestConsumer( ) self._assert_first_last_send_progress() - def testOverrideAsn(self): + def testOverrideAsn(self) -> None: with self.get_consumer( self.get_test_file(), DocumentMetadataOverrides(asn=123), @@ -412,7 +413,7 @@ class TestConsumer( self.assertEqual(document.archive_serial_number, 123) self._assert_first_last_send_progress() - def testOverrideTitlePlaceholders(self): + def testOverrideTitlePlaceholders(self) -> None: c = Correspondent.objects.create(name="Correspondent Name") dt = DocumentType.objects.create(name="DocType Name") @@ -432,7 +433,7 @@ class TestConsumer( self.assertEqual(document.title, f"{c.name}{dt.name} {now.strftime('%m-%y')}") self._assert_first_last_send_progress() - def testOverrideOwner(self): + def testOverrideOwner(self) -> None: testuser = User.objects.create(username="testuser") with self.get_consumer( @@ -446,7 +447,7 @@ class TestConsumer( self.assertEqual(document.owner, testuser) self._assert_first_last_send_progress() - def testOverridePermissions(self): + def testOverridePermissions(self) -> None: testuser = User.objects.create(username="testuser") testgroup = Group.objects.create(name="testgroup") @@ -467,49 +468,50 @@ class TestConsumer( self.assertTrue(group_checker.has_perm("view_document", document)) self._assert_first_last_send_progress() - def testNotAFile(self): + def testNotAFile(self) -> None: with self.assertRaisesMessage(ConsumerError, "File not found"): with self.get_consumer(Path("non-existing-file")) as consumer: consumer.run() self._assert_first_last_send_progress(last_status="FAILED") - def testDuplicates1(self): + def testDuplicates1(self) -> None: with self.get_consumer(self.get_test_file()) as consumer: consumer.run() - with self.assertRaisesMessage(ConsumerError, "It is a duplicate"): - with self.get_consumer(self.get_test_file()) as consumer: - consumer.run() - - self._assert_first_last_send_progress(last_status="FAILED") - - def testDuplicates2(self): with self.get_consumer(self.get_test_file()) as consumer: consumer.run() - with self.assertRaisesMessage(ConsumerError, "It is a duplicate"): - with self.get_consumer(self.get_test_archive_file()) as consumer: - consumer.run() + self.assertEqual(Document.objects.count(), 2) + self._assert_first_last_send_progress() - self._assert_first_last_send_progress(last_status="FAILED") + def testDuplicates2(self) -> None: + with self.get_consumer(self.get_test_file()) as consumer: + consumer.run() - def testDuplicates3(self): + with self.get_consumer(self.get_test_archive_file()) as consumer: + consumer.run() + + self.assertEqual(Document.objects.count(), 2) + self._assert_first_last_send_progress() + + def testDuplicates3(self) -> None: with self.get_consumer(self.get_test_archive_file()) as consumer: consumer.run() with self.get_consumer(self.get_test_file()) as consumer: consumer.run() - def testDuplicateInTrash(self): + def testDuplicateInTrash(self) -> None: with self.get_consumer(self.get_test_file()) as consumer: consumer.run() Document.objects.all().delete() - with self.assertRaisesMessage(ConsumerError, "document is in the trash"): - with self.get_consumer(self.get_test_file()) as consumer: - consumer.run() + with self.get_consumer(self.get_test_file()) as consumer: + consumer.run() - def testAsnExists(self): + self.assertEqual(Document.objects.count(), 1) + + def testAsnExists(self) -> None: with self.get_consumer( self.get_test_file(), DocumentMetadataOverrides(asn=123), @@ -523,7 +525,7 @@ class TestConsumer( ) as consumer: consumer.run() - def testAsnExistsInTrash(self): + def testAsnExistsInTrash(self) -> None: with self.get_consumer( self.get_test_file(), DocumentMetadataOverrides(asn=123), @@ -541,7 +543,7 @@ class TestConsumer( consumer.run() @mock.patch("documents.parsers.document_consumer_declaration.send") - def testNoParsers(self, m): + def testNoParsers(self, m) -> None: m.return_value = [] with self.assertRaisesMessage( @@ -554,7 +556,7 @@ class TestConsumer( self._assert_first_last_send_progress(last_status="FAILED") @mock.patch("documents.parsers.document_consumer_declaration.send") - def testFaultyParser(self, m): + def testFaultyParser(self, m) -> None: m.return_value = [ ( None, @@ -576,7 +578,7 @@ class TestConsumer( self._assert_first_last_send_progress(last_status="FAILED") @mock.patch("documents.parsers.document_consumer_declaration.send") - def testGenericParserException(self, m): + def testGenericParserException(self, m) -> None: m.return_value = [ ( None, @@ -598,7 +600,7 @@ class TestConsumer( self._assert_first_last_send_progress(last_status="FAILED") @mock.patch("documents.consumer.ConsumerPlugin._write") - def testPostSaveError(self, m): + def testPostSaveError(self, m) -> None: filename = self.get_test_file() m.side_effect = OSError("NO.") @@ -618,7 +620,7 @@ class TestConsumer( self.assertEqual(Document.objects.all().count(), 0) @override_settings(FILENAME_FORMAT="{correspondent}/{title}") - def testFilenameHandling(self): + def testFilenameHandling(self) -> None: with self.get_consumer( self.get_test_file(), DocumentMetadataOverrides(title="new docs"), @@ -635,7 +637,7 @@ class TestConsumer( @override_settings(FILENAME_FORMAT="{correspondent}/{title}") @mock.patch("documents.signals.handlers.generate_unique_filename") - def testFilenameHandlingUnstableFormat(self, m): + def testFilenameHandlingUnstableFormat(self, m) -> None: filenames = ["this", "that", "now this", "i cannot decide"] def get_filename(): @@ -663,7 +665,7 @@ class TestConsumer( self._assert_first_last_send_progress() @mock.patch("documents.consumer.load_classifier") - def testClassifyDocument(self, m): + def testClassifyDocument(self, m) -> None: correspondent = Correspondent.objects.create( name="test", matching_algorithm=Correspondent.MATCH_AUTO, @@ -693,7 +695,7 @@ class TestConsumer( self._assert_first_last_send_progress() @override_settings(CONSUMER_DELETE_DUPLICATES=True) - def test_delete_duplicate(self): + def test_delete_duplicate(self) -> None: dst = self.get_test_file() self.assertIsFile(dst) @@ -710,15 +712,48 @@ class TestConsumer( dst = self.get_test_file() self.assertIsFile(dst) - with self.assertRaises(ConsumerError): + expected_message = ( + f"{dst.name}: Not consuming {dst.name}: " + f"It is a duplicate of {document.title} (#{document.pk})" + ) + + with self.assertRaisesMessage(ConsumerError, expected_message): with self.get_consumer(dst) as consumer: consumer.run() self.assertIsNotFile(dst) - self._assert_first_last_send_progress(last_status="FAILED") + self.assertEqual(Document.objects.count(), 1) + self._assert_first_last_send_progress(last_status=ProgressStatusOptions.FAILED) + + @override_settings(CONSUMER_DELETE_DUPLICATES=True) + def test_delete_duplicate_in_trash(self) -> None: + dst = self.get_test_file() + with self.get_consumer(dst) as consumer: + consumer.run() + + # Move the existing document to trash + document = Document.objects.first() + document.delete() + + dst = self.get_test_file() + self.assertIsFile(dst) + + expected_message = ( + f"{dst.name}: Not consuming {dst.name}: " + f"It is a duplicate of {document.title} (#{document.pk})" + f" Note: existing document is in the trash." + ) + + with self.assertRaisesMessage(ConsumerError, expected_message): + with self.get_consumer(dst) as consumer: + consumer.run() + + self.assertIsNotFile(dst) + self.assertEqual(Document.global_objects.count(), 1) + self.assertEqual(Document.objects.count(), 0) @override_settings(CONSUMER_DELETE_DUPLICATES=False) - def test_no_delete_duplicate(self): + def test_no_delete_duplicate(self) -> None: dst = self.get_test_file() self.assertIsFile(dst) @@ -735,19 +770,16 @@ class TestConsumer( dst = self.get_test_file() self.assertIsFile(dst) - with self.assertRaisesRegex( - ConsumerError, - r"sample\.pdf: Not consuming sample\.pdf: It is a duplicate of sample \(#\d+\)", - ): - with self.get_consumer(dst) as consumer: - consumer.run() + with self.get_consumer(dst) as consumer: + consumer.run() - self.assertIsFile(dst) - self._assert_first_last_send_progress(last_status="FAILED") + self.assertIsNotFile(dst) + self.assertEqual(Document.objects.count(), 2) + self._assert_first_last_send_progress() @override_settings(FILENAME_FORMAT="{title}") @mock.patch("documents.parsers.document_consumer_declaration.send") - def test_similar_filenames(self, m): + def test_similar_filenames(self, m) -> None: shutil.copy( Path(__file__).parent / "samples" / "simple.pdf", settings.CONSUMPTION_DIR / "simple.pdf", @@ -798,7 +830,7 @@ class TestConsumer( sanity_check() @mock.patch("documents.consumer.run_subprocess") - def test_try_to_clean_invalid_pdf(self, m): + def test_try_to_clean_invalid_pdf(self, m) -> None: shutil.copy( Path(__file__).parent / "samples" / "invalid_pdf.pdf", settings.CONSUMPTION_DIR / "invalid_pdf.pdf", @@ -826,7 +858,7 @@ class TestConsumer( mock_consumer_declaration_send: mock.Mock, mock_mail_parser_parse: mock.Mock, mock_mailrule_get: mock.Mock, - ): + ) -> None: """ GIVEN: - A mail document from a mail rule @@ -874,10 +906,10 @@ class TestConsumer( @mock.patch("documents.consumer.magic.from_file", fake_magic_from_file) class TestConsumerCreatedDate(DirectoriesMixin, GetConsumerMixin, TestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() - def test_consume_date_from_content(self): + def test_consume_date_from_content(self) -> None: """ GIVEN: - File content with date in DMY (default) format @@ -906,7 +938,7 @@ class TestConsumerCreatedDate(DirectoriesMixin, GetConsumerMixin, TestCase): ) @override_settings(FILENAME_DATE_ORDER="YMD") - def test_consume_date_from_filename(self): + def test_consume_date_from_filename(self) -> None: """ GIVEN: - File content with date in DMY (default) format @@ -935,7 +967,7 @@ class TestConsumerCreatedDate(DirectoriesMixin, GetConsumerMixin, TestCase): datetime.date(2022, 2, 1), ) - def test_consume_date_filename_date_use_content(self): + def test_consume_date_filename_date_use_content(self) -> None: """ GIVEN: - File content with date in DMY (default) format @@ -968,7 +1000,7 @@ class TestConsumerCreatedDate(DirectoriesMixin, GetConsumerMixin, TestCase): @override_settings( IGNORE_DATES=(datetime.date(2010, 12, 13), datetime.date(2011, 11, 12)), ) - def test_consume_date_use_content_with_ignore(self): + def test_consume_date_use_content_with_ignore(self) -> None: """ GIVEN: - File content with dates in DMY (default) format @@ -1013,20 +1045,20 @@ class PreConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase): @mock.patch("documents.consumer.run_subprocess") @override_settings(PRE_CONSUME_SCRIPT=None) - def test_no_pre_consume_script(self, m): + def test_no_pre_consume_script(self, m) -> None: with self.get_consumer(self.test_file) as c: c.run() m.assert_not_called() @mock.patch("documents.consumer.run_subprocess") @override_settings(PRE_CONSUME_SCRIPT="does-not-exist") - def test_pre_consume_script_not_found(self, m): + def test_pre_consume_script_not_found(self, m) -> None: with self.get_consumer(self.test_file) as c: self.assertRaises(ConsumerError, c.run) m.assert_not_called() @mock.patch("documents.consumer.run_subprocess") - def test_pre_consume_script(self, m): + def test_pre_consume_script(self, m) -> None: with tempfile.NamedTemporaryFile() as script: with override_settings(PRE_CONSUME_SCRIPT=script.name): with self.get_consumer(self.test_file) as c: @@ -1049,7 +1081,7 @@ class PreConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase): } self.assertDictEqual(environment, {**environment, **subset}) - def test_script_with_output(self): + def test_script_with_output(self) -> None: """ GIVEN: - A script which outputs to stdout and stderr @@ -1082,7 +1114,7 @@ class PreConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase): cm.output, ) - def test_script_exit_non_zero(self): + def test_script_exit_non_zero(self) -> None: """ GIVEN: - A script which exits with a non-zero exit code @@ -1124,7 +1156,7 @@ class PostConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase): @mock.patch("documents.consumer.run_subprocess") @override_settings(POST_CONSUME_SCRIPT=None) - def test_no_post_consume_script(self, m): + def test_no_post_consume_script(self, m) -> None: doc = Document.objects.create(title="Test", mime_type="application/pdf") tag1 = Tag.objects.create(name="a") tag2 = Tag.objects.create(name="b") @@ -1136,7 +1168,7 @@ class PostConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase): m.assert_not_called() @override_settings(POST_CONSUME_SCRIPT="does-not-exist") - def test_post_consume_script_not_found(self): + def test_post_consume_script_not_found(self) -> None: doc = Document.objects.create(title="Test", mime_type="application/pdf") with self.get_consumer(self.test_file) as consumer: @@ -1147,7 +1179,7 @@ class PostConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase): consumer.run_post_consume_script(doc) @mock.patch("documents.consumer.run_subprocess") - def test_post_consume_script_simple(self, m): + def test_post_consume_script_simple(self, m) -> None: with tempfile.NamedTemporaryFile() as script: with override_settings(POST_CONSUME_SCRIPT=script.name): doc = Document.objects.create(title="Test", mime_type="application/pdf") @@ -1158,7 +1190,7 @@ class PostConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase): m.assert_called_once() @mock.patch("documents.consumer.run_subprocess") - def test_post_consume_script_with_correspondent_and_type(self, m): + def test_post_consume_script_with_correspondent_and_type(self, m) -> None: with tempfile.NamedTemporaryFile() as script: with override_settings(POST_CONSUME_SCRIPT=script.name): c = Correspondent.objects.create(name="my_bank") @@ -1205,7 +1237,7 @@ class PostConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase): self.assertDictEqual(environment, {**environment, **subset}) - def test_script_exit_non_zero(self): + def test_script_exit_non_zero(self) -> None: """ GIVEN: - A script which exits with a non-zero exit code @@ -1232,3 +1264,46 @@ class PostConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase): r"sample\.pdf: Error while executing post-consume script: Command '\[.*\]' returned non-zero exit status \d+\.", ): consumer.run_post_consume_script(doc) + + +class TestMetadataOverrides(TestCase): + def test_update_skip_asn_if_exists(self) -> None: + base = DocumentMetadataOverrides() + incoming = DocumentMetadataOverrides(skip_asn_if_exists=True) + base.update(incoming) + self.assertTrue(base.skip_asn_if_exists) + + +class TestBarcodeApplyDetectedASN(TestCase): + """ + GIVEN: + - Existing Documents with ASN 123 + WHEN: + - A BarcodePlugin which detected an ASN + THEN: + - If skip_asn_if_exists is set, and ASN exists, do not set ASN + - If skip_asn_if_exists is set, and ASN does not exist, set ASN + """ + + def test_apply_detected_asn_skips_existing_when_flag_set(self) -> None: + doc = Document.objects.create( + checksum="X1", + title="D1", + archive_serial_number=123, + ) + metadata = DocumentMetadataOverrides(skip_asn_if_exists=True) + plugin = BarcodePlugin( + input_doc=mock.Mock(), + metadata=metadata, + status_mgr=mock.Mock(), + base_tmp_dir=Path(tempfile.gettempdir()), + task_id="test-task", + ) + + plugin._apply_detected_asn(123) + self.assertIsNone(plugin.metadata.asn) + + doc.hard_delete() + + plugin._apply_detected_asn(123) + self.assertEqual(plugin.metadata.asn, 123) diff --git a/src/documents/tests/test_date_parsing.py b/src/documents/tests/test_date_parsing.py deleted file mode 100644 index f565a9544..000000000 --- a/src/documents/tests/test_date_parsing.py +++ /dev/null @@ -1,538 +0,0 @@ -import datetime -from zoneinfo import ZoneInfo - -import pytest -from pytest_django.fixtures import SettingsWrapper - -from documents.parsers import parse_date -from documents.parsers import parse_date_generator - - -@pytest.mark.django_db() -class TestDate: - def test_date_format_1(self): - text = "lorem ipsum 130218 lorem ipsum" - assert parse_date("", text) is None - - def test_date_format_2(self): - text = "lorem ipsum 2018 lorem ipsum" - assert parse_date("", text) is None - - def test_date_format_3(self): - text = "lorem ipsum 20180213 lorem ipsum" - assert parse_date("", text) is None - - def test_date_format_4(self, settings_timezone: ZoneInfo): - text = "lorem ipsum 13.02.2018 lorem ipsum" - date = parse_date("", text) - assert date == datetime.datetime(2018, 2, 13, 0, 0, tzinfo=settings_timezone) - - def test_date_format_5(self, settings_timezone: ZoneInfo): - text = "lorem ipsum 130218, 2018, 20180213 and lorem 13.02.2018 lorem ipsum" - date = parse_date("", text) - assert date == datetime.datetime(2018, 2, 13, 0, 0, tzinfo=settings_timezone) - - def test_date_format_6(self): - text = ( - "lorem ipsum\n" - "Wohnort\n" - "3100\n" - "IBAN\n" - "AT87 4534\n" - "1234\n" - "1234 5678\n" - "BIC\n" - "lorem ipsum" - ) - assert parse_date("", text) is None - - def test_date_format_7( - self, - settings: SettingsWrapper, - settings_timezone: ZoneInfo, - ): - settings.DATE_PARSER_LANGUAGES = ["de"] - text = "lorem ipsum\nMärz 2019\nlorem ipsum" - date = parse_date("", text) - assert date == datetime.datetime(2019, 3, 1, 0, 0, tzinfo=settings_timezone) - - def test_date_format_8( - self, - settings: SettingsWrapper, - settings_timezone: ZoneInfo, - ): - settings.DATE_PARSER_LANGUAGES = ["de"] - text = ( - "lorem ipsum\n" - "Wohnort\n" - "3100\n" - "IBAN\n" - "AT87 4534\n" - "1234\n" - "1234 5678\n" - "BIC\n" - "lorem ipsum\n" - "März 2020" - ) - assert parse_date("", text) == datetime.datetime( - 2020, - 3, - 1, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_9( - self, - settings: SettingsWrapper, - settings_timezone: ZoneInfo, - ): - settings.DATE_PARSER_LANGUAGES = ["de"] - text = "lorem ipsum\n27. Nullmonth 2020\nMärz 2020\nlorem ipsum" - assert parse_date("", text) == datetime.datetime( - 2020, - 3, - 1, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_10(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 22-MAR-2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 22, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_11(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 22 MAR 2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 22, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_12(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 22/MAR/2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 22, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_13(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 22.MAR.2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 22, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_14(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 22.MAR 2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 22, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_15(self): - text = "Customer Number Currency 22.MAR.22 Credit Card 1934829304" - assert parse_date("", text) is None - - def test_date_format_16(self): - text = "Customer Number Currency 22.MAR,22 Credit Card 1934829304" - assert parse_date("", text) is None - - def test_date_format_17(self): - text = "Customer Number Currency 22,MAR,2022 Credit Card 1934829304" - assert parse_date("", text) is None - - def test_date_format_18(self): - text = "Customer Number Currency 22 MAR,2022 Credit Card 1934829304" - assert parse_date("", text) is None - - def test_date_format_19(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 21st MAR 2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 21, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_20(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 22nd March 2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 22, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_21(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 2nd MAR 2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 2, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_22(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 23rd MAR 2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 23, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_23(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 24th MAR 2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 24, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_24(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 21-MAR-2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 21, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_25(self, settings_timezone: ZoneInfo): - text = "Customer Number Currency 25TH MAR 2022 Credit Card 1934829304" - assert parse_date("", text) == datetime.datetime( - 2022, - 3, - 25, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_date_format_26(self, settings_timezone: ZoneInfo): - text = "CHASE 0 September 25, 2019 JPMorgan Chase Bank, NA. P0 Box 182051" - assert parse_date("", text) == datetime.datetime( - 2019, - 9, - 25, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_crazy_date_past(self): - assert parse_date("", "01-07-0590 00:00:00") is None - - def test_crazy_date_future(self): - assert parse_date("", "01-07-2350 00:00:00") is None - - def test_crazy_date_with_spaces(self): - assert parse_date("", "20 408000l 2475") is None - - def test_utf_month_names( - self, - settings: SettingsWrapper, - settings_timezone: ZoneInfo, - ): - settings.DATE_PARSER_LANGUAGES = ["fr", "de", "hr", "cs", "pl", "tr"] - assert parse_date("", "13 décembre 2023") == datetime.datetime( - 2023, - 12, - 13, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "13 août 2022") == datetime.datetime( - 2022, - 8, - 13, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "11 März 2020") == datetime.datetime( - 2020, - 3, - 11, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "17. ožujka 2018.") == datetime.datetime( - 2018, - 3, - 17, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "1. veljače 2016.") == datetime.datetime( - 2016, - 2, - 1, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "15. února 1985") == datetime.datetime( - 1985, - 2, - 15, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "30. září 2011") == datetime.datetime( - 2011, - 9, - 30, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "28. května 1990") == datetime.datetime( - 1990, - 5, - 28, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "1. grudzień 1997") == datetime.datetime( - 1997, - 12, - 1, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "17 Şubat 2024") == datetime.datetime( - 2024, - 2, - 17, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "30 Ağustos 2012") == datetime.datetime( - 2012, - 8, - 30, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "17 Eylül 2000") == datetime.datetime( - 2000, - 9, - 17, - 0, - 0, - tzinfo=settings_timezone, - ) - assert parse_date("", "5. október 1992") == datetime.datetime( - 1992, - 10, - 5, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_multiple_dates(self, settings_timezone: ZoneInfo): - text = """This text has multiple dates. - For example 02.02.2018, 22 July 2022 and December 2021. - But not 24-12-9999 because it's in the future...""" - dates = list(parse_date_generator("", text)) - - assert dates == [ - datetime.datetime(2018, 2, 2, 0, 0, tzinfo=settings_timezone), - datetime.datetime( - 2022, - 7, - 22, - 0, - 0, - tzinfo=settings_timezone, - ), - datetime.datetime( - 2021, - 12, - 1, - 0, - 0, - tzinfo=settings_timezone, - ), - ] - - def test_filename_date_parse_valid_ymd( - self, - settings: SettingsWrapper, - settings_timezone: ZoneInfo, - ): - """ - GIVEN: - - Date parsing from the filename is enabled - - Filename date format is with Year Month Day (YMD) - - Filename contains date matching the format - - THEN: - - Should parse the date from the filename - """ - settings.FILENAME_DATE_ORDER = "YMD" - - assert parse_date( - "/tmp/Scan-2022-04-01.pdf", - "No date in here", - ) == datetime.datetime(2022, 4, 1, 0, 0, tzinfo=settings_timezone) - - def test_filename_date_parse_valid_dmy( - self, - settings: SettingsWrapper, - settings_timezone: ZoneInfo, - ): - """ - GIVEN: - - Date parsing from the filename is enabled - - Filename date format is with Day Month Year (DMY) - - Filename contains date matching the format - - THEN: - - Should parse the date from the filename - """ - settings.FILENAME_DATE_ORDER = "DMY" - assert parse_date( - "/tmp/Scan-10.01.2021.pdf", - "No date in here", - ) == datetime.datetime(2021, 1, 10, 0, 0, tzinfo=settings_timezone) - - def test_filename_date_parse_invalid(self, settings: SettingsWrapper): - """ - GIVEN: - - Date parsing from the filename is enabled - - Filename includes no date - - File content includes no date - - THEN: - - No date is parsed - """ - settings.FILENAME_DATE_ORDER = "YMD" - assert parse_date("/tmp/20 408000l 2475 - test.pdf", "No date in here") is None - - def test_filename_date_ignored_use_content( - self, - settings: SettingsWrapper, - settings_timezone: ZoneInfo, - ): - """ - GIVEN: - - Date parsing from the filename is enabled - - Filename date format is with Day Month Year (YMD) - - Date order is Day Month Year (DMY, the default) - - Filename contains date matching the format - - Filename date is an ignored date - - File content includes a date - - THEN: - - Should parse the date from the content not filename - """ - settings.FILENAME_DATE_ORDER = "YMD" - settings.IGNORE_DATES = (datetime.date(2022, 4, 1),) - assert parse_date( - "/tmp/Scan-2022-04-01.pdf", - "The matching date is 24.03.2022", - ) == datetime.datetime(2022, 3, 24, 0, 0, tzinfo=settings_timezone) - - def test_ignored_dates_default_order( - self, - settings: SettingsWrapper, - settings_timezone: ZoneInfo, - ): - """ - GIVEN: - - Ignore dates have been set - - File content includes ignored dates - - File content includes 1 non-ignored date - - THEN: - - Should parse the date non-ignored date from content - """ - settings.IGNORE_DATES = (datetime.date(2019, 11, 3), datetime.date(2020, 1, 17)) - text = "lorem ipsum 110319, 20200117 and lorem 13.02.2018 lorem ipsum" - assert parse_date("", text) == datetime.datetime( - 2018, - 2, - 13, - 0, - 0, - tzinfo=settings_timezone, - ) - - def test_ignored_dates_order_ymd( - self, - settings: SettingsWrapper, - settings_timezone: ZoneInfo, - ): - """ - GIVEN: - - Ignore dates have been set - - Date order is Year Month Date (YMD) - - File content includes ignored dates - - File content includes 1 non-ignored date - - THEN: - - Should parse the date non-ignored date from content - """ - - settings.FILENAME_DATE_ORDER = "YMD" - settings.IGNORE_DATES = (datetime.date(2019, 11, 3), datetime.date(2020, 1, 17)) - - text = "lorem ipsum 190311, 20200117 and lorem 13.02.2018 lorem ipsum" - - assert parse_date("", text) == datetime.datetime( - 2018, - 2, - 13, - 0, - 0, - tzinfo=settings_timezone, - ) diff --git a/src/documents/tests/test_delayedquery.py b/src/documents/tests/test_delayedquery.py index 3ee4fb15d..6357d9030 100644 --- a/src/documents/tests/test_delayedquery.py +++ b/src/documents/tests/test_delayedquery.py @@ -6,7 +6,7 @@ from documents.models import User class TestDelayedQuery(TestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() # all tests run without permission criteria, so has_no_owner query will always # be appended. @@ -40,7 +40,7 @@ class TestDelayedQuery(TestCase): ), ) - def test_get_permission_criteria(self): + def test_get_permission_criteria(self) -> None: # tests contains tuples of user instances and the expected filter tests = ( (None, [query.Term("has_owner", text=False)]), diff --git a/src/documents/tests/test_document_model.py b/src/documents/tests/test_document_model.py index 46b16d727..39d6ce8c3 100644 --- a/src/documents/tests/test_document_model.py +++ b/src/documents/tests/test_document_model.py @@ -30,7 +30,7 @@ class TestDocument(TestCase): shutil.rmtree(self.thumb_dir) self.overrides.disable() - def test_file_deletion(self): + def test_file_deletion(self) -> None: document = Document.objects.create( correspondent=Correspondent.objects.create(name="Test0"), title="Title", @@ -50,7 +50,7 @@ class TestDocument(TestCase): empty_trash([document.pk]) self.assertEqual(mock_unlink.call_count, 2) - def test_document_soft_delete(self): + def test_document_soft_delete(self) -> None: document = Document.objects.create( correspondent=Correspondent.objects.create(name="Test0"), title="Title", @@ -78,7 +78,7 @@ class TestDocument(TestCase): empty_trash([document.pk]) self.assertEqual(mock_unlink.call_count, 2) - def test_file_name(self): + def test_file_name(self) -> None: doc = Document( mime_type="application/pdf", title="test", @@ -86,7 +86,7 @@ class TestDocument(TestCase): ) self.assertEqual(doc.get_public_filename(), "2020-12-25 test.pdf") - def test_file_name_jpg(self): + def test_file_name_jpg(self) -> None: doc = Document( mime_type="image/jpeg", title="test", @@ -94,7 +94,7 @@ class TestDocument(TestCase): ) self.assertEqual(doc.get_public_filename(), "2020-12-25 test.jpg") - def test_file_name_unknown(self): + def test_file_name_unknown(self) -> None: doc = Document( mime_type="application/zip", title="test", @@ -102,7 +102,7 @@ class TestDocument(TestCase): ) self.assertEqual(doc.get_public_filename(), "2020-12-25 test.zip") - def test_file_name_invalid_type(self): + def test_file_name_invalid_type(self) -> None: doc = Document( mime_type="image/jpegasd", title="test", @@ -111,7 +111,7 @@ class TestDocument(TestCase): self.assertEqual(doc.get_public_filename(), "2020-12-25 test") -def test_suggestion_content(): +def test_suggestion_content() -> None: """ Check that the document for suggestion is cropped, only if it exceeds the length limit. """ diff --git a/src/documents/tests/test_double_sided.py b/src/documents/tests/test_double_sided.py index 5d068b735..9ae7ce63a 100644 --- a/src/documents/tests/test_double_sided.py +++ b/src/documents/tests/test_double_sided.py @@ -27,7 +27,7 @@ from documents.tests.utils import FileSystemAssertsMixin class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): SAMPLE_DIR = Path(__file__).parent / "samples" - def setUp(self): + def setUp(self) -> None: super().setUp() self.dirs.double_sided_dir = self.dirs.consumption_dir / "double-sided" self.dirs.double_sided_dir.mkdir() @@ -56,13 +56,13 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsNotFile(dst) return msg - def create_staging_file(self, src="double-sided-odd.pdf", datetime=None): + def create_staging_file(self, src="double-sided-odd.pdf", datetime=None) -> None: shutil.copy(self.SAMPLE_DIR / src, self.staging_file) if datetime is None: datetime = dt.datetime.now() os.utime(str(self.staging_file), (datetime.timestamp(),) * 2) - def test_odd_numbered_moved_to_staging(self): + def test_odd_numbered_moved_to_staging(self) -> None: """ GIVEN: - No staging file exists @@ -85,7 +85,7 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): ) self.assertIn("Received odd numbered pages", msg) - def test_collation(self): + def test_collation(self) -> None: """ GIVEN: - A staging file not older than TIMEOUT_MINUTES with odd pages exists @@ -113,7 +113,7 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): r"This is page 4.*This is page 5", ) - def test_staging_file_expiration(self): + def test_staging_file_expiration(self) -> None: """ GIVEN: - A staging file older than TIMEOUT_MINUTES exists @@ -131,7 +131,7 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsFile(self.staging_file) self.assertIn("Received odd numbered pages", msg) - def test_less_odd_pages_then_even_fails(self): + def test_less_odd_pages_then_even_fails(self) -> None: """ GIVEN: - A valid staging file @@ -151,7 +151,7 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsNotFile(self.staging_file) @override_settings(CONSUMER_COLLATE_DOUBLE_SIDED_TIFF_SUPPORT=True) - def test_tiff_upload_enabled(self): + def test_tiff_upload_enabled(self) -> None: """ GIVEN: - CONSUMER_COLLATE_DOUBLE_SIDED_TIFF_SUPPORT is true @@ -169,7 +169,7 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): Pdf.open(self.staging_file) @override_settings(CONSUMER_COLLATE_DOUBLE_SIDED_TIFF_SUPPORT=False) - def test_tiff_upload_disabled(self): + def test_tiff_upload_disabled(self) -> None: """ GIVEN: - CONSUMER_COLLATE_DOUBLE_SIDED_TIFF_SUPPORT is false @@ -188,7 +188,7 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): ) @override_settings(CONSUMER_COLLATE_DOUBLE_SIDED_SUBDIR_NAME="quux") - def test_different_upload_dir_name(self): + def test_different_upload_dir_name(self) -> None: """ GIVEN: - No staging file exists @@ -201,7 +201,7 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.consume_file("double-sided-odd.pdf", Path("..") / "quux" / "foo.pdf") self.assertIsFile(self.staging_file) - def test_only_double_sided_dir_is_handled(self): + def test_only_double_sided_dir_is_handled(self) -> None: """ GIVEN: - No staging file exists @@ -214,7 +214,7 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsNotFile(self.staging_file) self.assertRegex(msg, r"Success. New document id \d+ created") - def test_subdirectory_upload(self): + def test_subdirectory_upload(self) -> None: """ GIVEN: - A staging file exists @@ -224,23 +224,24 @@ class TestDoubleSided(DirectoriesMixin, FileSystemAssertsMixin, TestCase): THEN: - The collated file gets put into foo/bar """ + # TODO: parameterize this instead for path in [ Path("foo") / "bar" / "double-sided", Path("double-sided") / "foo" / "bar", ]: - with self.subTest(path=path): + with self.subTest(path=str(path)): # Ensure we get fresh directories for each run self.tearDown() self.setUp() self.create_staging_file() - self.consume_file("double-sided-odd.pdf", path / "foo.pdf") + self.consume_file("double-sided-odd.pdf", Path(path) / "foo.pdf") self.assertIsFile( self.dirs.consumption_dir / "foo" / "bar" / "foo-collated.pdf", ) @override_settings(CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED=False) - def test_disabled_double_sided_dir_upload(self): + def test_disabled_double_sided_dir_upload(self) -> None: """ GIVEN: - CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED is false diff --git a/src/documents/tests/test_file_handling.py b/src/documents/tests/test_file_handling.py index 62ca52d71..1d4be14fe 100644 --- a/src/documents/tests/test_file_handling.py +++ b/src/documents/tests/test_file_handling.py @@ -16,6 +16,7 @@ from django.utils import timezone from documents.file_handling import create_source_path_directory from documents.file_handling import delete_empty_directories from documents.file_handling import generate_filename +from documents.file_handling import generate_unique_filename from documents.models import Correspondent from documents.models import CustomField from documents.models import CustomFieldInstance @@ -30,25 +31,17 @@ from documents.tests.utils import FileSystemAssertsMixin class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings(FILENAME_FORMAT="") - def test_generate_source_filename(self): + def test_generate_source_filename(self) -> None: document = Document() document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED document.save() self.assertEqual(generate_filename(document), Path(f"{document.pk:07d}.pdf")) - document.storage_type = Document.STORAGE_TYPE_GPG - self.assertEqual( - generate_filename(document), - Path(f"{document.pk:07d}.pdf.gpg"), - ) - @override_settings(FILENAME_FORMAT="{correspondent}/{correspondent}") - def test_file_renaming(self): + def test_file_renaming(self) -> None: document = Document() document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED document.save() # Test default source_path @@ -62,11 +55,6 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): # Ensure that filename is properly generated self.assertEqual(document.filename, Path("none/none.pdf")) - # Enable encryption and check again - document.storage_type = Document.STORAGE_TYPE_GPG - document.filename = generate_filename(document) - self.assertEqual(document.filename, Path("none/none.pdf.gpg")) - document.save() # test that creating dirs for the source_path creates the correct directory @@ -86,14 +74,14 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): settings.ORIGINALS_DIR / "none", ) self.assertIsFile( - settings.ORIGINALS_DIR / "test" / "test.pdf.gpg", + settings.ORIGINALS_DIR / "test" / "test.pdf", ) @override_settings(FILENAME_FORMAT="{correspondent}/{correspondent}") - def test_file_renaming_missing_permissions(self): + def test_file_renaming_missing_permissions(self) -> None: document = Document() document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED + document.save() # Ensure that filename is properly generated @@ -124,17 +112,16 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): (settings.ORIGINALS_DIR / "none").chmod(0o777) @override_settings(FILENAME_FORMAT="{correspondent}/{correspondent}") - def test_file_renaming_database_error(self): + def test_file_renaming_database_error(self) -> None: Document.objects.create( mime_type="application/pdf", - storage_type=Document.STORAGE_TYPE_UNENCRYPTED, checksum="AAAAA", ) document = Document() document.mime_type = "application/pdf" document.checksum = "BBBBB" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED + document.save() # Ensure that filename is properly generated @@ -166,10 +153,10 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertEqual(document.filename, "none/none.pdf") @override_settings(FILENAME_FORMAT="{correspondent}/{correspondent}") - def test_document_delete(self): + def test_document_delete(self) -> None: document = Document() document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED + document.save() # Ensure that filename is properly generated @@ -192,10 +179,10 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): FILENAME_FORMAT="{correspondent}/{correspondent}", EMPTY_TRASH_DIR=Path(tempfile.mkdtemp()), ) - def test_document_delete_trash_dir(self): + def test_document_delete_trash_dir(self) -> None: document = Document() document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED + document.save() # Ensure that filename is properly generated @@ -220,7 +207,7 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): # Create an identical document and ensure it is trashed under a new name document = Document() document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED + document.save() document.filename = generate_filename(document) document.save() @@ -231,20 +218,20 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsFile(Path(settings.EMPTY_TRASH_DIR) / "none_01.pdf") @override_settings(FILENAME_FORMAT="{correspondent}/{correspondent}") - def test_document_delete_nofile(self): + def test_document_delete_nofile(self) -> None: document = Document() document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED + document.save() document.delete() empty_trash([document.pk]) @override_settings(FILENAME_FORMAT="{correspondent}/{correspondent}") - def test_directory_not_empty(self): + def test_directory_not_empty(self) -> None: document = Document() document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED + document.save() # Ensure that filename is properly generated @@ -267,7 +254,7 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsFile(important_file) @override_settings(FILENAME_FORMAT="{document_type} - {title}") - def test_document_type(self): + def test_document_type(self) -> None: dt = DocumentType.objects.create(name="my_doc_type") d = Document.objects.create(title="the_doc", mime_type="application/pdf") @@ -278,7 +265,7 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertEqual(generate_filename(d), Path("my_doc_type - the_doc.pdf")) @override_settings(FILENAME_FORMAT="{asn} - {title}") - def test_asn(self): + def test_asn(self) -> None: d1 = Document.objects.create( title="the_doc", mime_type="application/pdf", @@ -295,7 +282,7 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertEqual(generate_filename(d2), Path("none - the_doc.pdf")) @override_settings(FILENAME_FORMAT="{title} {tag_list}") - def test_tag_list(self): + def test_tag_list(self) -> None: doc = Document.objects.create(title="doc1", mime_type="application/pdf") doc.tags.create(name="tag2") doc.tags.create(name="tag1") @@ -311,7 +298,7 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertEqual(generate_filename(doc), Path("doc2.pdf")) @override_settings(FILENAME_FORMAT="//etc/something/{title}") - def test_filename_relative(self): + def test_filename_relative(self) -> None: doc = Document.objects.create(title="doc1", mime_type="application/pdf") doc.filename = generate_filename(doc) doc.save() @@ -324,7 +311,7 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings( FILENAME_FORMAT="{created_year}-{created_month}-{created_day}", ) - def test_created_year_month_day(self): + def test_created_year_month_day(self) -> None: d1 = timezone.make_aware(datetime.datetime(2020, 3, 6, 1, 1, 1)) doc1 = Document.objects.create( title="doc1", @@ -341,7 +328,7 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings( FILENAME_FORMAT="{added_year}-{added_month}-{added_day}", ) - def test_added_year_month_day(self): + def test_added_year_month_day(self) -> None: d1 = timezone.make_aware(datetime.datetime(232, 1, 9, 1, 1, 1)) doc1 = Document.objects.create( title="doc1", @@ -358,10 +345,10 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings( FILENAME_FORMAT="{correspondent}/{correspondent}/{correspondent}", ) - def test_nested_directory_cleanup(self): + def test_nested_directory_cleanup(self) -> None: document = Document() document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED + document.save() # Ensure that filename is properly generated @@ -385,11 +372,10 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsDir(settings.ORIGINALS_DIR) @override_settings(FILENAME_FORMAT="{doc_pk}") - def test_format_doc_pk(self): + def test_format_doc_pk(self) -> None: document = Document() document.pk = 1 document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED self.assertEqual(generate_filename(document), Path("0000001.pdf")) @@ -398,15 +384,14 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertEqual(generate_filename(document), Path("0013579.pdf")) @override_settings(FILENAME_FORMAT=None) - def test_format_none(self): + def test_format_none(self) -> None: document = Document() document.pk = 1 document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED self.assertEqual(generate_filename(document), Path("0000001.pdf")) - def test_try_delete_empty_directories(self): + def test_try_delete_empty_directories(self) -> None: # Create our working directory tmp: Path = settings.ORIGINALS_DIR / "test_delete_empty" tmp.mkdir(exist_ok=True, parents=True) @@ -424,25 +409,23 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsNotDir(tmp / "notempty" / "empty") @override_settings(FILENAME_FORMAT="{% if x is None %}/{title]") - def test_invalid_format(self): + def test_invalid_format(self) -> None: document = Document() document.pk = 1 document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED self.assertEqual(generate_filename(document), Path("0000001.pdf")) @override_settings(FILENAME_FORMAT="{created__year}") - def test_invalid_format_key(self): + def test_invalid_format_key(self) -> None: document = Document() document.pk = 1 document.mime_type = "application/pdf" - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED self.assertEqual(generate_filename(document), Path("0000001.pdf")) @override_settings(FILENAME_FORMAT="{title}") - def test_duplicates(self): + def test_duplicates(self) -> None: document = Document.objects.create( mime_type="application/pdf", title="qwe", @@ -496,7 +479,7 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings(FILENAME_FORMAT="{title}") @mock.patch("documents.signals.handlers.Document.objects.filter") @mock.patch("documents.signals.handlers.shutil.move") - def test_no_move_only_save(self, mock_move, mock_filter): + def test_no_move_only_save(self, mock_move, mock_filter) -> None: """ GIVEN: - A document with a filename @@ -530,9 +513,10 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings( FILENAME_FORMAT="{{title}}_{{custom_fields|get_cf_value('test')}}", + CELERY_TASK_ALWAYS_EAGER=True, ) @mock.patch("documents.signals.handlers.update_filename_and_move_files") - def test_select_cf_updated(self, m): + def test_select_cf_updated(self, m) -> None: """ GIVEN: - A document with a select type custom field @@ -579,13 +563,13 @@ class TestFileHandling(DirectoriesMixin, FileSystemAssertsMixin, TestCase): } cf.save() self.assertEqual(generate_filename(doc), Path("document_aubergine.pdf")) - # handler should have been called + # handler should have been called once via the async task self.assertEqual(m.call_count, 1) class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings(FILENAME_FORMAT=None) - def test_create_no_format(self): + def test_create_no_format(self) -> None: original = settings.ORIGINALS_DIR / "0000001.pdf" archive = settings.ARCHIVE_DIR / "0000001.pdf" Path(original).touch() @@ -604,7 +588,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test self.assertIsFile(doc.archive_path) @override_settings(FILENAME_FORMAT="{correspondent}/{title}") - def test_create_with_format(self): + def test_create_with_format(self) -> None: original = settings.ORIGINALS_DIR / "0000001.pdf" archive = settings.ARCHIVE_DIR / "0000001.pdf" Path(original).touch() @@ -632,7 +616,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test ) @override_settings(FILENAME_FORMAT="{correspondent}/{title}") - def test_move_archive_gone(self): + def test_move_archive_gone(self) -> None: original = settings.ORIGINALS_DIR / "0000001.pdf" archive = settings.ARCHIVE_DIR / "0000001.pdf" Path(original).touch() @@ -651,7 +635,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test self.assertIsNotFile(doc.archive_path) @override_settings(FILENAME_FORMAT="{correspondent}/{title}") - def test_move_archive_exists(self): + def test_move_archive_exists(self) -> None: original = settings.ORIGINALS_DIR / "0000001.pdf" archive = settings.ARCHIVE_DIR / "0000001.pdf" existing_archive_file = settings.ARCHIVE_DIR / "none" / "my_doc.pdf" @@ -676,7 +660,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test self.assertEqual(doc.archive_filename, "none/my_doc_01.pdf") @override_settings(FILENAME_FORMAT="{title}") - def test_move_original_only(self): + def test_move_original_only(self) -> None: original = settings.ORIGINALS_DIR / "document_01.pdf" archive = settings.ARCHIVE_DIR / "document.pdf" Path(original).touch() @@ -698,7 +682,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test self.assertIsFile(doc.archive_path) @override_settings(FILENAME_FORMAT="{title}") - def test_move_archive_only(self): + def test_move_archive_only(self) -> None: original = settings.ORIGINALS_DIR / "document.pdf" archive = settings.ARCHIVE_DIR / "document_01.pdf" Path(original).touch() @@ -721,8 +705,8 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test @override_settings(FILENAME_FORMAT="{correspondent}/{title}") @mock.patch("documents.signals.handlers.shutil.move") - def test_move_archive_error(self, m): - def fake_rename(src, dst): + def test_move_archive_error(self, m) -> None: + def fake_rename(src, dst) -> None: if "archive" in str(src): raise OSError else: @@ -751,7 +735,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test self.assertIsFile(doc.archive_path) @override_settings(FILENAME_FORMAT="{correspondent}/{title}") - def test_move_file_gone(self): + def test_move_file_gone(self) -> None: original = settings.ORIGINALS_DIR / "0000001.pdf" archive = settings.ARCHIVE_DIR / "0000001.pdf" # Path(original).touch() @@ -772,8 +756,8 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test @override_settings(FILENAME_FORMAT="{correspondent}/{title}") @mock.patch("documents.signals.handlers.shutil.move") - def test_move_file_error(self, m): - def fake_rename(src, dst): + def test_move_file_error(self, m) -> None: + def fake_rename(src, dst) -> None: if "original" in str(src): raise OSError else: @@ -802,7 +786,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test self.assertIsFile(doc.archive_path) @override_settings(FILENAME_FORMAT="") - def test_archive_deleted(self): + def test_archive_deleted(self) -> None: original = settings.ORIGINALS_DIR / "0000001.pdf" archive = settings.ARCHIVE_DIR / "0000001.pdf" Path(original).touch() @@ -830,7 +814,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test self.assertIsNotFile(doc.archive_path) @override_settings(FILENAME_FORMAT="{title}") - def test_archive_deleted2(self): + def test_archive_deleted2(self) -> None: original = settings.ORIGINALS_DIR / "document.webp" original2 = settings.ORIGINALS_DIR / "0000001.pdf" archive = settings.ARCHIVE_DIR / "0000001.pdf" @@ -865,7 +849,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test self.assertIsNotFile(doc2.source_path) @override_settings(FILENAME_FORMAT="{correspondent}/{title}") - def test_database_error(self): + def test_database_error(self) -> None: original = settings.ORIGINALS_DIR / "0000001.pdf" archive = settings.ARCHIVE_DIR / "0000001.pdf" Path(original).touch() @@ -892,7 +876,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test class TestFilenameGeneration(DirectoriesMixin, TestCase): @override_settings(FILENAME_FORMAT="{title}") - def test_invalid_characters(self): + def test_invalid_characters(self) -> None: doc = Document.objects.create( title="This. is the title.", mime_type="application/pdf", @@ -910,7 +894,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): self.assertEqual(generate_filename(doc), Path("my-invalid-..-title-yay.pdf")) @override_settings(FILENAME_FORMAT="{created}") - def test_date(self): + def test_date(self) -> None: doc = Document.objects.create( title="does not matter", created=datetime.date(2020, 5, 21), @@ -920,7 +904,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): ) self.assertEqual(generate_filename(doc), Path("2020-05-21.pdf")) - def test_dynamic_path(self): + def test_dynamic_path(self) -> None: """ GIVEN: - A document with a defined storage path @@ -939,7 +923,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): ) self.assertEqual(generate_filename(doc), Path("TestFolder/2020-06-25.pdf")) - def test_dynamic_path_with_none(self): + def test_dynamic_path_with_none(self) -> None: """ GIVEN: - A document with a defined storage path @@ -963,7 +947,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): @override_settings( FILENAME_FORMAT_REMOVE_NONE=True, ) - def test_dynamic_path_remove_none(self): + def test_dynamic_path_remove_none(self) -> None: """ GIVEN: - A document with a defined storage path @@ -997,7 +981,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): sp.save() self.assertEqual(generate_filename(doc), Path("2020/does not matter.pdf")) - def test_multiple_doc_paths(self): + def test_multiple_doc_paths(self) -> None: """ GIVEN: - Two documents, each with different storage paths @@ -1042,7 +1026,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): @override_settings( FILENAME_FORMAT=None, ) - def test_no_path_fallback(self): + def test_no_path_fallback(self) -> None: """ GIVEN: - Two documents, one with defined storage path, the other not @@ -1078,10 +1062,51 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): Path("SomeImportantNone/2020-07-25.pdf"), ) + @override_settings( + FILENAME_FORMAT=( + "{% if correspondent == 'none' %}none/{% endif %}" + "{% if correspondent == '-none-' %}dash/{% endif %}" + "{% if not correspondent %}false/{% endif %}" + "{% if correspondent != 'none' %}notnoneyes/{% else %}notnoneno/{% endif %}" + "{{ correspondent or 'missing' }}/{{ title }}" + ), + ) + def test_placeholder_matches_none_variants_and_false(self) -> None: + """ + GIVEN: + - Templates that compare against 'none', '-none-' and rely on truthiness + WHEN: + - A document has or lacks a correspondent + THEN: + - Empty placeholders behave like both strings and evaluate False + """ + doc_without_correspondent = Document.objects.create( + title="does not matter", + mime_type="application/pdf", + checksum="abc", + ) + doc_with_correspondent = Document.objects.create( + title="does not matter", + mime_type="application/pdf", + checksum="def", + correspondent=Correspondent.objects.create(name="Acme"), + ) + + self.assertEqual( + generate_filename(doc_without_correspondent), + Path( + "none/dash/false/notnoneno/missing/does not matter.pdf", + ), + ) + self.assertEqual( + generate_filename(doc_with_correspondent), + Path("notnoneyes/Acme/does not matter.pdf"), + ) + @override_settings( FILENAME_FORMAT="{created_year_short}/{created_month_name_short}/{created_month_name}/{title}", ) - def test_short_names_created(self): + def test_short_names_created(self) -> None: doc = Document.objects.create( title="The Title", created=datetime.date(1989, 12, 2), @@ -1094,7 +1119,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): @override_settings( FILENAME_FORMAT="{added_year_short}/{added_month_name}/{added_month_name_short}/{title}", ) - def test_short_names_added(self): + def test_short_names_added(self) -> None: doc = Document.objects.create( title="The Title", added=timezone.make_aware(datetime.datetime(1984, 8, 21, 7, 36, 51, 153)), @@ -1107,7 +1132,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): @override_settings( FILENAME_FORMAT="{owner_username}/{title}", ) - def test_document_owner_string(self): + def test_document_owner_string(self) -> None: """ GIVEN: - Document with an other @@ -1141,7 +1166,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): @override_settings( FILENAME_FORMAT="{original_name}", ) - def test_document_original_filename(self): + def test_document_original_filename(self) -> None: """ GIVEN: - Document with an original filename @@ -1201,7 +1226,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): FILENAME_FORMAT="XX{correspondent}/{title}", FILENAME_FORMAT_REMOVE_NONE=True, ) - def test_remove_none_not_dir(self): + def test_remove_none_not_dir(self) -> None: """ GIVEN: - A document with & filename format that includes correspondent as part of directory name @@ -1215,14 +1240,14 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): title="doc1", mime_type="application/pdf", ) - document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED + document.save() # Ensure that filename is properly generated document.filename = generate_filename(document) self.assertEqual(document.filename, Path("XX/doc1.pdf")) - def test_complex_template_strings(self): + def test_complex_template_strings(self) -> None: """ GIVEN: - Storage paths with complex conditionals and logic @@ -1301,7 +1326,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): @override_settings( FILENAME_FORMAT="{{creation_date}}/{{ title_name_str }}", ) - def test_template_with_undefined_var(self): + def test_template_with_undefined_var(self) -> None: """ GIVEN: - Filename format with one or more undefined variables @@ -1336,7 +1361,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): @override_settings( FILENAME_FORMAT="{{created}}/{{ document.save() }}", ) - def test_template_with_security(self): + def test_template_with_security(self) -> None: """ GIVEN: - Filename format with one or more undefined variables @@ -1368,7 +1393,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): "WARNING:paperless.templating:Template attempted restricted operation: > is not safely callable", ) - def test_template_with_custom_fields(self): + def test_template_with_custom_fields(self) -> None: """ GIVEN: - Filename format which accesses custom field data @@ -1474,7 +1499,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): Path("invoices/0.pdf"), ) - def test_datetime_filter(self): + def test_datetime_filter(self) -> None: """ GIVEN: - Filename format with datetime filter @@ -1529,7 +1554,7 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): Path("2024-10-01/Some Title.pdf"), ) - def test_slugify_filter(self): + def test_slugify_filter(self) -> None: """ GIVEN: - Filename format with slugify filter @@ -1590,6 +1615,73 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase): ) +class TestCustomFieldFilenameUpdates( + DirectoriesMixin, + FileSystemAssertsMixin, + TestCase, +): + def setUp(self): + self.cf = CustomField.objects.create( + name="flavor", + data_type=CustomField.FieldDataType.STRING, + ) + self.doc = Document.objects.create( + title="document", + mime_type="application/pdf", + checksum="abc123", + ) + self.cfi = CustomFieldInstance.objects.create( + field=self.cf, + document=self.doc, + value_text="initial", + ) + return super().setUp() + + @override_settings(FILENAME_FORMAT=None) + def test_custom_field_not_in_template_skips_filename_work(self) -> None: + storage_path = StoragePath.objects.create(path="{{created}}/{{ title }}") + self.doc.storage_path = storage_path + self.doc.save() + initial_filename = generate_filename(self.doc) + Document.objects.filter(pk=self.doc.pk).update(filename=str(initial_filename)) + self.doc.refresh_from_db() + Path(self.doc.source_path).parent.mkdir(parents=True, exist_ok=True) + Path(self.doc.source_path).touch() + + with mock.patch("documents.signals.handlers.generate_unique_filename") as m: + m.side_effect = generate_unique_filename + self.cfi.value_text = "updated" + self.cfi.save() + + self.doc.refresh_from_db() + self.assertEqual(Path(self.doc.filename), initial_filename) + self.assertEqual(m.call_count, 0) + + @override_settings(FILENAME_FORMAT=None) + def test_custom_field_in_template_triggers_filename_update(self) -> None: + storage_path = StoragePath.objects.create( + path="{{ custom_fields|get_cf_value('flavor') }}/{{ title }}", + ) + self.doc.storage_path = storage_path + self.doc.save() + initial_filename = generate_filename(self.doc) + Document.objects.filter(pk=self.doc.pk).update(filename=str(initial_filename)) + self.doc.refresh_from_db() + Path(self.doc.source_path).parent.mkdir(parents=True, exist_ok=True) + Path(self.doc.source_path).touch() + + with mock.patch("documents.signals.handlers.generate_unique_filename") as m: + m.side_effect = generate_unique_filename + self.cfi.value_text = "updated" + self.cfi.save() + + self.doc.refresh_from_db() + expected_filename = Path("updated/document.pdf") + self.assertEqual(Path(self.doc.filename), expected_filename) + self.assertTrue(Path(self.doc.source_path).is_file()) + self.assertLessEqual(m.call_count, 1) + + class TestPathDateLocalization: """ Groups all tests related to the `localize_date` function. @@ -1618,11 +1710,14 @@ class TestPathDateLocalization: ), ], ) - def test_localize_date_path_building(self, filename_format, expected_filename): + def test_localize_date_path_building( + self, + filename_format, + expected_filename, + ) -> None: document = DocumentFactory.create( title="My Document", mime_type="application/pdf", - storage_type=Document.STORAGE_TYPE_UNENCRYPTED, created=self.TEST_DATE, # 2023-10-26 (which is a Thursday) ) with override_settings(FILENAME_FORMAT=filename_format): diff --git a/src/documents/tests/test_filters.py b/src/documents/tests/test_filters.py index 6283bed78..e14a0214e 100644 --- a/src/documents/tests/test_filters.py +++ b/src/documents/tests/test_filters.py @@ -167,7 +167,7 @@ class TestDateLocalization: assert f"Unsupported type {type(invalid_value)}" in str(excinfo.value) - def test_localize_date_raises_error_for_invalid_locale(self): + def test_localize_date_raises_error_for_invalid_locale(self) -> None: with pytest.raises(ValueError) as excinfo: localize_date(self.TEST_DATE, "medium", "invalid_locale_code") diff --git a/src/documents/tests/test_index.py b/src/documents/tests/test_index.py index 2a41542e9..5f1c7487d 100644 --- a/src/documents/tests/test_index.py +++ b/src/documents/tests/test_index.py @@ -1,7 +1,9 @@ from datetime import datetime from unittest import mock +from django.conf import settings from django.contrib.auth.models import User +from django.test import SimpleTestCase from django.test import TestCase from django.test import override_settings from django.utils.timezone import get_current_timezone @@ -13,7 +15,7 @@ from documents.tests.utils import DirectoriesMixin class TestAutoComplete(DirectoriesMixin, TestCase): - def test_auto_complete(self): + def test_auto_complete(self) -> None: doc1 = Document.objects.create( title="doc1", checksum="A", @@ -39,7 +41,7 @@ class TestAutoComplete(DirectoriesMixin, TestCase): self.assertListEqual(index.autocomplete(ix, "tes", limit=1), [b"test2"]) self.assertListEqual(index.autocomplete(ix, "tes", limit=0), []) - def test_archive_serial_number_ranging(self): + def test_archive_serial_number_ranging(self) -> None: """ GIVEN: - Document with an archive serial number above schema allowed size @@ -72,7 +74,7 @@ class TestAutoComplete(DirectoriesMixin, TestCase): expected_str = "ERROR:paperless.index:Not indexing Archive Serial Number 4294967296 of document 1" self.assertIn(expected_str, error_str) - def test_archive_serial_number_is_none(self): + def test_archive_serial_number_is_none(self) -> None: """ GIVEN: - Document with no archive serial number @@ -97,7 +99,7 @@ class TestAutoComplete(DirectoriesMixin, TestCase): self.assertIsNone(kwargs["asn"]) @override_settings(TIME_ZONE="Pacific/Auckland") - def test_added_today_respects_local_timezone_boundary(self): + def test_added_today_respects_local_timezone_boundary(self) -> None: tz = get_current_timezone() fixed_now = datetime(2025, 7, 20, 15, 0, 0, tzinfo=tz) @@ -127,3 +129,243 @@ class TestAutoComplete(DirectoriesMixin, TestCase): response = self.client.get("/api/documents/?query=added:yesterday") results = response.json()["results"] self.assertEqual(len(results), 0) + + +@override_settings(TIME_ZONE="UTC") +class TestRewriteNaturalDateKeywords(SimpleTestCase): + """ + Unit tests for rewrite_natural_date_keywords function. + """ + + def _rewrite_with_now(self, query: str, now_dt: datetime) -> str: + with mock.patch("documents.index.now", return_value=now_dt): + return index.rewrite_natural_date_keywords(query) + + def _assert_rewrite_contains( + self, + query: str, + now_dt: datetime, + *expected_fragments: str, + ) -> str: + result = self._rewrite_with_now(query, now_dt) + for fragment in expected_fragments: + self.assertIn(fragment, result) + return result + + def test_range_keywords(self) -> None: + """ + Test various different range keywords + """ + cases = [ + ( + "added:today", + datetime(2025, 7, 20, 15, 30, 45, tzinfo=timezone.utc), + ("added:[20250720", "TO 20250720"), + ), + ( + "added:yesterday", + datetime(2025, 7, 20, 15, 30, 45, tzinfo=timezone.utc), + ("added:[20250719", "TO 20250719"), + ), + ( + "added:this month", + datetime(2025, 7, 15, 12, 0, 0, tzinfo=timezone.utc), + ("added:[20250701", "TO 20250731"), + ), + ( + "added:previous month", + datetime(2025, 7, 15, 12, 0, 0, tzinfo=timezone.utc), + ("added:[20250601", "TO 20250630"), + ), + ( + "added:this year", + datetime(2025, 7, 15, 12, 0, 0, tzinfo=timezone.utc), + ("added:[20250101", "TO 20251231"), + ), + ( + "added:previous year", + datetime(2025, 7, 15, 12, 0, 0, tzinfo=timezone.utc), + ("added:[20240101", "TO 20241231"), + ), + # Previous quarter from July 15, 2025 is April-June. + ( + "added:previous quarter", + datetime(2025, 7, 15, 12, 0, 0, tzinfo=timezone.utc), + ("added:[20250401", "TO 20250630"), + ), + # July 20, 2025 is a Sunday (weekday 6) so previous week is July 7-13. + ( + "added:previous week", + datetime(2025, 7, 20, 12, 0, 0, tzinfo=timezone.utc), + ("added:[20250707", "TO 20250713"), + ), + ] + + for query, now_dt, fragments in cases: + with self.subTest(query=query): + self._assert_rewrite_contains(query, now_dt, *fragments) + + def test_additional_fields(self) -> None: + fixed_now = datetime(2025, 7, 20, 15, 30, 45, tzinfo=timezone.utc) + # created + self._assert_rewrite_contains("created:today", fixed_now, "created:[20250720") + # modified + self._assert_rewrite_contains("modified:today", fixed_now, "modified:[20250720") + + def test_basic_syntax_variants(self) -> None: + """ + Test that quoting, casing, and multi-clause queries are parsed. + """ + fixed_now = datetime(2025, 7, 20, 15, 30, 45, tzinfo=timezone.utc) + + # quoted keywords + result1 = self._rewrite_with_now('added:"today"', fixed_now) + result2 = self._rewrite_with_now("added:'today'", fixed_now) + self.assertIn("added:[20250720", result1) + self.assertIn("added:[20250720", result2) + + # case insensitivity + for query in ("added:TODAY", "added:Today", "added:ToDaY"): + with self.subTest(case_variant=query): + self._assert_rewrite_contains(query, fixed_now, "added:[20250720") + + # multiple clauses + result = self._rewrite_with_now("added:today created:yesterday", fixed_now) + self.assertIn("added:[20250720", result) + self.assertIn("created:[20250719", result) + + def test_no_match(self) -> None: + """ + Test that queries without keywords are unchanged. + """ + query = "title:test content:example" + result = index.rewrite_natural_date_keywords(query) + self.assertEqual(query, result) + + @override_settings(TIME_ZONE="Pacific/Auckland") + def test_timezone_awareness(self) -> None: + """ + Test timezone conversion. + """ + # July 20, 2025 1:00 AM NZST = July 19, 2025 13:00 UTC + fixed_now = datetime(2025, 7, 20, 1, 0, 0, tzinfo=get_current_timezone()) + result = self._rewrite_with_now("added:today", fixed_now) + # Should convert to UTC properly + self.assertIn("added:[20250719", result) + + +class TestIndexResilience(DirectoriesMixin, SimpleTestCase): + def _assert_recreate_called(self, mock_create_in) -> None: + mock_create_in.assert_called_once() + path_arg, schema_arg = mock_create_in.call_args.args + self.assertEqual(path_arg, settings.INDEX_DIR) + self.assertEqual(schema_arg.__class__.__name__, "Schema") + + def test_transient_missing_segment_does_not_force_recreate(self) -> None: + """ + GIVEN: + - Index directory exists + WHEN: + - open_index is called + - Opening the index raises FileNotFoundError once due to a + transient missing segment + THEN: + - Index is opened successfully on retry + - Index is not recreated + """ + file_marker = settings.INDEX_DIR / "file_marker.txt" + file_marker.write_text("keep") + expected_index = object() + + with ( + mock.patch("documents.index.exists_in", return_value=True), + mock.patch( + "documents.index.open_dir", + side_effect=[FileNotFoundError("missing"), expected_index], + ) as mock_open_dir, + mock.patch( + "documents.index.create_in", + ) as mock_create_in, + mock.patch( + "documents.index.rmtree", + ) as mock_rmtree, + ): + ix = index.open_index() + + self.assertIs(ix, expected_index) + self.assertGreaterEqual(mock_open_dir.call_count, 2) + mock_rmtree.assert_not_called() + mock_create_in.assert_not_called() + self.assertEqual(file_marker.read_text(), "keep") + + def test_transient_errors_exhaust_retries_and_recreate(self) -> None: + """ + GIVEN: + - Index directory exists + WHEN: + - open_index is called + - Opening the index raises FileNotFoundError multiple times due to + transient missing segments + THEN: + - Index is recreated after retries are exhausted + """ + recreated_index = object() + + with ( + self.assertLogs("paperless.index", level="ERROR") as cm, + mock.patch("documents.index.exists_in", return_value=True), + mock.patch( + "documents.index.open_dir", + side_effect=FileNotFoundError("missing"), + ) as mock_open_dir, + mock.patch("documents.index.rmtree") as mock_rmtree, + mock.patch( + "documents.index.create_in", + return_value=recreated_index, + ) as mock_create_in, + ): + ix = index.open_index() + + self.assertIs(ix, recreated_index) + self.assertEqual(mock_open_dir.call_count, 4) + mock_rmtree.assert_called_once_with(settings.INDEX_DIR) + self._assert_recreate_called(mock_create_in) + self.assertIn( + "Error while opening the index after retries, recreating.", + cm.output[0], + ) + + def test_non_transient_error_recreates_index(self) -> None: + """ + GIVEN: + - Index directory exists + WHEN: + - open_index is called + - Opening the index raises a "non-transient" error + THEN: + - Index is recreated + """ + recreated_index = object() + + with ( + self.assertLogs("paperless.index", level="ERROR") as cm, + mock.patch("documents.index.exists_in", return_value=True), + mock.patch( + "documents.index.open_dir", + side_effect=RuntimeError("boom"), + ), + mock.patch("documents.index.rmtree") as mock_rmtree, + mock.patch( + "documents.index.create_in", + return_value=recreated_index, + ) as mock_create_in, + ): + ix = index.open_index() + + self.assertIs(ix, recreated_index) + mock_rmtree.assert_called_once_with(settings.INDEX_DIR) + self._assert_recreate_called(mock_create_in) + self.assertIn( + "Error while opening the index, recreating.", + cm.output[0], + ) diff --git a/src/documents/tests/test_management.py b/src/documents/tests/test_management.py index 014f5d673..63c870e23 100644 --- a/src/documents/tests/test_management.py +++ b/src/documents/tests/test_management.py @@ -1,7 +1,5 @@ import filecmp -import hashlib import shutil -import tempfile from io import StringIO from pathlib import Path from unittest import mock @@ -31,13 +29,13 @@ class TestArchiver(DirectoriesMixin, FileSystemAssertsMixin, TestCase): mime_type="application/pdf", ) - def test_archiver(self): + def test_archiver(self) -> None: doc = self.make_models() shutil.copy(sample_file, Path(self.dirs.originals_dir) / f"{doc.id:07}.pdf") call_command("document_archiver", "--processes", "1") - def test_handle_document(self): + def test_handle_document(self) -> None: doc = self.make_models() shutil.copy(sample_file, Path(self.dirs.originals_dir) / f"{doc.id:07}.pdf") @@ -52,7 +50,7 @@ class TestArchiver(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertTrue(filecmp.cmp(sample_file, doc.source_path)) self.assertEqual(doc.archive_filename, "none/A.pdf") - def test_unknown_mime_type(self): + def test_unknown_mime_type(self) -> None: doc = self.make_models() doc.mime_type = "sdgfh" doc.save() @@ -68,7 +66,7 @@ class TestArchiver(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsFile(doc.source_path) @override_settings(FILENAME_FORMAT="{title}") - def test_naming_priorities(self): + def test_naming_priorities(self) -> None: doc1 = Document.objects.create( checksum="A", title="document", @@ -96,81 +94,21 @@ class TestArchiver(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertEqual(doc2.archive_filename, "document_01.pdf") -class TestDecryptDocuments(FileSystemAssertsMixin, TestCase): - @mock.patch("documents.management.commands.decrypt_documents.input") - def test_decrypt(self, m): - media_dir = tempfile.mkdtemp() - originals_dir = Path(media_dir) / "documents" / "originals" - thumb_dir = Path(media_dir) / "documents" / "thumbnails" - originals_dir.mkdir(parents=True, exist_ok=True) - thumb_dir.mkdir(parents=True, exist_ok=True) - - with override_settings( - ORIGINALS_DIR=originals_dir, - THUMBNAIL_DIR=thumb_dir, - PASSPHRASE="test", - FILENAME_FORMAT=None, - ): - doc = Document.objects.create( - checksum="82186aaa94f0b98697d704b90fd1c072", - title="wow", - filename="0000004.pdf.gpg", - mime_type="application/pdf", - storage_type=Document.STORAGE_TYPE_GPG, - ) - - shutil.copy( - ( - Path(__file__).parent - / "samples" - / "documents" - / "originals" - / "0000004.pdf.gpg" - ), - originals_dir / "0000004.pdf.gpg", - ) - shutil.copy( - ( - Path(__file__).parent - / "samples" - / "documents" - / "thumbnails" - / "0000004.webp.gpg" - ), - thumb_dir / f"{doc.id:07}.webp.gpg", - ) - - call_command("decrypt_documents") - - doc.refresh_from_db() - - self.assertEqual(doc.storage_type, Document.STORAGE_TYPE_UNENCRYPTED) - self.assertEqual(doc.filename, "0000004.pdf") - self.assertIsFile(Path(originals_dir) / "0000004.pdf") - self.assertIsFile(doc.source_path) - self.assertIsFile(Path(thumb_dir) / f"{doc.id:07}.webp") - self.assertIsFile(doc.thumbnail_path) - - with doc.source_file as f: - checksum: str = hashlib.md5(f.read()).hexdigest() - self.assertEqual(checksum, doc.checksum) - - class TestMakeIndex(TestCase): @mock.patch("documents.management.commands.document_index.index_reindex") - def test_reindex(self, m): + def test_reindex(self, m) -> None: call_command("document_index", "reindex") m.assert_called_once() @mock.patch("documents.management.commands.document_index.index_optimize") - def test_optimize(self, m): + def test_optimize(self, m) -> None: call_command("document_index", "optimize") m.assert_called_once() class TestRenamer(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings(FILENAME_FORMAT="") - def test_rename(self): + def test_rename(self) -> None: doc = Document.objects.create(title="test", mime_type="image/jpeg") doc.filename = generate_filename(doc) doc.archive_filename = generate_filename(doc, archive_filename=True) @@ -196,21 +134,21 @@ class TestCreateClassifier(TestCase): @mock.patch( "documents.management.commands.document_create_classifier.train_classifier", ) - def test_create_classifier(self, m): + def test_create_classifier(self, m) -> None: call_command("document_create_classifier") m.assert_called_once() class TestSanityChecker(DirectoriesMixin, TestCase): - def test_no_issues(self): + def test_no_issues(self) -> None: with self.assertLogs() as capture: call_command("document_sanity_checker") self.assertEqual(len(capture.output), 1) self.assertIn("Sanity checker detected no issues.", capture.output[0]) - def test_errors(self): + def test_errors(self) -> None: doc = Document.objects.create( title="test", content="test", @@ -229,7 +167,7 @@ class TestSanityChecker(DirectoriesMixin, TestCase): class TestConvertMariaDBUUID(TestCase): @mock.patch("django.db.connection.schema_editor") - def test_convert(self, m): + def test_convert(self, m) -> None: m.alter_field.return_value = None stdout = StringIO() @@ -241,7 +179,7 @@ class TestConvertMariaDBUUID(TestCase): class TestPruneAuditLogs(TestCase): - def test_prune_audit_logs(self): + def test_prune_audit_logs(self) -> None: LogEntry.objects.create( content_type=ContentType.objects.get_for_model(Document), object_id=1, diff --git a/src/documents/tests/test_management_consumer.py b/src/documents/tests/test_management_consumer.py index 821fd82e0..810ae63e2 100644 --- a/src/documents/tests/test_management_consumer.py +++ b/src/documents/tests/test_management_consumer.py @@ -1,418 +1,1048 @@ -import filecmp +""" +Tests for the document consumer management command. + +Tests are organized into classes by component: +- TestFileStabilityTracker: Unit tests for FileStabilityTracker +- TestConsumerFilter: Unit tests for ConsumerFilter +- TestConsumeFile: Unit tests for the _consume_file function +- TestTagsFromPath: Unit tests for _tags_from_path +- TestCommandValidation: Tests for command argument validation +- TestCommandOneshot: Tests for oneshot mode +- TestCommandWatch: Integration tests for the watch loop +""" + +from __future__ import annotations + +import re import shutil from pathlib import Path from threading import Thread +from time import monotonic from time import sleep -from unittest import mock +from typing import TYPE_CHECKING -from django.conf import settings +import pytest +from django import db from django.core.management import CommandError -from django.core.management import call_command -from django.test import TransactionTestCase +from django.db import DatabaseError from django.test import override_settings +from watchfiles import Change -from documents.consumer import ConsumerError from documents.data_models import ConsumableDocument -from documents.management.commands import document_consumer +from documents.data_models import DocumentSource +from documents.management.commands.document_consumer import Command +from documents.management.commands.document_consumer import ConsumerFilter +from documents.management.commands.document_consumer import FileStabilityTracker +from documents.management.commands.document_consumer import TrackedFile +from documents.management.commands.document_consumer import _consume_file +from documents.management.commands.document_consumer import _tags_from_path from documents.models import Tag -from documents.tests.utils import DirectoriesMixin -from documents.tests.utils import DocumentConsumeDelayMixin + +if TYPE_CHECKING: + from collections.abc import Callable + from collections.abc import Generator + from unittest.mock import MagicMock + + from pytest_django.fixtures import SettingsWrapper + from pytest_mock import MockerFixture + + +@pytest.fixture +def stability_tracker() -> FileStabilityTracker: + """Create a FileStabilityTracker with a short delay for testing.""" + return FileStabilityTracker(stability_delay=0.1) + + +@pytest.fixture +def temp_file(tmp_path: Path) -> Path: + """Create a temporary file for testing.""" + file_path = tmp_path / "test_file.pdf" + file_path.write_bytes(b"test content") + return file_path + + +@pytest.fixture +def consumption_dir(tmp_path: Path) -> Path: + """Create a temporary consumption directory for testing.""" + consume_dir = tmp_path / "consume" + consume_dir.mkdir() + return consume_dir + + +@pytest.fixture +def scratch_dir(tmp_path: Path) -> Path: + """Create a temporary scratch directory for testing.""" + scratch = tmp_path / "scratch" + scratch.mkdir() + return scratch + + +@pytest.fixture +def sample_pdf(tmp_path: Path) -> Path: + """Create a sample PDF file.""" + pdf_content = b"%PDF-1.4\n%test\n1 0 obj\n<<>>\nendobj\ntrailer\n<<>>\n%%EOF" + pdf_path = tmp_path / "sample.pdf" + pdf_path.write_bytes(pdf_content) + return pdf_path + + +@pytest.fixture +def consumer_filter() -> ConsumerFilter: + """Create a ConsumerFilter for testing.""" + return ConsumerFilter( + supported_extensions=frozenset({".pdf", ".png", ".jpg"}), + ignore_patterns=[r"^custom_ignore"], + ) + + +@pytest.fixture +def mock_consume_file_delay(mocker: MockerFixture) -> MagicMock: + """Mock the consume_file.delay celery task.""" + mock_task = mocker.patch( + "documents.management.commands.document_consumer.consume_file", + ) + mock_task.delay = mocker.MagicMock() + return mock_task + + +@pytest.fixture +def mock_supported_extensions(mocker: MockerFixture) -> MagicMock: + """Mock get_supported_file_extensions to return only .pdf.""" + return mocker.patch( + "documents.management.commands.document_consumer.get_supported_file_extensions", + return_value={".pdf"}, + ) + + +def wait_for_mock_call( + mock_obj: MagicMock, + timeout_s: float = 5.0, + poll_interval_s: float = 0.1, +) -> bool: + """ + Actively wait for a mock to be called. + + Args: + mock_obj: The mock object to check (e.g., mock.delay) + timeout_s: Maximum time to wait in seconds + poll_interval_s: How often to check in seconds + + Returns: + True if mock was called within timeout, False otherwise + """ + start_time = monotonic() + while monotonic() - start_time < timeout_s: + if mock_obj.called: + return True + sleep(poll_interval_s) + return False + + +class TestTrackedFile: + """Tests for the TrackedFile dataclass.""" + + def test_update_stats_existing_file(self, temp_file: Path) -> None: + """Test update_stats succeeds for existing file.""" + tracked = TrackedFile(path=temp_file, last_event_time=monotonic()) + assert tracked.update_stats() is True + assert tracked.last_mtime is not None + assert tracked.last_size is not None + assert tracked.last_size == len(b"test content") + + def test_update_stats_nonexistent_file(self, tmp_path: Path) -> None: + """Test update_stats fails for nonexistent file.""" + tracked = TrackedFile( + path=tmp_path / "nonexistent.pdf", + last_event_time=monotonic(), + ) + assert tracked.update_stats() is False + assert tracked.last_mtime is None + assert tracked.last_size is None + + def test_is_unchanged_same_stats(self, temp_file: Path) -> None: + """Test is_unchanged returns True when stats haven't changed.""" + tracked = TrackedFile(path=temp_file, last_event_time=monotonic()) + tracked.update_stats() + assert tracked.is_unchanged() is True + + def test_is_unchanged_modified_file(self, temp_file: Path) -> None: + """Test is_unchanged returns False when file is modified.""" + tracked = TrackedFile(path=temp_file, last_event_time=monotonic()) + tracked.update_stats() + temp_file.write_bytes(b"modified content that is longer") + assert tracked.is_unchanged() is False + + def test_is_unchanged_deleted_file(self, temp_file: Path) -> None: + """Test is_unchanged returns False when file is deleted.""" + tracked = TrackedFile(path=temp_file, last_event_time=monotonic()) + tracked.update_stats() + temp_file.unlink() + assert tracked.is_unchanged() is False + + +class TestFileStabilityTracker: + """Tests for the FileStabilityTracker class.""" + + def test_track_new_file( + self, + stability_tracker: FileStabilityTracker, + temp_file: Path, + ) -> None: + """Test tracking a new file adds it to pending.""" + stability_tracker.track(temp_file, Change.added) + assert stability_tracker.pending_count == 1 + assert stability_tracker.has_pending_files() is True + + def test_track_modified_file( + self, + stability_tracker: FileStabilityTracker, + temp_file: Path, + ) -> None: + """Test tracking a modified file updates its event time.""" + stability_tracker.track(temp_file, Change.added) + sleep(0.05) + stability_tracker.track(temp_file, Change.modified) + assert stability_tracker.pending_count == 1 + + def test_track_deleted_file( + self, + stability_tracker: FileStabilityTracker, + temp_file: Path, + ) -> None: + """Test tracking a deleted file removes it from pending.""" + stability_tracker.track(temp_file, Change.added) + assert stability_tracker.pending_count == 1 + stability_tracker.track(temp_file, Change.deleted) + assert stability_tracker.pending_count == 0 + assert stability_tracker.has_pending_files() is False + + def test_track_nonexistent_file( + self, + stability_tracker: FileStabilityTracker, + tmp_path: Path, + ) -> None: + """Test tracking a nonexistent file doesn't add it.""" + nonexistent = tmp_path / "nonexistent.pdf" + stability_tracker.track(nonexistent, Change.added) + assert stability_tracker.pending_count == 0 + + def test_get_stable_files_before_delay( + self, + stability_tracker: FileStabilityTracker, + temp_file: Path, + ) -> None: + """Test get_stable_files returns nothing before delay expires.""" + stability_tracker.track(temp_file, Change.added) + stable = list(stability_tracker.get_stable_files()) + assert len(stable) == 0 + assert stability_tracker.pending_count == 1 + + def test_get_stable_files_after_delay( + self, + stability_tracker: FileStabilityTracker, + temp_file: Path, + ) -> None: + """Test get_stable_files returns file after delay expires.""" + stability_tracker.track(temp_file, Change.added) + sleep(0.15) + stable = list(stability_tracker.get_stable_files()) + assert len(stable) == 1 + assert stable[0] == temp_file + assert stability_tracker.pending_count == 0 + + def test_get_stable_files_modified_during_check( + self, + stability_tracker: FileStabilityTracker, + temp_file: Path, + ) -> None: + """Test file is not returned if modified during stability check.""" + stability_tracker.track(temp_file, Change.added) + sleep(0.12) + temp_file.write_bytes(b"modified content") + stable = list(stability_tracker.get_stable_files()) + assert len(stable) == 0 + assert stability_tracker.pending_count == 1 + + def test_get_stable_files_deleted_during_check(self, temp_file: Path) -> None: + """Test deleted file is not returned during stability check.""" + tracker = FileStabilityTracker(stability_delay=0.1) + tracker.track(temp_file, Change.added) + sleep(0.12) + temp_file.unlink() + stable = list(tracker.get_stable_files()) + assert len(stable) == 0 + assert tracker.pending_count == 0 + + def test_get_stable_files_error_during_check( + self, + temp_file: Path, + mocker: MockerFixture, + ) -> None: + """Test a file which has become inaccessible is removed from tracking""" + + mocker.patch.object(Path, "stat", side_effect=PermissionError("denied")) + + tracker = FileStabilityTracker(stability_delay=0.1) + tracker.track(temp_file, Change.added) + stable = list(tracker.get_stable_files()) + assert len(stable) == 0 + assert tracker.pending_count == 0 + + def test_multiple_files_tracking( + self, + stability_tracker: FileStabilityTracker, + tmp_path: Path, + ) -> None: + """Test tracking multiple files independently.""" + file1 = tmp_path / "file1.pdf" + file2 = tmp_path / "file2.pdf" + file1.write_bytes(b"content1") + file2.write_bytes(b"content2") + + stability_tracker.track(file1, Change.added) + sleep(0.05) + stability_tracker.track(file2, Change.added) + + assert stability_tracker.pending_count == 2 + + sleep(0.06) + stable = list(stability_tracker.get_stable_files()) + assert len(stable) == 1 + assert stable[0] == file1 + + sleep(0.06) + stable = list(stability_tracker.get_stable_files()) + assert len(stable) == 1 + assert stable[0] == file2 + + def test_track_resolves_path( + self, + stability_tracker: FileStabilityTracker, + temp_file: Path, + ) -> None: + """Test that tracking resolves paths consistently.""" + stability_tracker.track(temp_file, Change.added) + stability_tracker.track(temp_file.resolve(), Change.modified) + assert stability_tracker.pending_count == 1 + + +class TestConsumerFilter: + """Tests for the ConsumerFilter class.""" + + @pytest.mark.parametrize( + ("filename", "should_accept"), + [ + pytest.param("document.pdf", True, id="supported_pdf"), + pytest.param("image.png", True, id="supported_png"), + pytest.param("photo.jpg", True, id="supported_jpg"), + pytest.param("document.PDF", True, id="case_insensitive"), + pytest.param("document.xyz", False, id="unsupported_ext"), + pytest.param("document", False, id="no_extension"), + pytest.param(".DS_Store", False, id="ds_store"), + pytest.param(".DS_STORE", False, id="ds_store_upper"), + pytest.param("._document.pdf", False, id="macos_resource_fork"), + pytest.param("._hidden", False, id="macos_resource_no_ext"), + pytest.param("Thumbs.db", False, id="thumbs_db"), + pytest.param("desktop.ini", False, id="desktop_ini"), + pytest.param("custom_ignore_this.pdf", False, id="custom_pattern"), + pytest.param("stfolder.pdf", True, id="similar_to_ignored"), + pytest.param("my_document.pdf", True, id="normal_with_underscore"), + ], + ) + def test_file_filtering( + self, + consumer_filter: ConsumerFilter, + tmp_path: Path, + filename: str, + should_accept: bool, # noqa: FBT001 + ) -> None: + """Test filter correctly accepts or rejects files.""" + test_file = tmp_path / filename + test_file.touch() + assert consumer_filter(Change.added, str(test_file)) is should_accept + + @pytest.mark.parametrize( + ("dirname", "should_accept"), + [ + pytest.param(".stfolder", False, id="syncthing_stfolder"), + pytest.param(".stversions", False, id="syncthing_stversions"), + pytest.param("@eaDir", False, id="synology_eadir"), + pytest.param(".Spotlight-V100", False, id="macos_spotlight"), + pytest.param(".Trashes", False, id="macos_trashes"), + pytest.param("__MACOSX", False, id="macos_archive"), + pytest.param(".localized", False, id="macos_localized"), + pytest.param("documents", True, id="normal_dir"), + pytest.param("invoices", True, id="normal_dir_2"), + ], + ) + def test_directory_filtering( + self, + consumer_filter: ConsumerFilter, + tmp_path: Path, + dirname: str, + should_accept: bool, # noqa: FBT001 + ) -> None: + """Test filter correctly accepts or rejects directories.""" + test_dir = tmp_path / dirname + test_dir.mkdir() + assert consumer_filter(Change.added, str(test_dir)) is should_accept + + def test_default_patterns_are_valid_regex(self) -> None: + """Test that default patterns are valid regex.""" + for pattern in ConsumerFilter.DEFAULT_IGNORE_PATTERNS: + re.compile(pattern) + + def test_custom_ignore_dirs(self, tmp_path: Path) -> None: + """Test filter respects custom ignore_dirs.""" + filter_obj = ConsumerFilter( + supported_extensions=frozenset({".pdf"}), + ignore_dirs=["custom_ignored_dir"], + ) + + # Custom ignored directory should be rejected + custom_dir = tmp_path / "custom_ignored_dir" + custom_dir.mkdir() + assert filter_obj(Change.added, str(custom_dir)) is False + + # Normal directory should be accepted + normal_dir = tmp_path / "normal_dir" + normal_dir.mkdir() + assert filter_obj(Change.added, str(normal_dir)) is True + + # Default ignored directories should still be ignored + stfolder = tmp_path / ".stfolder" + stfolder.mkdir() + assert filter_obj(Change.added, str(stfolder)) is False + + +class TestConsumerFilterDefaults: + """Tests for ConsumerFilter with default settings.""" + + def test_filter_with_mocked_extensions( + self, + tmp_path: Path, + mocker: MockerFixture, + ) -> None: + """Test filter works when using mocked extensions from parser.""" + mocker.patch( + "documents.management.commands.document_consumer.get_supported_file_extensions", + return_value={".pdf", ".png"}, + ) + filter_obj = ConsumerFilter() + test_file = tmp_path / "document.pdf" + test_file.touch() + assert filter_obj(Change.added, str(test_file)) is True + + +class TestConsumeFile: + """Tests for the _consume_file function.""" + + def test_consume_queues_file( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + ) -> None: + """Test _consume_file queues a valid file.""" + target = consumption_dir / "document.pdf" + shutil.copy(sample_pdf, target) + + _consume_file( + filepath=target, + consumption_dir=consumption_dir, + subdirs_as_tags=False, + ) + + mock_consume_file_delay.delay.assert_called_once() + call_args = mock_consume_file_delay.delay.call_args + consumable_doc = call_args[0][0] + assert isinstance(consumable_doc, ConsumableDocument) + assert consumable_doc.original_file == target + assert consumable_doc.source == DocumentSource.ConsumeFolder + + def test_consume_nonexistent_file( + self, + consumption_dir: Path, + mock_consume_file_delay: MagicMock, + ) -> None: + """Test _consume_file handles nonexistent files gracefully.""" + _consume_file( + filepath=consumption_dir / "nonexistent.pdf", + consumption_dir=consumption_dir, + subdirs_as_tags=False, + ) + mock_consume_file_delay.delay.assert_not_called() + + def test_consume_directory( + self, + consumption_dir: Path, + mock_consume_file_delay: MagicMock, + ) -> None: + """Test _consume_file ignores directories.""" + subdir = consumption_dir / "subdir" + subdir.mkdir() + + _consume_file( + filepath=subdir, + consumption_dir=consumption_dir, + subdirs_as_tags=False, + ) + mock_consume_file_delay.delay.assert_not_called() + + def test_consume_with_permission_error( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + mocker: MockerFixture, + ) -> None: + """Test _consume_file handles permission errors.""" + target = consumption_dir / "document.pdf" + shutil.copy(sample_pdf, target) + + mocker.patch.object(Path, "is_file", side_effect=PermissionError("denied")) + _consume_file( + filepath=target, + consumption_dir=consumption_dir, + subdirs_as_tags=False, + ) + mock_consume_file_delay.delay.assert_not_called() + + def test_consume_with_tags_error( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + mocker: MockerFixture, + ) -> None: + """Test _consume_file handles errors during tag creation""" + target = consumption_dir / "document.pdf" + shutil.copy(sample_pdf, target) + + mocker.patch( + "documents.management.commands.document_consumer._tags_from_path", + side_effect=DatabaseError("Something happened"), + ) + + _consume_file( + filepath=target, + consumption_dir=consumption_dir, + subdirs_as_tags=True, + ) + mock_consume_file_delay.delay.assert_called_once() + call_args = mock_consume_file_delay.delay.call_args + overrides = call_args[0][1] + assert overrides.tag_ids is None + + +@pytest.mark.django_db +class TestTagsFromPath: + """Tests for the _tags_from_path function.""" + + def test_creates_tags_from_subdirectories(self, consumption_dir: Path) -> None: + """Test tags are created for each subdirectory.""" + subdir = consumption_dir / "Invoice" / "2024" + subdir.mkdir(parents=True) + target = subdir / "document.pdf" + target.touch() + + tag_ids = _tags_from_path(target, consumption_dir) + + assert len(tag_ids) == 2 + assert Tag.objects.filter(name="Invoice").exists() + assert Tag.objects.filter(name="2024").exists() + + def test_reuses_existing_tags(self, consumption_dir: Path) -> None: + """Test existing tags are reused (case-insensitive).""" + existing_tag = Tag.objects.create(name="existing") + + subdir = consumption_dir / "EXISTING" + subdir.mkdir(parents=True) + target = subdir / "document.pdf" + target.touch() + + tag_ids = _tags_from_path(target, consumption_dir) + + assert len(tag_ids) == 1 + assert existing_tag.pk in tag_ids + assert Tag.objects.filter(name__iexact="existing").count() == 1 + + def test_no_tags_for_root_file(self, consumption_dir: Path) -> None: + """Test no tags created for files directly in consumption dir.""" + target = consumption_dir / "document.pdf" + target.touch() + + tag_ids = _tags_from_path(target, consumption_dir) + + assert len(tag_ids) == 0 + + +class TestCommandValidation: + """Tests for command argument validation.""" + + def test_raises_for_missing_consumption_dir( + self, + settings: SettingsWrapper, + ) -> None: + """Test command raises error when directory is not provided.""" + settings.CONSUMPTION_DIR = None + with pytest.raises(CommandError, match="not configured"): + cmd = Command() + cmd.handle(directory=None, oneshot=True, testing=False) + + def test_raises_for_nonexistent_directory(self, tmp_path: Path) -> None: + """Test command raises error for nonexistent directory.""" + nonexistent = tmp_path / "nonexistent" + + with pytest.raises(CommandError, match="does not exist"): + cmd = Command() + cmd.handle(directory=str(nonexistent), oneshot=True, testing=False) + + def test_raises_for_file_instead_of_directory(self, sample_pdf: Path) -> None: + """Test command raises error when path is a file, not directory.""" + with pytest.raises(CommandError, match="not a directory"): + cmd = Command() + cmd.handle(directory=str(sample_pdf), oneshot=True, testing=False) + + +@pytest.mark.usefixtures("mock_supported_extensions") +class TestCommandOneshot: + """Tests for oneshot mode.""" + + def test_processes_existing_files( + self, + consumption_dir: Path, + scratch_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + settings: SettingsWrapper, + ) -> None: + """Test oneshot mode processes existing files.""" + target = consumption_dir / "document.pdf" + shutil.copy(sample_pdf, target) + + settings.SCRATCH_DIR = scratch_dir + settings.CONSUMER_IGNORE_PATTERNS = [] + + cmd = Command() + cmd.handle(directory=str(consumption_dir), oneshot=True, testing=False) + + mock_consume_file_delay.delay.assert_called_once() + + def test_processes_recursive( + self, + consumption_dir: Path, + scratch_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + settings: SettingsWrapper, + ) -> None: + """Test oneshot mode processes files recursively.""" + subdir = consumption_dir / "subdir" + subdir.mkdir() + target = subdir / "document.pdf" + shutil.copy(sample_pdf, target) + + settings.SCRATCH_DIR = scratch_dir + settings.CONSUMER_RECURSIVE = True + settings.CONSUMER_IGNORE_PATTERNS = [] + + cmd = Command() + cmd.handle(directory=str(consumption_dir), oneshot=True, testing=False) + + mock_consume_file_delay.delay.assert_called_once() + + def test_ignores_unsupported_extensions( + self, + consumption_dir: Path, + scratch_dir: Path, + mock_consume_file_delay: MagicMock, + settings: SettingsWrapper, + ) -> None: + """Test oneshot mode ignores unsupported file extensions.""" + target = consumption_dir / "document.xyz" + target.write_bytes(b"content") + + settings.SCRATCH_DIR = scratch_dir + settings.CONSUMER_IGNORE_PATTERNS = [] + + cmd = Command() + cmd.handle(directory=str(consumption_dir), oneshot=True, testing=False) + + mock_consume_file_delay.delay.assert_not_called() class ConsumerThread(Thread): - def __init__(self): + """Thread wrapper for running the consumer command with proper cleanup.""" + + def __init__( + self, + consumption_dir: Path, + scratch_dir: Path, + *, + recursive: bool = False, + subdirs_as_tags: bool = False, + polling_interval: float = 0, + stability_delay: float = 0.1, + ) -> None: super().__init__() - self.cmd = document_consumer.Command() + self.consumption_dir = consumption_dir + self.scratch_dir = scratch_dir + self.recursive = recursive + self.subdirs_as_tags = subdirs_as_tags + self.polling_interval = polling_interval + self.stability_delay = stability_delay + self.cmd = Command() self.cmd.stop_flag.clear() + # Non-daemon ensures finally block runs and connections are closed + self.daemon = False + self.exception: Exception | None = None def run(self) -> None: - self.cmd.handle(directory=settings.CONSUMPTION_DIR, oneshot=False, testing=True) + try: + # Use override_settings to avoid polluting global settings + # which would affect other tests running on the same worker + with override_settings( + SCRATCH_DIR=self.scratch_dir, + CONSUMER_RECURSIVE=self.recursive, + CONSUMER_SUBDIRS_AS_TAGS=self.subdirs_as_tags, + CONSUMER_POLLING_INTERVAL=self.polling_interval, + CONSUMER_STABILITY_DELAY=self.stability_delay, + CONSUMER_IGNORE_PATTERNS=[], + ): + self.cmd.handle( + directory=str(self.consumption_dir), + oneshot=False, + testing=True, + ) + except Exception as e: + self.exception = e + finally: + # Close database connections created in this thread + db.connections.close_all() - def stop(self): - # Consumer checks this every second. + def stop(self) -> None: self.cmd.stop_flag.set() - -def chunked(size, source): - for i in range(0, len(source), size): - yield source[i : i + size] - - -class ConsumerThreadMixin(DocumentConsumeDelayMixin): - """ - Provides a thread which runs the consumer management command at setUp - and stops it at tearDown - """ - - sample_file: Path = ( - Path(__file__).parent / Path("samples") / Path("simple.pdf") - ).resolve() - - def setUp(self) -> None: - super().setUp() - self.t = None - - def t_start(self): - self.t = ConsumerThread() - self.t.start() - # give the consumer some time to do initial work - sleep(1) - - def tearDown(self) -> None: - if self.t: - # set the stop flag - self.t.stop() - # wait for the consumer to exit. - self.t.join() - self.t = None - - super().tearDown() - - def wait_for_task_mock_call(self, expected_call_count=1): - n = 0 - while n < 50: - if self.consume_file_mock.call_count >= expected_call_count: - # give task_mock some time to finish and raise errors - sleep(1) - return - n += 1 - sleep(0.1) - - # A bogus async_task that will simply check the file for - # completeness and raise an exception otherwise. - def bogus_task( - self, - input_doc: ConsumableDocument, - overrides=None, - ): - eq = filecmp.cmp(input_doc.original_file, self.sample_file, shallow=False) - if not eq: - print("Consumed an INVALID file.") # noqa: T201 - raise ConsumerError("Incomplete File READ FAILED") - else: - print("Consumed a perfectly valid file.") # noqa: T201 - - def slow_write_file(self, target, *, incomplete=False): - with Path(self.sample_file).open("rb") as f: - pdf_bytes = f.read() - - if incomplete: - pdf_bytes = pdf_bytes[: len(pdf_bytes) - 100] - - with Path(target).open("wb") as f: - # this will take 2 seconds, since the file is about 20k. - print("Start writing file.") # noqa: T201 - for b in chunked(1000, pdf_bytes): - f.write(b) - sleep(0.1) - print("file completed.") # noqa: T201 - - -@override_settings( - CONSUMER_INOTIFY_DELAY=0.01, -) -class TestConsumer(DirectoriesMixin, ConsumerThreadMixin, TransactionTestCase): - def test_consume_file(self): - self.t_start() - - f = Path(self.dirs.consumption_dir) / "my_file.pdf" - shutil.copy(self.sample_file, f) - - self.wait_for_task_mock_call() - - self.consume_file_mock.assert_called_once() - - input_doc, _ = self.get_last_consume_delay_call_args() - - self.assertEqual(input_doc.original_file, f) - - def test_consume_file_invalid_ext(self): - self.t_start() - - f = Path(self.dirs.consumption_dir) / "my_file.wow" - shutil.copy(self.sample_file, f) - - self.wait_for_task_mock_call() - - self.consume_file_mock.assert_not_called() - - def test_consume_existing_file(self): - f = Path(self.dirs.consumption_dir) / "my_file.pdf" - shutil.copy(self.sample_file, f) - - self.t_start() - self.consume_file_mock.assert_called_once() - - input_doc, _ = self.get_last_consume_delay_call_args() - - self.assertEqual(input_doc.original_file, f) - - @mock.patch("documents.management.commands.document_consumer.logger.error") - def test_slow_write_pdf(self, error_logger): - self.consume_file_mock.side_effect = self.bogus_task - - self.t_start() - - fname = Path(self.dirs.consumption_dir) / "my_file.pdf" - - self.slow_write_file(fname) - - self.wait_for_task_mock_call() - - error_logger.assert_not_called() - - self.consume_file_mock.assert_called_once() - - input_doc, _ = self.get_last_consume_delay_call_args() - - self.assertEqual(input_doc.original_file, fname) - - @mock.patch("documents.management.commands.document_consumer.logger.error") - def test_slow_write_and_move(self, error_logger): - self.consume_file_mock.side_effect = self.bogus_task - - self.t_start() - - fname = Path(self.dirs.consumption_dir) / "my_file.~df" - fname2 = Path(self.dirs.consumption_dir) / "my_file.pdf" - - self.slow_write_file(fname) - shutil.move(fname, fname2) - - self.wait_for_task_mock_call() - - self.consume_file_mock.assert_called_once() - - input_doc, _ = self.get_last_consume_delay_call_args() - - self.assertEqual(input_doc.original_file, fname2) - - error_logger.assert_not_called() - - @mock.patch("documents.management.commands.document_consumer.logger.error") - def test_slow_write_incomplete(self, error_logger): - self.consume_file_mock.side_effect = self.bogus_task - - self.t_start() - - fname = Path(self.dirs.consumption_dir) / "my_file.pdf" - self.slow_write_file(fname, incomplete=True) - - self.wait_for_task_mock_call() - - self.consume_file_mock.assert_called_once() - - input_doc, _ = self.get_last_consume_delay_call_args() - - self.assertEqual(input_doc.original_file, fname) - - # assert that we have an error logged with this invalid file. - error_logger.assert_called_once() - - @override_settings(CONSUMPTION_DIR="does_not_exist") - def test_consumption_directory_invalid(self): - self.assertRaises(CommandError, call_command, "document_consumer", "--oneshot") - - @override_settings(CONSUMPTION_DIR="") - def test_consumption_directory_unset(self): - self.assertRaises(CommandError, call_command, "document_consumer", "--oneshot") - - def test_mac_write(self): - self.consume_file_mock.side_effect = self.bogus_task - - self.t_start() - - shutil.copy( - self.sample_file, - Path(self.dirs.consumption_dir) / ".DS_STORE", - ) - shutil.copy( - self.sample_file, - Path(self.dirs.consumption_dir) / "my_file.pdf", - ) - shutil.copy( - self.sample_file, - Path(self.dirs.consumption_dir) / "._my_file.pdf", - ) - shutil.copy( - self.sample_file, - Path(self.dirs.consumption_dir) / "my_second_file.pdf", - ) - shutil.copy( - self.sample_file, - Path(self.dirs.consumption_dir) / "._my_second_file.pdf", - ) - - sleep(5) - - self.wait_for_task_mock_call(expected_call_count=2) - - self.assertEqual(2, self.consume_file_mock.call_count) - - consumed_files = [] - for input_doc, _ in self.get_all_consume_delay_call_args(): - consumed_files.append(input_doc.original_file.name) - - self.assertCountEqual(consumed_files, ["my_file.pdf", "my_second_file.pdf"]) - - def test_is_ignored(self): - test_paths = [ - { - "path": str(Path(self.dirs.consumption_dir) / "foo.pdf"), - "ignore": False, - }, - { - "path": str( - Path(self.dirs.consumption_dir) / "foo" / "bar.pdf", - ), - "ignore": False, - }, - { - "path": str(Path(self.dirs.consumption_dir) / ".DS_STORE"), - "ignore": True, - }, - { - "path": str(Path(self.dirs.consumption_dir) / ".DS_Store"), - "ignore": True, - }, - { - "path": str( - Path(self.dirs.consumption_dir) / ".stfolder" / "foo.pdf", - ), - "ignore": True, - }, - { - "path": str(Path(self.dirs.consumption_dir) / ".stfolder.pdf"), - "ignore": False, - }, - { - "path": str( - Path(self.dirs.consumption_dir) / ".stversions" / "foo.pdf", - ), - "ignore": True, - }, - { - "path": str( - Path(self.dirs.consumption_dir) / ".stversions.pdf", - ), - "ignore": False, - }, - { - "path": str(Path(self.dirs.consumption_dir) / "._foo.pdf"), - "ignore": True, - }, - { - "path": str(Path(self.dirs.consumption_dir) / "my_foo.pdf"), - "ignore": False, - }, - { - "path": str( - Path(self.dirs.consumption_dir) / "._foo" / "bar.pdf", - ), - "ignore": True, - }, - { - "path": str( - Path(self.dirs.consumption_dir) - / "@eaDir" - / "SYNO@.fileindexdb" - / "_1jk.fnm", - ), - "ignore": True, - }, - ] - for test_setup in test_paths: - filepath = test_setup["path"] - expected_ignored_result = test_setup["ignore"] - self.assertEqual( - expected_ignored_result, - document_consumer._is_ignored(filepath), - f'_is_ignored("{filepath}") != {expected_ignored_result}', + def stop_and_wait(self, timeout: float = 5.0) -> None: + """Stop the thread and wait for it to finish, with cleanup.""" + self.stop() + self.join(timeout=timeout) + if self.is_alive(): + # Thread didn't stop in time - this is a test failure + raise RuntimeError( + f"Consumer thread did not stop within {timeout}s timeout", ) - @mock.patch("documents.management.commands.document_consumer.Path.open") - def test_consume_file_busy(self, open_mock): - # Calling this mock always raises this - open_mock.side_effect = OSError - self.t_start() +@pytest.fixture +def start_consumer( + consumption_dir: Path, + scratch_dir: Path, + mock_supported_extensions: MagicMock, +) -> Generator[Callable[..., ConsumerThread], None, None]: + """Start a consumer thread and ensure cleanup.""" + threads: list[ConsumerThread] = [] - f = Path(self.dirs.consumption_dir) / "my_file.pdf" - shutil.copy(self.sample_file, f) + def _start(**kwargs) -> ConsumerThread: + thread = ConsumerThread(consumption_dir, scratch_dir, **kwargs) + threads.append(thread) + thread.start() + sleep(2.0) # Give thread time to start + return thread - self.wait_for_task_mock_call() + try: + yield _start + finally: + # Cleanup all threads that were started + for thread in threads: + thread.stop_and_wait() - self.consume_file_mock.assert_not_called() + failed_threads = [] + for thread in threads: + thread.join(timeout=5.0) + if thread.is_alive(): + failed_threads.append(thread) + + # Clean up any Tags created by threads (they bypass test transaction isolation) + Tag.objects.all().delete() + + db.connections.close_all() + + if failed_threads: + pytest.fail( + f"{len(failed_threads)} consumer thread(s) did not stop within timeout", + ) -@override_settings( - CONSUMER_POLLING=1, - # please leave the delay here and down below - # see https://github.com/paperless-ngx/paperless-ngx/pull/66 - CONSUMER_POLLING_DELAY=3, - CONSUMER_POLLING_RETRY_COUNT=20, -) -class TestConsumerPolling(TestConsumer): - # just do all the tests with polling - pass +@pytest.mark.django_db +class TestCommandWatch: + """Integration tests for the watch loop.""" + + def test_detects_new_file( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + start_consumer: Callable[..., ConsumerThread], + ) -> None: + """Test watch mode detects and consumes new files.""" + thread = start_consumer() + + target = consumption_dir / "document.pdf" + shutil.copy(sample_pdf, target) + + wait_for_mock_call(mock_consume_file_delay.delay, timeout_s=2.0) + + if thread.exception: + raise thread.exception + + mock_consume_file_delay.delay.assert_called() + + def test_detects_moved_file( + self, + consumption_dir: Path, + scratch_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + start_consumer: Callable[..., ConsumerThread], + ) -> None: + """Test watch mode detects moved/renamed files.""" + temp_location = scratch_dir / "temp.pdf" + shutil.copy(sample_pdf, temp_location) + + thread = start_consumer() + + sleep(0.5) + + target = consumption_dir / "document.pdf" + shutil.move(temp_location, target) + + wait_for_mock_call(mock_consume_file_delay.delay, timeout_s=2.0) + + if thread.exception: + raise thread.exception + + mock_consume_file_delay.delay.assert_called() + + def test_handles_slow_write( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + start_consumer: Callable[..., ConsumerThread], + ) -> None: + """Test watch mode waits for slow writes to complete.""" + pdf_bytes = sample_pdf.read_bytes() + + thread = start_consumer(stability_delay=0.2) + + target = consumption_dir / "document.pdf" + with target.open("wb") as f: + for i in range(0, len(pdf_bytes), 100): + f.write(pdf_bytes[i : i + 100]) + f.flush() + sleep(0.05) + + wait_for_mock_call(mock_consume_file_delay.delay, timeout_s=2.0) + + if thread.exception: + raise thread.exception + + mock_consume_file_delay.delay.assert_called() + + def test_ignores_macos_files( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + start_consumer: Callable[..., ConsumerThread], + ) -> None: + """Test watch mode ignores macOS system files.""" + thread = start_consumer() + + (consumption_dir / ".DS_Store").write_bytes(b"test") + (consumption_dir / "._document.pdf").write_bytes(b"test") + shutil.copy(sample_pdf, consumption_dir / "valid.pdf") + + wait_for_mock_call(mock_consume_file_delay.delay, timeout_s=2.0) + + if thread.exception: + raise thread.exception + + assert mock_consume_file_delay.delay.call_count == 1 + call_args = mock_consume_file_delay.delay.call_args[0][0] + assert call_args.original_file.name == "valid.pdf" + + @pytest.mark.django_db + @pytest.mark.usefixtures("mock_supported_extensions") + def test_stop_flag_stops_consumer( + self, + consumption_dir: Path, + scratch_dir: Path, + mock_consume_file_delay: MagicMock, + ) -> None: + """Test stop flag properly stops the consumer.""" + thread = ConsumerThread(consumption_dir, scratch_dir) + try: + thread.start() + sleep(0.3) + assert thread.is_alive() + finally: + thread.stop_and_wait(timeout=5.0) + # Clean up any Tags created by the thread + Tag.objects.all().delete() + + assert not thread.is_alive() -@override_settings(CONSUMER_INOTIFY_DELAY=0.01, CONSUMER_RECURSIVE=True) -class TestConsumerRecursive(TestConsumer): - # just do all the tests with recursive - pass +@pytest.mark.django_db +class TestCommandWatchPolling: + """Tests for polling mode.""" + + def test_polling_mode_works( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + start_consumer: Callable[..., ConsumerThread], + ) -> None: + """ + Test polling mode detects files. + + Uses active waiting with timeout to handle CI delays and polling timing. + """ + # Use shorter polling interval for faster test + thread = start_consumer(polling_interval=0.5, stability_delay=0.1) + + target = consumption_dir / "document.pdf" + shutil.copy(sample_pdf, target) + + # Actively wait for consumption + # Polling needs: interval (0.5s) + stability (0.1s) + next poll (0.5s) + margin + wait_for_mock_call(mock_consume_file_delay.delay, timeout_s=5.0) + + if thread.exception: + raise thread.exception + + mock_consume_file_delay.delay.assert_called() -@override_settings( - CONSUMER_RECURSIVE=True, - CONSUMER_POLLING=1, - CONSUMER_POLLING_DELAY=3, - CONSUMER_POLLING_RETRY_COUNT=20, -) -class TestConsumerRecursivePolling(TestConsumer): - # just do all the tests with polling and recursive - pass +@pytest.mark.django_db +class TestCommandWatchRecursive: + """Tests for recursive watching.""" + + def test_recursive_detects_nested_files( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + start_consumer: Callable[..., ConsumerThread], + ) -> None: + """Test recursive mode detects files in subdirectories.""" + subdir = consumption_dir / "level1" / "level2" + subdir.mkdir(parents=True) + + thread = start_consumer(recursive=True) + + target = subdir / "document.pdf" + shutil.copy(sample_pdf, target) + + wait_for_mock_call(mock_consume_file_delay.delay, timeout_s=2.0) + + if thread.exception: + raise thread.exception + + mock_consume_file_delay.delay.assert_called() + + def test_subdirs_as_tags( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + start_consumer: Callable[..., ConsumerThread], + mocker: MockerFixture, + ) -> None: + """Test subdirs_as_tags creates tags from directory names.""" + # Mock _tags_from_path to avoid database operations in the consumer thread + mock_tags = mocker.patch( + "documents.management.commands.document_consumer._tags_from_path", + return_value=[1, 2], + ) + + subdir = consumption_dir / "Invoices" / "2024" + subdir.mkdir(parents=True) + + thread = start_consumer(recursive=True, subdirs_as_tags=True) + + target = subdir / "document.pdf" + shutil.copy(sample_pdf, target) + + wait_for_mock_call(mock_consume_file_delay.delay, timeout_s=2.0) + + if thread.exception: + raise thread.exception + + mock_consume_file_delay.delay.assert_called() + mock_tags.assert_called() + call_args = mock_consume_file_delay.delay.call_args + overrides = call_args[0][1] + assert overrides.tag_ids is not None + assert len(overrides.tag_ids) == 2 -class TestConsumerTags(DirectoriesMixin, ConsumerThreadMixin, TransactionTestCase): - @override_settings(CONSUMER_RECURSIVE=True, CONSUMER_SUBDIRS_AS_TAGS=True) - def test_consume_file_with_path_tags(self): - tag_names = ("existingTag", "Space Tag") - # Create a Tag prior to consuming a file using it in path - tag_ids = [ - Tag.objects.create(name="existingtag").pk, - ] +@pytest.mark.django_db +class TestCommandWatchEdgeCases: + """Tests for edge cases and error handling.""" - self.t_start() + def test_handles_deleted_before_stable( + self, + consumption_dir: Path, + sample_pdf: Path, + mock_consume_file_delay: MagicMock, + start_consumer: Callable[..., ConsumerThread], + ) -> None: + """Test handles files deleted before becoming stable.""" + thread = start_consumer(stability_delay=0.3) - path = Path(self.dirs.consumption_dir) / "/".join(tag_names) - path.mkdir(parents=True, exist_ok=True) - f = path / "my_file.pdf" - # Wait at least inotify read_delay for recursive watchers - # to be created for the new directories - sleep(1) - shutil.copy(self.sample_file, f) + target = consumption_dir / "document.pdf" + shutil.copy(sample_pdf, target) + sleep(0.1) + target.unlink() - self.wait_for_task_mock_call() + sleep(0.5) - self.consume_file_mock.assert_called_once() + if thread.exception: + raise thread.exception - # Add the pk of the Tag created by _consume() - tag_ids.append(Tag.objects.get(name=tag_names[1]).pk) + mock_consume_file_delay.delay.assert_not_called() - input_doc, overrides = self.get_last_consume_delay_call_args() + @pytest.mark.usefixtures("mock_supported_extensions") + def test_handles_task_exception( + self, + consumption_dir: Path, + scratch_dir: Path, + sample_pdf: Path, + mocker: MockerFixture, + ) -> None: + """Test handles exceptions from consume task gracefully.""" + mock_task = mocker.patch( + "documents.management.commands.document_consumer.consume_file", + ) + mock_task.delay.side_effect = Exception("Task error") - self.assertEqual(input_doc.original_file, f) + thread = ConsumerThread(consumption_dir, scratch_dir) + try: + thread.start() + sleep(0.3) - # assertCountEqual has a bad name, but test that the first - # sequence contains the same elements as second, regardless of - # their order. - self.assertCountEqual(overrides.tag_ids, tag_ids) + target = consumption_dir / "document.pdf" + shutil.copy(sample_pdf, target) + sleep(0.5) - @override_settings( - CONSUMER_POLLING=1, - CONSUMER_POLLING_DELAY=3, - CONSUMER_POLLING_RETRY_COUNT=20, - ) - def test_consume_file_with_path_tags_polling(self): - self.test_consume_file_with_path_tags() + # Consumer should still be running despite the exception + assert thread.is_alive() + finally: + thread.stop_and_wait(timeout=5.0) + # Clean up any Tags created by the thread + Tag.objects.all().delete() diff --git a/src/documents/tests/test_management_exporter.py b/src/documents/tests/test_management_exporter.py index a67e5e8c5..391d87f41 100644 --- a/src/documents/tests/test_management_exporter.py +++ b/src/documents/tests/test_management_exporter.py @@ -86,9 +86,8 @@ class TestExportImport( content="Content", checksum="82186aaa94f0b98697d704b90fd1c072", title="wow_dec", - filename="0000004.pdf.gpg", + filename="0000004.pdf", mime_type="application/pdf", - storage_type=Document.STORAGE_TYPE_GPG, ) self.note = Note.objects.create( @@ -187,7 +186,7 @@ class TestExportImport( return manifest - def test_exporter(self, *, use_filename_format=False): + def test_exporter(self, *, use_filename_format=False) -> None: shutil.rmtree(Path(self.dirs.media_dir) / "documents") shutil.copytree( Path(__file__).parent / "samples" / "documents", @@ -242,10 +241,9 @@ class TestExportImport( checksum = hashlib.md5(f.read()).hexdigest() self.assertEqual(checksum, element["fields"]["checksum"]) - self.assertEqual( - element["fields"]["storage_type"], - Document.STORAGE_TYPE_UNENCRYPTED, - ) + # Generated field "content_length" should not be exported, + # it is automatically computed during import. + self.assertNotIn("content_length", element["fields"]) if document_exporter.EXPORTER_ARCHIVE_NAME in element: fname = ( @@ -290,7 +288,7 @@ class TestExportImport( # everything is alright after the test self.assertEqual(len(messages), 0) - def test_exporter_with_filename_format(self): + def test_exporter_with_filename_format(self) -> None: shutil.rmtree(Path(self.dirs.media_dir) / "documents") shutil.copytree( Path(__file__).parent / "samples" / "documents", @@ -302,7 +300,7 @@ class TestExportImport( ): self.test_exporter(use_filename_format=True) - def test_update_export_changed_time(self): + def test_update_export_changed_time(self) -> None: shutil.rmtree(Path(self.dirs.media_dir) / "documents") shutil.copytree( Path(__file__).parent / "samples" / "documents", @@ -341,7 +339,7 @@ class TestExportImport( st_mtime_4 = (self.target / "manifest.json").stat().st_mtime self.assertEqual(st_mtime_3, st_mtime_4) - def test_update_export_changed_checksum(self): + def test_update_export_changed_checksum(self) -> None: shutil.rmtree(Path(self.dirs.media_dir) / "documents") shutil.copytree( Path(__file__).parent / "samples" / "documents", @@ -371,7 +369,7 @@ class TestExportImport( self.assertIsFile(self.target / "manifest.json") - def test_update_export_deleted_document(self): + def test_update_export_deleted_document(self) -> None: shutil.rmtree(Path(self.dirs.media_dir) / "documents") shutil.copytree( Path(__file__).parent / "samples" / "documents", @@ -406,7 +404,7 @@ class TestExportImport( self.assertTrue(len(manifest), 6) @override_settings(FILENAME_FORMAT="{title}/{correspondent}") - def test_update_export_changed_location(self): + def test_update_export_changed_location(self) -> None: shutil.rmtree(Path(self.dirs.media_dir) / "documents") shutil.copytree( Path(__file__).parent / "samples" / "documents", @@ -430,19 +428,19 @@ class TestExportImport( self.target / "wow2" / "none_01.pdf", ) - def test_export_missing_files(self): + def test_export_missing_files(self) -> None: target = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, target) Document.objects.create( checksum="AAAAAAAAAAAAAAAAA", title="wow", - filename="0000004.pdf", + filename="0000010.pdf", mime_type="application/pdf", ) self.assertRaises(FileNotFoundError, call_command, "document_exporter", target) @override_settings(PASSPHRASE="test") - def test_export_zipped(self): + def test_export_zipped(self) -> None: """ GIVEN: - Request to export documents to zipfile @@ -474,7 +472,7 @@ class TestExportImport( self.assertIn("metadata.json", zip.namelist()) @override_settings(PASSPHRASE="test") - def test_export_zipped_format(self): + def test_export_zipped_format(self) -> None: """ GIVEN: - Request to export documents to zipfile @@ -511,7 +509,7 @@ class TestExportImport( self.assertIn("metadata.json", zip.namelist()) @override_settings(PASSPHRASE="test") - def test_export_zipped_with_delete(self): + def test_export_zipped_with_delete(self) -> None: """ GIVEN: - Request to export documents to zipfile @@ -557,7 +555,7 @@ class TestExportImport( self.assertIn("manifest.json", zip.namelist()) self.assertIn("metadata.json", zip.namelist()) - def test_export_target_not_exists(self): + def test_export_target_not_exists(self) -> None: """ GIVEN: - Request to export documents to directory that doesn't exist @@ -571,9 +569,9 @@ class TestExportImport( with self.assertRaises(CommandError) as e: call_command(*args) - self.assertEqual("That path isn't a directory", str(e)) + self.assertEqual("That path doesn't exist", str(e.exception)) - def test_export_target_exists_but_is_file(self): + def test_export_target_exists_but_is_file(self) -> None: """ GIVEN: - Request to export documents to file instead of directory @@ -589,9 +587,9 @@ class TestExportImport( with self.assertRaises(CommandError) as e: call_command(*args) - self.assertEqual("That path isn't a directory", str(e)) + self.assertEqual("That path isn't a directory", str(e.exception)) - def test_export_target_not_writable(self): + def test_export_target_not_writable(self) -> None: """ GIVEN: - Request to export documents to directory that's not writeable @@ -608,9 +606,12 @@ class TestExportImport( with self.assertRaises(CommandError) as e: call_command(*args) - self.assertEqual("That path doesn't appear to be writable", str(e)) + self.assertEqual( + "That path doesn't appear to be writable", + str(e.exception), + ) - def test_no_archive(self): + def test_no_archive(self) -> None: """ GIVEN: - Request to export documents to directory @@ -651,7 +652,7 @@ class TestExportImport( call_command("document_importer", "--no-progress-bar", self.target) self.assertEqual(Document.objects.count(), 4) - def test_no_thumbnail(self): + def test_no_thumbnail(self) -> None: """ GIVEN: - Request to export documents to directory @@ -694,7 +695,7 @@ class TestExportImport( call_command("document_importer", "--no-progress-bar", self.target) self.assertEqual(Document.objects.count(), 4) - def test_split_manifest(self): + def test_split_manifest(self) -> None: """ GIVEN: - Request to export documents to directory @@ -726,7 +727,7 @@ class TestExportImport( self.assertEqual(Document.objects.count(), 4) self.assertEqual(CustomFieldInstance.objects.count(), 1) - def test_folder_prefix(self): + def test_folder_prefix(self) -> None: """ GIVEN: - Request to export documents to directory @@ -750,7 +751,7 @@ class TestExportImport( call_command("document_importer", "--no-progress-bar", self.target) self.assertEqual(Document.objects.count(), 4) - def test_import_db_transaction_failed(self): + def test_import_db_transaction_failed(self) -> None: """ GIVEN: - Import from manifest started @@ -794,7 +795,7 @@ class TestExportImport( self.assertEqual(ContentType.objects.count(), num_content_type_objects) self.assertEqual(Permission.objects.count(), num_permission_objects + 1) - def test_exporter_with_auditlog_disabled(self): + def test_exporter_with_auditlog_disabled(self) -> None: shutil.rmtree(Path(self.dirs.media_dir) / "documents") shutil.copytree( Path(__file__).parent / "samples" / "documents", @@ -808,7 +809,7 @@ class TestExportImport( for obj in manifest: self.assertNotEqual(obj["model"], "auditlog.logentry") - def test_export_data_only(self): + def test_export_data_only(self) -> None: """ GIVEN: - Request to export documents with data only @@ -858,7 +859,7 @@ class TestCryptExportImport( shutil.rmtree(self.target, ignore_errors=True) return super().tearDown() - def test_export_passphrase(self): + def test_export_passphrase(self) -> None: """ GIVEN: - A mail account exists @@ -933,7 +934,7 @@ class TestCryptExportImport( social_token = SocialToken.objects.first() self.assertIsNotNone(social_token) - def test_import_crypt_no_passphrase(self): + def test_import_crypt_no_passphrase(self) -> None: """ GIVEN: - A mail account exists @@ -964,7 +965,7 @@ class TestCryptExportImport( "No passphrase was given, but this export contains encrypted fields", ) - def test_export_warn_plaintext(self): + def test_export_warn_plaintext(self) -> None: """ GIVEN: - A mail account exists diff --git a/src/documents/tests/test_management_fuzzy.py b/src/documents/tests/test_management_fuzzy.py index 2d7d3735a..5ba57b15b 100644 --- a/src/documents/tests/test_management_fuzzy.py +++ b/src/documents/tests/test_management_fuzzy.py @@ -23,7 +23,7 @@ class TestFuzzyMatchCommand(TestCase): ) return stdout.getvalue(), stderr.getvalue() - def test_invalid_ratio_lower_limit(self): + def test_invalid_ratio_lower_limit(self) -> None: """ GIVEN: - Invalid ratio below lower limit @@ -34,9 +34,9 @@ class TestFuzzyMatchCommand(TestCase): """ with self.assertRaises(CommandError) as e: self.call_command("--ratio", "-1") - self.assertIn("The ratio must be between 0 and 100", str(e)) + self.assertIn("The ratio must be between 0 and 100", str(e.exception)) - def test_invalid_ratio_upper_limit(self): + def test_invalid_ratio_upper_limit(self) -> None: """ GIVEN:s - Invalid ratio above upper @@ -47,9 +47,9 @@ class TestFuzzyMatchCommand(TestCase): """ with self.assertRaises(CommandError) as e: self.call_command("--ratio", "101") - self.assertIn("The ratio must be between 0 and 100", str(e)) + self.assertIn("The ratio must be between 0 and 100", str(e.exception)) - def test_invalid_process_count(self): + def test_invalid_process_count(self) -> None: """ GIVEN: - Invalid process count less than 0 above upper @@ -60,9 +60,9 @@ class TestFuzzyMatchCommand(TestCase): """ with self.assertRaises(CommandError) as e: self.call_command("--processes", "0") - self.assertIn("There must be at least 1 process", str(e)) + self.assertIn("There must be at least 1 process", str(e.exception)) - def test_no_matches(self): + def test_no_matches(self) -> None: """ GIVEN: - 2 documents exist @@ -89,7 +89,7 @@ class TestFuzzyMatchCommand(TestCase): stdout, _ = self.call_command() self.assertIn("No matches found", stdout) - def test_with_matches(self): + def test_with_matches(self) -> None: """ GIVEN: - 2 documents exist @@ -118,7 +118,7 @@ class TestFuzzyMatchCommand(TestCase): stdout, _ = self.call_command("--processes", "1") self.assertRegex(stdout, self.MSG_REGEX) - def test_with_3_matches(self): + def test_with_3_matches(self) -> None: """ GIVEN: - 3 documents exist @@ -157,7 +157,7 @@ class TestFuzzyMatchCommand(TestCase): for line in lines: self.assertRegex(line, self.MSG_REGEX) - def test_document_deletion(self): + def test_document_deletion(self) -> None: """ GIVEN: - 3 documents exist @@ -206,3 +206,29 @@ class TestFuzzyMatchCommand(TestCase): self.assertEqual(Document.objects.count(), 2) self.assertIsNotNone(Document.objects.get(pk=1)) self.assertIsNotNone(Document.objects.get(pk=2)) + + def test_empty_content(self) -> None: + """ + GIVEN: + - 2 documents exist, content is empty (pw-protected) + WHEN: + - Command is called + THEN: + - No matches are found + """ + Document.objects.create( + checksum="BEEFCAFE", + title="A", + content="", + mime_type="application/pdf", + filename="test.pdf", + ) + Document.objects.create( + checksum="DEADBEAF", + title="A", + content="", + mime_type="application/pdf", + filename="other_test.pdf", + ) + stdout, _ = self.call_command() + self.assertIn("No matches found", stdout) diff --git a/src/documents/tests/test_management_importer.py b/src/documents/tests/test_management_importer.py index e700ecdc9..8537716ee 100644 --- a/src/documents/tests/test_management_importer.py +++ b/src/documents/tests/test_management_importer.py @@ -24,7 +24,7 @@ class TestCommandImport( SampleDirMixin, TestCase, ): - def test_check_manifest_exists(self): + def test_check_manifest_exists(self) -> None: """ GIVEN: - Source directory exists @@ -40,12 +40,12 @@ class TestCommandImport( "--no-progress-bar", str(self.dirs.scratch_dir), ) - self.assertIn( - "That directory doesn't appear to contain a manifest.json file.", - str(e), - ) + self.assertIn( + "That directory doesn't appear to contain a manifest.json file.", + str(e.exception), + ) - def test_check_manifest_malformed(self): + def test_check_manifest_malformed(self) -> None: """ GIVEN: - Source directory exists @@ -66,12 +66,12 @@ class TestCommandImport( "--no-progress-bar", str(self.dirs.scratch_dir), ) - self.assertIn( - "The manifest file contains a record which does not refer to an actual document file.", - str(e), - ) + self.assertIn( + "The manifest file contains a record which does not refer to an actual document file.", + str(e.exception), + ) - def test_check_manifest_file_not_found(self): + def test_check_manifest_file_not_found(self) -> None: """ GIVEN: - Source directory exists @@ -95,9 +95,9 @@ class TestCommandImport( "--no-progress-bar", str(self.dirs.scratch_dir), ) - self.assertIn('The manifest file refers to "noexist.pdf"', str(e)) + self.assertIn('The manifest file refers to "noexist.pdf"', str(e.exception)) - def test_import_permission_error(self): + def test_import_permission_error(self) -> None: """ GIVEN: - Original file which cannot be read from @@ -129,16 +129,16 @@ class TestCommandImport( cmd.data_only = False with self.assertRaises(CommandError) as cm: cmd.check_manifest_validity() - self.assertInt("Failed to read from original file", str(cm.exception)) + self.assertIn("Failed to read from original file", str(cm.exception)) original_path.chmod(0o444) archive_path.chmod(0o222) with self.assertRaises(CommandError) as cm: cmd.check_manifest_validity() - self.assertInt("Failed to read from archive file", str(cm.exception)) + self.assertIn("Failed to read from archive file", str(cm.exception)) - def test_import_source_not_existing(self): + def test_import_source_not_existing(self) -> None: """ GIVEN: - Source given doesn't exist @@ -149,9 +149,9 @@ class TestCommandImport( """ with self.assertRaises(CommandError) as cm: call_command("document_importer", Path("/tmp/notapath")) - self.assertInt("That path doesn't exist", str(cm.exception)) + self.assertIn("That path doesn't exist", str(cm.exception)) - def test_import_source_not_readable(self): + def test_import_source_not_readable(self) -> None: """ GIVEN: - Source given isn't readable @@ -165,12 +165,12 @@ class TestCommandImport( path.chmod(0o222) with self.assertRaises(CommandError) as cm: call_command("document_importer", path) - self.assertInt( - "That path doesn't appear to be readable", - str(cm.exception), - ) + self.assertIn( + "That path doesn't appear to be readable", + str(cm.exception), + ) - def test_import_source_does_not_exist(self): + def test_import_source_does_not_exist(self) -> None: """ GIVEN: - Source directory does not exist @@ -185,10 +185,9 @@ class TestCommandImport( with self.assertRaises(CommandError) as e: call_command("document_importer", "--no-progress-bar", str(path)) + self.assertIn("That path doesn't exist", str(e.exception)) - self.assertIn("That path doesn't exist", str(e)) - - def test_import_files_exist(self): + def test_import_files_exist(self) -> None: """ GIVEN: - Source directory does exist @@ -217,7 +216,7 @@ class TestCommandImport( str(stdout.read()), ) - def test_import_with_user_exists(self): + def test_import_with_user_exists(self) -> None: """ GIVEN: - Source directory does exist @@ -245,7 +244,7 @@ class TestCommandImport( stdout.read(), ) - def test_import_with_documents_exists(self): + def test_import_with_documents_exists(self) -> None: """ GIVEN: - Source directory does exist @@ -281,7 +280,7 @@ class TestCommandImport( str(stdout.read()), ) - def test_import_no_metadata_or_version_file(self): + def test_import_no_metadata_or_version_file(self) -> None: """ GIVEN: - A source directory with a manifest file only @@ -307,7 +306,7 @@ class TestCommandImport( self.assertIn("No version.json or metadata.json file located", stdout_str) - def test_import_version_file(self): + def test_import_version_file(self) -> None: """ GIVEN: - A source directory with a manifest file and version file @@ -337,7 +336,7 @@ class TestCommandImport( self.assertIn("Version mismatch:", stdout_str) self.assertIn("importing 2.8.1", stdout_str) - def test_import_zipped_export(self): + def test_import_zipped_export(self) -> None: """ GIVEN: - A zip file with correct content (manifest.json and version.json inside) diff --git a/src/documents/tests/test_management_retagger.py b/src/documents/tests/test_management_retagger.py index 7b78b32c1..87912211b 100644 --- a/src/documents/tests/test_management_retagger.py +++ b/src/documents/tests/test_management_retagger.py @@ -11,7 +11,7 @@ from documents.tests.utils import DirectoriesMixin class TestRetagger(DirectoriesMixin, TestCase): - def make_models(self): + def make_models(self) -> None: self.sp1 = StoragePath.objects.create( name="dummy a", path="{created_data}/{title}", @@ -109,7 +109,7 @@ class TestRetagger(DirectoriesMixin, TestCase): super().setUp() self.make_models() - def test_add_tags(self): + def test_add_tags(self) -> None: call_command("document_retagger", "--tags") d_first, d_second, d_unrelated, d_auto = self.get_updated_docs() @@ -121,21 +121,21 @@ class TestRetagger(DirectoriesMixin, TestCase): self.assertEqual(d_first.tags.first(), self.tag_first) self.assertEqual(d_second.tags.first(), self.tag_second) - def test_add_type(self): + def test_add_type(self) -> None: call_command("document_retagger", "--document_type") d_first, d_second, _, _ = self.get_updated_docs() self.assertEqual(d_first.document_type, self.doctype_first) self.assertEqual(d_second.document_type, self.doctype_second) - def test_add_correspondent(self): + def test_add_correspondent(self) -> None: call_command("document_retagger", "--correspondent") d_first, d_second, _, _ = self.get_updated_docs() self.assertEqual(d_first.correspondent, self.correspondent_first) self.assertEqual(d_second.correspondent, self.correspondent_second) - def test_overwrite_preserve_inbox(self): + def test_overwrite_preserve_inbox(self) -> None: self.d1.tags.add(self.tag_second) call_command("document_retagger", "--tags", "--overwrite") @@ -158,7 +158,7 @@ class TestRetagger(DirectoriesMixin, TestCase): ) self.assertEqual(d_auto.tags.count(), 0) - def test_add_tags_suggest(self): + def test_add_tags_suggest(self) -> None: call_command("document_retagger", "--tags", "--suggest") d_first, d_second, _, d_auto = self.get_updated_docs() @@ -166,21 +166,21 @@ class TestRetagger(DirectoriesMixin, TestCase): self.assertEqual(d_second.tags.count(), 0) self.assertEqual(d_auto.tags.count(), 1) - def test_add_type_suggest(self): + def test_add_type_suggest(self) -> None: call_command("document_retagger", "--document_type", "--suggest") d_first, d_second, _, _ = self.get_updated_docs() self.assertIsNone(d_first.document_type) self.assertIsNone(d_second.document_type) - def test_add_correspondent_suggest(self): + def test_add_correspondent_suggest(self) -> None: call_command("document_retagger", "--correspondent", "--suggest") d_first, d_second, _, _ = self.get_updated_docs() self.assertIsNone(d_first.correspondent) self.assertIsNone(d_second.correspondent) - def test_add_tags_suggest_url(self): + def test_add_tags_suggest_url(self) -> None: call_command( "document_retagger", "--tags", @@ -193,7 +193,7 @@ class TestRetagger(DirectoriesMixin, TestCase): self.assertEqual(d_second.tags.count(), 0) self.assertEqual(d_auto.tags.count(), 1) - def test_add_type_suggest_url(self): + def test_add_type_suggest_url(self) -> None: call_command( "document_retagger", "--document_type", @@ -205,7 +205,7 @@ class TestRetagger(DirectoriesMixin, TestCase): self.assertIsNone(d_first.document_type) self.assertIsNone(d_second.document_type) - def test_add_correspondent_suggest_url(self): + def test_add_correspondent_suggest_url(self) -> None: call_command( "document_retagger", "--correspondent", @@ -217,7 +217,7 @@ class TestRetagger(DirectoriesMixin, TestCase): self.assertIsNone(d_first.correspondent) self.assertIsNone(d_second.correspondent) - def test_add_storage_path(self): + def test_add_storage_path(self) -> None: """ GIVEN: - 2 storage paths with documents which match them @@ -240,7 +240,7 @@ class TestRetagger(DirectoriesMixin, TestCase): self.assertIsNone(d_second.storage_path) self.assertEqual(d_unrelated.storage_path, self.sp3) - def test_overwrite_storage_path(self): + def test_overwrite_storage_path(self) -> None: """ GIVEN: - 2 storage paths with documents which match them @@ -260,7 +260,7 @@ class TestRetagger(DirectoriesMixin, TestCase): self.assertIsNone(d_second.storage_path) self.assertEqual(d_unrelated.storage_path, self.sp2) - def test_id_range_parameter(self): + def test_id_range_parameter(self) -> None: commandOutput = "" Document.objects.create( checksum="E", diff --git a/src/documents/tests/test_management_superuser.py b/src/documents/tests/test_management_superuser.py index 01f03c8e1..55484eb05 100644 --- a/src/documents/tests/test_management_superuser.py +++ b/src/documents/tests/test_management_superuser.py @@ -21,7 +21,7 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): ) return out.getvalue() - def test_no_user(self): + def test_no_user(self) -> None: """ GIVEN: - Environment does not contain admin user info @@ -33,15 +33,14 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): # just the consumer user which is created # during migration, and AnonymousUser - self.assertEqual(User.objects.count(), 2) - self.assertTrue(User.objects.filter(username="consumer").exists()) + self.assertEqual(User.objects.count(), 1) self.assertEqual(User.objects.filter(is_superuser=True).count(), 0) self.assertEqual( out, "Please check if PAPERLESS_ADMIN_PASSWORD has been set in the environment\n", ) - def test_create(self): + def test_create(self) -> None: """ GIVEN: - Environment does contain admin user password @@ -54,12 +53,12 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): # count is 3 as there's the consumer # user already created during migration, and AnonymousUser user: User = User.objects.get_by_natural_key("admin") - self.assertEqual(User.objects.count(), 3) + self.assertEqual(User.objects.count(), 2) self.assertTrue(user.is_superuser) self.assertEqual(user.email, "root@localhost") self.assertEqual(out, 'Created superuser "admin" with provided password.\n') - def test_some_superuser_exists(self): + def test_some_superuser_exists(self) -> None: """ GIVEN: - A super user already exists @@ -71,7 +70,7 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): out = self.call_command(environ={"PAPERLESS_ADMIN_PASSWORD": "123456"}) - self.assertEqual(User.objects.count(), 3) + self.assertEqual(User.objects.count(), 2) with self.assertRaises(User.DoesNotExist): User.objects.get_by_natural_key("admin") self.assertEqual( @@ -79,7 +78,7 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): "Did not create superuser, the DB already contains superusers\n", ) - def test_admin_superuser_exists(self): + def test_admin_superuser_exists(self) -> None: """ GIVEN: - A super user already exists @@ -92,12 +91,12 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): out = self.call_command(environ={"PAPERLESS_ADMIN_PASSWORD": "123456"}) - self.assertEqual(User.objects.count(), 3) + self.assertEqual(User.objects.count(), 2) user: User = User.objects.get_by_natural_key("admin") self.assertTrue(user.check_password("password")) self.assertEqual(out, "Did not create superuser, a user admin already exists\n") - def test_admin_user_exists(self): + def test_admin_user_exists(self) -> None: """ GIVEN: - A user already exists with the username admin @@ -111,13 +110,13 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): out = self.call_command(environ={"PAPERLESS_ADMIN_PASSWORD": "123456"}) - self.assertEqual(User.objects.count(), 3) + self.assertEqual(User.objects.count(), 2) user: User = User.objects.get_by_natural_key("admin") self.assertTrue(user.check_password("password")) self.assertFalse(user.is_superuser) self.assertEqual(out, "Did not create superuser, a user admin already exists\n") - def test_no_password(self): + def test_no_password(self) -> None: """ GIVEN: - No environment data is set @@ -133,7 +132,7 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): "Please check if PAPERLESS_ADMIN_PASSWORD has been set in the environment\n", ) - def test_user_email(self): + def test_user_email(self) -> None: """ GIVEN: - Environment does contain admin user password @@ -150,13 +149,13 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): ) user: User = User.objects.get_by_natural_key("admin") - self.assertEqual(User.objects.count(), 3) + self.assertEqual(User.objects.count(), 2) self.assertTrue(user.is_superuser) self.assertEqual(user.email, "hello@world.com") self.assertEqual(user.username, "admin") self.assertEqual(out, 'Created superuser "admin" with provided password.\n') - def test_user_username(self): + def test_user_username(self) -> None: """ GIVEN: - Environment does contain admin user password @@ -174,7 +173,7 @@ class TestManageSuperUser(DirectoriesMixin, TestCase): ) user: User = User.objects.get_by_natural_key("super") - self.assertEqual(User.objects.count(), 3) + self.assertEqual(User.objects.count(), 2) self.assertTrue(user.is_superuser) self.assertEqual(user.email, "hello@world.com") self.assertEqual(user.username, "super") diff --git a/src/documents/tests/test_management_thumbnails.py b/src/documents/tests/test_management_thumbnails.py index cb80e6c70..0cb65e4d4 100644 --- a/src/documents/tests/test_management_thumbnails.py +++ b/src/documents/tests/test_management_thumbnails.py @@ -13,7 +13,7 @@ from documents.tests.utils import FileSystemAssertsMixin class TestMakeThumbnails(DirectoriesMixin, FileSystemAssertsMixin, TestCase): - def make_models(self): + def make_models(self) -> None: self.d1 = Document.objects.create( checksum="A", title="A", @@ -54,12 +54,12 @@ class TestMakeThumbnails(DirectoriesMixin, FileSystemAssertsMixin, TestCase): super().setUp() self.make_models() - def test_process_document(self): + def test_process_document(self) -> None: self.assertIsNotFile(self.d1.thumbnail_path) _process_document(self.d1.id) self.assertIsFile(self.d1.thumbnail_path) - def test_process_document_password_protected(self): + def test_process_document_password_protected(self) -> None: self.assertIsFile(get_default_thumbnail()) self.assertIsNotFile(self.d3.thumbnail_path) _process_document(self.d3.id) @@ -68,7 +68,7 @@ class TestMakeThumbnails(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsFile(self.d3.thumbnail_path) @mock.patch("documents.management.commands.document_thumbnails.shutil.move") - def test_process_document_invalid_mime_type(self, m: mock.Mock): + def test_process_document_invalid_mime_type(self, m: mock.Mock) -> None: self.d1.mime_type = "asdasdasd" self.d1.save() @@ -80,14 +80,14 @@ class TestMakeThumbnails(DirectoriesMixin, FileSystemAssertsMixin, TestCase): # Not called during processing of document m.assert_not_called() - def test_command(self): + def test_command(self) -> None: self.assertIsNotFile(self.d1.thumbnail_path) self.assertIsNotFile(self.d2.thumbnail_path) call_command("document_thumbnails", "--processes", "1") self.assertIsFile(self.d1.thumbnail_path) self.assertIsFile(self.d2.thumbnail_path) - def test_command_documentid(self): + def test_command_documentid(self) -> None: self.assertIsNotFile(self.d1.thumbnail_path) self.assertIsNotFile(self.d2.thumbnail_path) call_command("document_thumbnails", "--processes", "1", "-d", f"{self.d1.id}") diff --git a/src/documents/tests/test_matchables.py b/src/documents/tests/test_matchables.py index 180cf77ed..04ff3f6d3 100644 --- a/src/documents/tests/test_matchables.py +++ b/src/documents/tests/test_matchables.py @@ -25,7 +25,7 @@ class _TestMatchingBase(TestCase): no_match: Iterable[str], *, case_sensitive: bool = False, - ): + ) -> None: for klass in (Tag, Correspondent, DocumentType): instance = klass.objects.create( name=str(randint(10000, 99999)), @@ -48,7 +48,7 @@ class _TestMatchingBase(TestCase): class TestMatching(_TestMatchingBase): - def test_match_none(self): + def test_match_none(self) -> None: self._test_matching( "", "MATCH_NONE", @@ -59,7 +59,7 @@ class TestMatching(_TestMatchingBase): ), ) - def test_match_all(self): + def test_match_all(self) -> None: self._test_matching( "alpha charlie gamma", "MATCH_ALL", @@ -105,7 +105,7 @@ class TestMatching(_TestMatchingBase): ), ) - def test_match_any(self): + def test_match_any(self) -> None: self._test_matching( "alpha charlie gamma", "MATCH_ANY", @@ -149,7 +149,7 @@ class TestMatching(_TestMatchingBase): ("the lazy fox jumped over the brown dogs",), ) - def test_match_literal(self): + def test_match_literal(self) -> None: self._test_matching( "alpha charlie gamma", "MATCH_LITERAL", @@ -183,7 +183,7 @@ class TestMatching(_TestMatchingBase): ), ) - def test_match_regex(self): + def test_match_regex(self) -> None: self._test_matching( r"alpha\w+gamma", "MATCH_REGEX", @@ -203,10 +203,26 @@ class TestMatching(_TestMatchingBase): ), ) - def test_tach_invalid_regex(self): + def test_tach_invalid_regex(self) -> None: self._test_matching("[", "MATCH_REGEX", [], ["Don't match this"]) - def test_match_fuzzy(self): + def test_match_regex_timeout_returns_false(self) -> None: + tag = Tag.objects.create( + name="slow", + match=r"(a+)+$", + matching_algorithm=Tag.MATCH_REGEX, + ) + document = Document(content=("a" * 5000) + "X") + + with self.assertLogs("paperless.regex", level="WARNING") as cm: + self.assertFalse(matching.matches(tag, document)) + + self.assertTrue( + any("timed out" in message for message in cm.output), + f"Expected timeout log, got {cm.output}", + ) + + def test_match_fuzzy(self) -> None: self._test_matching( "Springfield, Miss.", "MATCH_FUZZY", @@ -221,7 +237,7 @@ class TestMatching(_TestMatchingBase): class TestCaseSensitiveMatching(_TestMatchingBase): - def test_match_all(self): + def test_match_all(self) -> None: self._test_matching( "alpha charlie gamma", "MATCH_ALL", @@ -270,7 +286,7 @@ class TestCaseSensitiveMatching(_TestMatchingBase): case_sensitive=True, ) - def test_match_any(self): + def test_match_any(self) -> None: self._test_matching( "alpha charlie gamma", "MATCH_ANY", @@ -325,7 +341,7 @@ class TestCaseSensitiveMatching(_TestMatchingBase): case_sensitive=True, ) - def test_match_literal(self): + def test_match_literal(self) -> None: self._test_matching( "alpha charlie gamma", "MATCH_LITERAL", @@ -352,7 +368,7 @@ class TestCaseSensitiveMatching(_TestMatchingBase): case_sensitive=True, ) - def test_match_regex(self): + def test_match_regex(self) -> None: self._test_matching( r"alpha\w+gamma", "MATCH_REGEX", @@ -389,7 +405,7 @@ class TestDocumentConsumptionFinishedSignal(TestCase): doing what we expect wrt to tag & correspondent matching. """ - def setUp(self): + def setUp(self) -> None: TestCase.setUp(self) User.objects.create_user(username="test_consumer", password="12345") self.doc_contains = Document.objects.create( @@ -404,7 +420,7 @@ class TestDocumentConsumptionFinishedSignal(TestCase): def tearDown(self) -> None: shutil.rmtree(self.index_dir, ignore_errors=True) - def test_tag_applied_any(self): + def test_tag_applied_any(self) -> None: t1 = Tag.objects.create( name="test", match="keyword", @@ -416,7 +432,7 @@ class TestDocumentConsumptionFinishedSignal(TestCase): ) self.assertTrue(list(self.doc_contains.tags.all()) == [t1]) - def test_tag_not_applied(self): + def test_tag_not_applied(self) -> None: Tag.objects.create( name="test", match="no-match", @@ -428,7 +444,7 @@ class TestDocumentConsumptionFinishedSignal(TestCase): ) self.assertTrue(list(self.doc_contains.tags.all()) == []) - def test_correspondent_applied(self): + def test_correspondent_applied(self) -> None: correspondent = Correspondent.objects.create( name="test", match="keyword", @@ -440,7 +456,7 @@ class TestDocumentConsumptionFinishedSignal(TestCase): ) self.assertTrue(self.doc_contains.correspondent == correspondent) - def test_correspondent_not_applied(self): + def test_correspondent_not_applied(self) -> None: Tag.objects.create( name="test", match="no-match", diff --git a/src/documents/tests/test_migration_archive_files.py b/src/documents/tests/test_migration_archive_files.py deleted file mode 100644 index a2e8a5f8f..000000000 --- a/src/documents/tests/test_migration_archive_files.py +++ /dev/null @@ -1,574 +0,0 @@ -import hashlib -import importlib -import shutil -from pathlib import Path -from unittest import mock - -import pytest -from django.conf import settings -from django.test import override_settings - -from documents.parsers import ParseError -from documents.tests.utils import DirectoriesMixin -from documents.tests.utils import FileSystemAssertsMixin -from documents.tests.utils import TestMigrations - -STORAGE_TYPE_GPG = "gpg" - -migration_1012_obj = importlib.import_module( - "documents.migrations.1012_fix_archive_files", -) - - -def archive_name_from_filename(filename: Path) -> Path: - return Path(filename.stem + ".pdf") - - -def archive_path_old(self) -> Path: - if self.filename: - fname = archive_name_from_filename(Path(self.filename)) - else: - fname = Path(f"{self.pk:07}.pdf") - - return Path(settings.ARCHIVE_DIR) / fname - - -def archive_path_new(doc): - if doc.archive_filename is not None: - return Path(settings.ARCHIVE_DIR) / str(doc.archive_filename) - else: - return None - - -def source_path(doc): - if doc.filename: - fname = str(doc.filename) - else: - fname = f"{doc.pk:07}{doc.file_type}" - if doc.storage_type == STORAGE_TYPE_GPG: - fname += ".gpg" # pragma: no cover - - return Path(settings.ORIGINALS_DIR) / fname - - -def thumbnail_path(doc): - file_name = f"{doc.pk:07}.png" - if doc.storage_type == STORAGE_TYPE_GPG: - file_name += ".gpg" - - return Path(settings.THUMBNAIL_DIR) / file_name - - -def make_test_document( - document_class, - title: str, - mime_type: str, - original: str, - original_filename: str, - archive: str | None = None, - archive_filename: str | None = None, -): - doc = document_class() - doc.filename = original_filename - doc.title = title - doc.mime_type = mime_type - doc.content = "the content, does not matter for this test" - doc.save() - - shutil.copy2(original, source_path(doc)) - with Path(original).open("rb") as f: - doc.checksum = hashlib.md5(f.read()).hexdigest() - - if archive: - if archive_filename: - doc.archive_filename = archive_filename - shutil.copy2(archive, archive_path_new(doc)) - else: - shutil.copy2(archive, archive_path_old(doc)) - - with Path(archive).open("rb") as f: - doc.archive_checksum = hashlib.md5(f.read()).hexdigest() - - doc.save() - - Path(thumbnail_path(doc)).touch() - - return doc - - -simple_jpg = Path(__file__).parent / "samples" / "simple.jpg" -simple_pdf = Path(__file__).parent / "samples" / "simple.pdf" -simple_pdf2 = ( - Path(__file__).parent / "samples" / "documents" / "originals" / "0000002.pdf" -) -simple_pdf3 = ( - Path(__file__).parent / "samples" / "documents" / "originals" / "0000003.pdf" -) -simple_txt = Path(__file__).parent / "samples" / "simple.txt" -simple_png = Path(__file__).parent / "samples" / "simple-noalpha.png" -simple_png2 = Path(__file__).parent / "examples" / "no-text.png" - - -@override_settings(FILENAME_FORMAT="") -class TestMigrateArchiveFiles(DirectoriesMixin, FileSystemAssertsMixin, TestMigrations): - migrate_from = "1006_auto_20201208_2209_squashed_1011_auto_20210101_2340" - migrate_to = "1012_fix_archive_files" - - def setUpBeforeMigration(self, apps): - Document = apps.get_model("documents", "Document") - - self.unrelated = make_test_document( - Document, - "unrelated", - "application/pdf", - simple_pdf3, - "unrelated.pdf", - simple_pdf, - ) - self.no_text = make_test_document( - Document, - "no-text", - "image/png", - simple_png2, - "no-text.png", - simple_pdf, - ) - self.doc_no_archive = make_test_document( - Document, - "no_archive", - "text/plain", - simple_txt, - "no_archive.txt", - ) - self.clash1 = make_test_document( - Document, - "clash", - "application/pdf", - simple_pdf, - "clash.pdf", - simple_pdf, - ) - self.clash2 = make_test_document( - Document, - "clash", - "image/jpeg", - simple_jpg, - "clash.jpg", - simple_pdf, - ) - self.clash3 = make_test_document( - Document, - "clash", - "image/png", - simple_png, - "clash.png", - simple_pdf, - ) - self.clash4 = make_test_document( - Document, - "clash.png", - "application/pdf", - simple_pdf2, - "clash.png.pdf", - simple_pdf2, - ) - - self.assertEqual(archive_path_old(self.clash1), archive_path_old(self.clash2)) - self.assertEqual(archive_path_old(self.clash1), archive_path_old(self.clash3)) - self.assertNotEqual( - archive_path_old(self.clash1), - archive_path_old(self.clash4), - ) - - def testArchiveFilesMigrated(self): - Document = self.apps.get_model("documents", "Document") - - for doc in Document.objects.all(): - if doc.archive_checksum: - self.assertIsNotNone(doc.archive_filename) - self.assertIsFile(archive_path_new(doc)) - else: - self.assertIsNone(doc.archive_filename) - - with Path(source_path(doc)).open("rb") as f: - original_checksum = hashlib.md5(f.read()).hexdigest() - self.assertEqual(original_checksum, doc.checksum) - - if doc.archive_checksum: - self.assertIsFile(archive_path_new(doc)) - with archive_path_new(doc).open("rb") as f: - archive_checksum = hashlib.md5(f.read()).hexdigest() - self.assertEqual(archive_checksum, doc.archive_checksum) - - self.assertEqual( - Document.objects.filter(archive_checksum__isnull=False).count(), - 6, - ) - - def test_filenames(self): - Document = self.apps.get_model("documents", "Document") - self.assertEqual( - Document.objects.get(id=self.unrelated.id).archive_filename, - "unrelated.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.no_text.id).archive_filename, - "no-text.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.doc_no_archive.id).archive_filename, - None, - ) - self.assertEqual( - Document.objects.get(id=self.clash1.id).archive_filename, - f"{self.clash1.id:07}.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.clash2.id).archive_filename, - f"{self.clash2.id:07}.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.clash3.id).archive_filename, - f"{self.clash3.id:07}.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.clash4.id).archive_filename, - "clash.png.pdf", - ) - - -@override_settings(FILENAME_FORMAT="{correspondent}/{title}") -class TestMigrateArchiveFilesWithFilenameFormat(TestMigrateArchiveFiles): - def test_filenames(self): - Document = self.apps.get_model("documents", "Document") - self.assertEqual( - Document.objects.get(id=self.unrelated.id).archive_filename, - "unrelated.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.no_text.id).archive_filename, - "no-text.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.doc_no_archive.id).archive_filename, - None, - ) - self.assertEqual( - Document.objects.get(id=self.clash1.id).archive_filename, - "none/clash.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.clash2.id).archive_filename, - "none/clash_01.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.clash3.id).archive_filename, - "none/clash_02.pdf", - ) - self.assertEqual( - Document.objects.get(id=self.clash4.id).archive_filename, - "clash.png.pdf", - ) - - -def fake_parse_wrapper(parser, path, mime_type, file_name): - parser.archive_path = None - parser.text = "the text" - - -@override_settings(FILENAME_FORMAT="") -class TestMigrateArchiveFilesErrors(DirectoriesMixin, TestMigrations): - migrate_from = "1006_auto_20201208_2209_squashed_1011_auto_20210101_2340" - migrate_to = "1012_fix_archive_files" - auto_migrate = False - - @pytest.mark.skip(reason="Fails with migration tearDown util. Needs investigation.") - def test_archive_missing(self): - Document = self.apps.get_model("documents", "Document") - - doc = make_test_document( - Document, - "clash", - "application/pdf", - simple_pdf, - "clash.pdf", - simple_pdf, - ) - archive_path_old(doc).unlink() - - self.assertRaisesMessage( - ValueError, - "does not exist at: ", - self.performMigration, - ) - - @pytest.mark.skip(reason="Fails with migration tearDown util. Needs investigation.") - def test_parser_missing(self): - Document = self.apps.get_model("documents", "Document") - - make_test_document( - Document, - "document", - "invalid/typesss768", - simple_png, - "document.png", - simple_pdf, - ) - make_test_document( - Document, - "document", - "invalid/typesss768", - simple_jpg, - "document.jpg", - simple_pdf, - ) - - self.assertRaisesMessage( - ValueError, - "no parsers are available", - self.performMigration, - ) - - @mock.patch(f"{__name__}.migration_1012_obj.parse_wrapper") - def test_parser_error(self, m): - m.side_effect = ParseError() - Document = self.apps.get_model("documents", "Document") - - doc1 = make_test_document( - Document, - "document", - "image/png", - simple_png, - "document.png", - simple_pdf, - ) - doc2 = make_test_document( - Document, - "document", - "application/pdf", - simple_jpg, - "document.jpg", - simple_pdf, - ) - - self.assertIsNotNone(doc1.archive_checksum) - self.assertIsNotNone(doc2.archive_checksum) - - with self.assertLogs() as capture: - self.performMigration() - - self.assertEqual(m.call_count, 6) - - self.assertEqual( - len( - list( - filter( - lambda log: "Parse error, will try again in 5 seconds" in log, - capture.output, - ), - ), - ), - 4, - ) - - self.assertEqual( - len( - list( - filter( - lambda log: "Unable to regenerate archive document for ID:" - in log, - capture.output, - ), - ), - ), - 2, - ) - - Document = self.apps.get_model("documents", "Document") - - doc1 = Document.objects.get(id=doc1.id) - doc2 = Document.objects.get(id=doc2.id) - - self.assertIsNone(doc1.archive_checksum) - self.assertIsNone(doc2.archive_checksum) - self.assertIsNone(doc1.archive_filename) - self.assertIsNone(doc2.archive_filename) - - @mock.patch(f"{__name__}.migration_1012_obj.parse_wrapper") - def test_parser_no_archive(self, m): - m.side_effect = fake_parse_wrapper - - Document = self.apps.get_model("documents", "Document") - - doc1 = make_test_document( - Document, - "document", - "image/png", - simple_png, - "document.png", - simple_pdf, - ) - doc2 = make_test_document( - Document, - "document", - "application/pdf", - simple_jpg, - "document.jpg", - simple_pdf, - ) - - with self.assertLogs() as capture: - self.performMigration() - - self.assertEqual( - len( - list( - filter( - lambda log: "Parser did not return an archive document for document" - in log, - capture.output, - ), - ), - ), - 2, - ) - - Document = self.apps.get_model("documents", "Document") - - doc1 = Document.objects.get(id=doc1.id) - doc2 = Document.objects.get(id=doc2.id) - - self.assertIsNone(doc1.archive_checksum) - self.assertIsNone(doc2.archive_checksum) - self.assertIsNone(doc1.archive_filename) - self.assertIsNone(doc2.archive_filename) - - -@override_settings(FILENAME_FORMAT="") -class TestMigrateArchiveFilesBackwards( - DirectoriesMixin, - FileSystemAssertsMixin, - TestMigrations, -): - migrate_from = "1012_fix_archive_files" - migrate_to = "1006_auto_20201208_2209_squashed_1011_auto_20210101_2340" - - def setUpBeforeMigration(self, apps): - Document = apps.get_model("documents", "Document") - - make_test_document( - Document, - "unrelated", - "application/pdf", - simple_pdf2, - "unrelated.txt", - simple_pdf2, - "unrelated.pdf", - ) - make_test_document( - Document, - "no_archive", - "text/plain", - simple_txt, - "no_archive.txt", - ) - make_test_document( - Document, - "clash", - "image/jpeg", - simple_jpg, - "clash.jpg", - simple_pdf, - "clash_02.pdf", - ) - - def testArchiveFilesReverted(self): - Document = self.apps.get_model("documents", "Document") - - for doc in Document.objects.all(): - if doc.archive_checksum: - self.assertIsFile(archive_path_old(doc)) - with Path(source_path(doc)).open("rb") as f: - original_checksum = hashlib.md5(f.read()).hexdigest() - self.assertEqual(original_checksum, doc.checksum) - - if doc.archive_checksum: - self.assertIsFile(archive_path_old(doc)) - with archive_path_old(doc).open("rb") as f: - archive_checksum = hashlib.md5(f.read()).hexdigest() - self.assertEqual(archive_checksum, doc.archive_checksum) - - self.assertEqual( - Document.objects.filter(archive_checksum__isnull=False).count(), - 2, - ) - - -@override_settings(FILENAME_FORMAT="{correspondent}/{title}") -class TestMigrateArchiveFilesBackwardsWithFilenameFormat( - TestMigrateArchiveFilesBackwards, -): - pass - - -@override_settings(FILENAME_FORMAT="") -class TestMigrateArchiveFilesBackwardsErrors(DirectoriesMixin, TestMigrations): - migrate_from = "1012_fix_archive_files" - migrate_to = "1006_auto_20201208_2209_squashed_1011_auto_20210101_2340" - auto_migrate = False - - def test_filename_clash(self): - Document = self.apps.get_model("documents", "Document") - - self.clashA = make_test_document( - Document, - "clash", - "application/pdf", - simple_pdf, - "clash.pdf", - simple_pdf, - "clash_02.pdf", - ) - self.clashB = make_test_document( - Document, - "clash", - "image/jpeg", - simple_jpg, - "clash.jpg", - simple_pdf, - "clash_01.pdf", - ) - - self.assertRaisesMessage( - ValueError, - "would clash with another archive filename", - self.performMigration, - ) - - def test_filename_exists(self): - Document = self.apps.get_model("documents", "Document") - - self.clashA = make_test_document( - Document, - "clash", - "application/pdf", - simple_pdf, - "clash.pdf", - simple_pdf, - "clash.pdf", - ) - self.clashB = make_test_document( - Document, - "clash", - "image/jpeg", - simple_jpg, - "clash.jpg", - simple_pdf, - "clash_01.pdf", - ) - - self.assertRaisesMessage( - ValueError, - "file already exists.", - self.performMigration, - ) diff --git a/src/documents/tests/test_migration_consumption_templates.py b/src/documents/tests/test_migration_consumption_templates.py deleted file mode 100644 index 917007116..000000000 --- a/src/documents/tests/test_migration_consumption_templates.py +++ /dev/null @@ -1,50 +0,0 @@ -from django.contrib.auth import get_user_model - -from documents.tests.utils import TestMigrations - - -class TestMigrateConsumptionTemplate(TestMigrations): - migrate_from = "1038_sharelink" - migrate_to = "1039_consumptiontemplate" - - def setUpBeforeMigration(self, apps): - User = get_user_model() - Group = apps.get_model("auth.Group") - self.Permission = apps.get_model("auth", "Permission") - self.user = User.objects.create(username="user1") - self.group = Group.objects.create(name="group1") - permission = self.Permission.objects.get(codename="add_document") - self.user.user_permissions.add(permission.id) - self.group.permissions.add(permission.id) - - def test_users_with_add_documents_get_add_consumptiontemplate(self): - permission = self.Permission.objects.get(codename="add_consumptiontemplate") - self.assertTrue(self.user.has_perm(f"documents.{permission.codename}")) - self.assertTrue(permission in self.group.permissions.all()) - - -class TestReverseMigrateConsumptionTemplate(TestMigrations): - migrate_from = "1039_consumptiontemplate" - migrate_to = "1038_sharelink" - - def setUpBeforeMigration(self, apps): - User = get_user_model() - Group = apps.get_model("auth.Group") - self.Permission = apps.get_model("auth", "Permission") - self.user = User.objects.create(username="user1") - self.group = Group.objects.create(name="group1") - permission = self.Permission.objects.filter( - codename="add_consumptiontemplate", - ).first() - if permission is not None: - self.user.user_permissions.add(permission.id) - self.group.permissions.add(permission.id) - - def test_remove_consumptiontemplate_permissions(self): - permission = self.Permission.objects.filter( - codename="add_consumptiontemplate", - ).first() - # can be None ? now that CTs removed - if permission is not None: - self.assertFalse(self.user.has_perm(f"documents.{permission.codename}")) - self.assertFalse(permission in self.group.permissions.all()) diff --git a/src/documents/tests/test_migration_created.py b/src/documents/tests/test_migration_created.py deleted file mode 100644 index 89e97cbe1..000000000 --- a/src/documents/tests/test_migration_created.py +++ /dev/null @@ -1,33 +0,0 @@ -from datetime import date -from datetime import datetime -from datetime import timedelta - -from django.utils.timezone import make_aware -from pytz import UTC - -from documents.tests.utils import DirectoriesMixin -from documents.tests.utils import TestMigrations - - -class TestMigrateDocumentCreated(DirectoriesMixin, TestMigrations): - migrate_from = "1066_alter_workflowtrigger_schedule_offset_days" - migrate_to = "1067_alter_document_created" - - def setUpBeforeMigration(self, apps): - # create 600 documents - for i in range(600): - Document = apps.get_model("documents", "Document") - naive = datetime(2023, 10, 1, 12, 0, 0) + timedelta(days=i) - Document.objects.create( - title=f"test{i}", - mime_type="application/pdf", - filename=f"file{i}.pdf", - created=make_aware(naive, timezone=UTC), - checksum=i, - ) - - def testDocumentCreatedMigrated(self): - Document = self.apps.get_model("documents", "Document") - - doc = Document.objects.get(id=1) - self.assertEqual(doc.created, date(2023, 10, 1)) diff --git a/src/documents/tests/test_migration_custom_field_selects.py b/src/documents/tests/test_migration_custom_field_selects.py deleted file mode 100644 index 59004bf21..000000000 --- a/src/documents/tests/test_migration_custom_field_selects.py +++ /dev/null @@ -1,87 +0,0 @@ -from unittest.mock import ANY - -from documents.tests.utils import TestMigrations - - -class TestMigrateCustomFieldSelects(TestMigrations): - migrate_from = "1059_workflowactionemail_workflowactionwebhook_and_more" - migrate_to = "1060_alter_customfieldinstance_value_select" - - def setUpBeforeMigration(self, apps): - CustomField = apps.get_model("documents.CustomField") - self.old_format = CustomField.objects.create( - name="cf1", - data_type="select", - extra_data={"select_options": ["Option 1", "Option 2", "Option 3"]}, - ) - Document = apps.get_model("documents.Document") - doc = Document.objects.create(title="doc1") - CustomFieldInstance = apps.get_model("documents.CustomFieldInstance") - self.old_instance = CustomFieldInstance.objects.create( - field=self.old_format, - value_select=0, - document=doc, - ) - - def test_migrate_old_to_new_select_fields(self): - self.old_format.refresh_from_db() - self.old_instance.refresh_from_db() - - self.assertEqual( - self.old_format.extra_data["select_options"], - [ - {"label": "Option 1", "id": ANY}, - {"label": "Option 2", "id": ANY}, - {"label": "Option 3", "id": ANY}, - ], - ) - - self.assertEqual( - self.old_instance.value_select, - self.old_format.extra_data["select_options"][0]["id"], - ) - - -class TestMigrationCustomFieldSelectsReverse(TestMigrations): - migrate_from = "1060_alter_customfieldinstance_value_select" - migrate_to = "1059_workflowactionemail_workflowactionwebhook_and_more" - - def setUpBeforeMigration(self, apps): - CustomField = apps.get_model("documents.CustomField") - self.new_format = CustomField.objects.create( - name="cf1", - data_type="select", - extra_data={ - "select_options": [ - {"label": "Option 1", "id": "id1"}, - {"label": "Option 2", "id": "id2"}, - {"label": "Option 3", "id": "id3"}, - ], - }, - ) - Document = apps.get_model("documents.Document") - doc = Document.objects.create(title="doc1") - CustomFieldInstance = apps.get_model("documents.CustomFieldInstance") - self.new_instance = CustomFieldInstance.objects.create( - field=self.new_format, - value_select="id1", - document=doc, - ) - - def test_migrate_new_to_old_select_fields(self): - self.new_format.refresh_from_db() - self.new_instance.refresh_from_db() - - self.assertEqual( - self.new_format.extra_data["select_options"], - [ - "Option 1", - "Option 2", - "Option 3", - ], - ) - - self.assertEqual( - self.new_instance.value_select, - 0, - ) diff --git a/src/documents/tests/test_migration_customfields.py b/src/documents/tests/test_migration_customfields.py deleted file mode 100644 index 79308bceb..000000000 --- a/src/documents/tests/test_migration_customfields.py +++ /dev/null @@ -1,43 +0,0 @@ -from django.contrib.auth import get_user_model - -from documents.tests.utils import TestMigrations - - -class TestMigrateCustomFields(TestMigrations): - migrate_from = "1039_consumptiontemplate" - migrate_to = "1040_customfield_customfieldinstance_and_more" - - def setUpBeforeMigration(self, apps): - User = get_user_model() - Group = apps.get_model("auth.Group") - self.Permission = apps.get_model("auth", "Permission") - self.user = User.objects.create(username="user1") - self.group = Group.objects.create(name="group1") - permission = self.Permission.objects.get(codename="add_document") - self.user.user_permissions.add(permission.id) - self.group.permissions.add(permission.id) - - def test_users_with_add_documents_get_add_customfields(self): - permission = self.Permission.objects.get(codename="add_customfield") - self.assertTrue(self.user.has_perm(f"documents.{permission.codename}")) - self.assertTrue(permission in self.group.permissions.all()) - - -class TestReverseMigrateCustomFields(TestMigrations): - migrate_from = "1040_customfield_customfieldinstance_and_more" - migrate_to = "1039_consumptiontemplate" - - def setUpBeforeMigration(self, apps): - User = get_user_model() - Group = apps.get_model("auth.Group") - self.Permission = apps.get_model("auth", "Permission") - self.user = User.objects.create(username="user1") - self.group = Group.objects.create(name="group1") - permission = self.Permission.objects.get(codename="add_customfield") - self.user.user_permissions.add(permission.id) - self.group.permissions.add(permission.id) - - def test_remove_consumptiontemplate_permissions(self): - permission = self.Permission.objects.get(codename="add_customfield") - self.assertFalse(self.user.has_perm(f"documents.{permission.codename}")) - self.assertFalse(permission in self.group.permissions.all()) diff --git a/src/documents/tests/test_migration_document_pages_count.py b/src/documents/tests/test_migration_document_pages_count.py deleted file mode 100644 index e8f297acb..000000000 --- a/src/documents/tests/test_migration_document_pages_count.py +++ /dev/null @@ -1,59 +0,0 @@ -import shutil -from pathlib import Path - -from django.conf import settings - -from documents.tests.utils import DirectoriesMixin -from documents.tests.utils import TestMigrations - - -def source_path_before(self) -> Path: - if self.filename: - fname = str(self.filename) - - return Path(settings.ORIGINALS_DIR) / fname - - -class TestMigrateDocumentPageCount(DirectoriesMixin, TestMigrations): - migrate_from = "1052_document_transaction_id" - migrate_to = "1053_document_page_count" - - def setUpBeforeMigration(self, apps): - Document = apps.get_model("documents", "Document") - doc = Document.objects.create( - title="test1", - mime_type="application/pdf", - filename="file1.pdf", - ) - self.doc_id = doc.id - shutil.copy( - Path(__file__).parent / "samples" / "simple.pdf", - source_path_before(doc), - ) - - def testDocumentPageCountMigrated(self): - Document = self.apps.get_model("documents", "Document") - - doc = Document.objects.get(id=self.doc_id) - self.assertEqual(doc.page_count, 1) - - -class TestMigrateDocumentPageCountBackwards(TestMigrations): - migrate_from = "1053_document_page_count" - migrate_to = "1052_document_transaction_id" - - def setUpBeforeMigration(self, apps): - Document = apps.get_model("documents", "Document") - doc = Document.objects.create( - title="test1", - mime_type="application/pdf", - filename="file1.pdf", - page_count=8, - ) - self.doc_id = doc.id - - def test_remove_number_of_pages_to_page_count(self): - Document = self.apps.get_model("documents", "Document") - self.assertFalse( - "page_count" in [field.name for field in Document._meta.get_fields()], - ) diff --git a/src/documents/tests/test_migration_encrypted_webp_conversion.py b/src/documents/tests/test_migration_encrypted_webp_conversion.py deleted file mode 100644 index 0660df368..000000000 --- a/src/documents/tests/test_migration_encrypted_webp_conversion.py +++ /dev/null @@ -1,283 +0,0 @@ -import importlib -import shutil -import tempfile -from collections.abc import Callable -from collections.abc import Iterable -from pathlib import Path -from unittest import mock - -from django.test import override_settings - -from documents.tests.utils import TestMigrations - -# https://github.com/python/cpython/issues/100950 -migration_1037_obj = importlib.import_module( - "documents.migrations.1037_webp_encrypted_thumbnail_conversion", -) - - -@override_settings(PASSPHRASE="test") -@mock.patch( - f"{__name__}.migration_1037_obj.multiprocessing.pool.Pool.map", -) -@mock.patch(f"{__name__}.migration_1037_obj.run_convert") -class TestMigrateToEncrytpedWebPThumbnails(TestMigrations): - migrate_from = ( - "1022_paperlesstask_squashed_1036_alter_savedviewfilterrule_rule_type" - ) - migrate_to = "1037_webp_encrypted_thumbnail_conversion" - auto_migrate = False - - def pretend_convert_output(self, *args, **kwargs): - """ - Pretends to do the conversion, by copying the input file - to the output file - """ - shutil.copy2( - Path(kwargs["input_file"].rstrip("[0]")), - Path(kwargs["output_file"]), - ) - - def pretend_map(self, func: Callable, iterable: Iterable): - """ - Pretends to be the map of a multiprocessing.Pool, but secretly does - everything in series - """ - for item in iterable: - func(item) - - def create_dummy_thumbnails( - self, - thumb_dir: Path, - ext: str, - count: int, - start_count: int = 0, - ): - """ - Helper to create a certain count of files of given extension in a given directory - """ - for idx in range(count): - (Path(thumb_dir) / Path(f"{start_count + idx:07}.{ext}")).touch() - # Triple check expected files exist - self.assert_file_count_by_extension(ext, thumb_dir, count) - - def create_webp_thumbnail_files( - self, - thumb_dir: Path, - count: int, - start_count: int = 0, - ): - """ - Creates a dummy WebP thumbnail file in the given directory, based on - the database Document - """ - self.create_dummy_thumbnails(thumb_dir, "webp", count, start_count) - - def create_encrypted_webp_thumbnail_files( - self, - thumb_dir: Path, - count: int, - start_count: int = 0, - ): - """ - Creates a dummy encrypted WebP thumbnail file in the given directory, based on - the database Document - """ - self.create_dummy_thumbnails(thumb_dir, "webp.gpg", count, start_count) - - def create_png_thumbnail_files( - self, - thumb_dir: Path, - count: int, - start_count: int = 0, - ): - """ - Creates a dummy PNG thumbnail file in the given directory, based on - the database Document - """ - - self.create_dummy_thumbnails(thumb_dir, "png", count, start_count) - - def create_encrypted_png_thumbnail_files( - self, - thumb_dir: Path, - count: int, - start_count: int = 0, - ): - """ - Creates a dummy encrypted PNG thumbnail file in the given directory, based on - the database Document - """ - - self.create_dummy_thumbnails(thumb_dir, "png.gpg", count, start_count) - - def assert_file_count_by_extension( - self, - ext: str, - dir: str | Path, - expected_count: int, - ): - """ - Helper to assert a certain count of given extension files in given directory - """ - if not isinstance(dir, Path): - dir = Path(dir) - matching_files = list(dir.glob(f"*.{ext}")) - self.assertEqual(len(matching_files), expected_count) - - def assert_encrypted_png_file_count(self, dir: Path, expected_count: int): - """ - Helper to assert a certain count of excrypted PNG extension files in given directory - """ - self.assert_file_count_by_extension("png.gpg", dir, expected_count) - - def assert_encrypted_webp_file_count(self, dir: Path, expected_count: int): - """ - Helper to assert a certain count of encrypted WebP extension files in given directory - """ - self.assert_file_count_by_extension("webp.gpg", dir, expected_count) - - def assert_webp_file_count(self, dir: Path, expected_count: int): - """ - Helper to assert a certain count of WebP extension files in given directory - """ - self.assert_file_count_by_extension("webp", dir, expected_count) - - def assert_png_file_count(self, dir: Path, expected_count: int): - """ - Helper to assert a certain count of PNG extension files in given directory - """ - self.assert_file_count_by_extension("png", dir, expected_count) - - def setUp(self): - self.thumbnail_dir = Path(tempfile.mkdtemp()).resolve() - - return super().setUp() - - def tearDown(self) -> None: - shutil.rmtree(self.thumbnail_dir) - - return super().tearDown() - - def test_do_nothing_if_converted( - self, - run_convert_mock: mock.MagicMock, - map_mock: mock.MagicMock, - ): - """ - GIVEN: - - Encrypted document exists with existing encrypted WebP thumbnail path - WHEN: - - Migration is attempted - THEN: - - Nothing is converted - """ - map_mock.side_effect = self.pretend_map - - with override_settings( - THUMBNAIL_DIR=self.thumbnail_dir, - ): - self.create_encrypted_webp_thumbnail_files(self.thumbnail_dir, 3) - - self.performMigration() - run_convert_mock.assert_not_called() - - self.assert_encrypted_webp_file_count(self.thumbnail_dir, 3) - - def test_convert_thumbnails( - self, - run_convert_mock: mock.MagicMock, - map_mock: mock.MagicMock, - ): - """ - GIVEN: - - Encrypted documents exist with PNG thumbnail - WHEN: - - Migration is attempted - THEN: - - Thumbnails are converted to webp & re-encrypted - """ - map_mock.side_effect = self.pretend_map - run_convert_mock.side_effect = self.pretend_convert_output - - with override_settings( - THUMBNAIL_DIR=self.thumbnail_dir, - ): - self.create_encrypted_png_thumbnail_files(self.thumbnail_dir, 3) - - self.performMigration() - - run_convert_mock.assert_called() - self.assertEqual(run_convert_mock.call_count, 3) - - self.assert_encrypted_webp_file_count(self.thumbnail_dir, 3) - - def test_convert_errors_out( - self, - run_convert_mock: mock.MagicMock, - map_mock: mock.MagicMock, - ): - """ - GIVEN: - - Encrypted document exists with PNG thumbnail - WHEN: - - Migration is attempted, but raises an exception - THEN: - - Single thumbnail is converted - """ - map_mock.side_effect = self.pretend_map - run_convert_mock.side_effect = OSError - - with override_settings( - THUMBNAIL_DIR=self.thumbnail_dir, - ): - self.create_encrypted_png_thumbnail_files(self.thumbnail_dir, 3) - - self.performMigration() - - run_convert_mock.assert_called() - self.assertEqual(run_convert_mock.call_count, 3) - - self.assert_encrypted_png_file_count(self.thumbnail_dir, 3) - - def test_convert_mixed( - self, - run_convert_mock: mock.MagicMock, - map_mock: mock.MagicMock, - ): - """ - GIVEN: - - Documents exist with PNG, encrypted PNG and WebP thumbnails - WHEN: - - Migration is attempted - THEN: - - Only encrypted PNG thumbnails are converted - """ - map_mock.side_effect = self.pretend_map - run_convert_mock.side_effect = self.pretend_convert_output - - with override_settings( - THUMBNAIL_DIR=self.thumbnail_dir, - ): - self.create_png_thumbnail_files(self.thumbnail_dir, 3) - self.create_encrypted_png_thumbnail_files( - self.thumbnail_dir, - 3, - start_count=3, - ) - self.create_webp_thumbnail_files(self.thumbnail_dir, 2, start_count=6) - self.create_encrypted_webp_thumbnail_files( - self.thumbnail_dir, - 3, - start_count=8, - ) - - self.performMigration() - - run_convert_mock.assert_called() - self.assertEqual(run_convert_mock.call_count, 3) - - self.assert_png_file_count(self.thumbnail_dir, 3) - self.assert_encrypted_webp_file_count(self.thumbnail_dir, 6) - self.assert_webp_file_count(self.thumbnail_dir, 2) - self.assert_encrypted_png_file_count(self.thumbnail_dir, 0) diff --git a/src/documents/tests/test_migration_mime_type.py b/src/documents/tests/test_migration_mime_type.py deleted file mode 100644 index 7805799fe..000000000 --- a/src/documents/tests/test_migration_mime_type.py +++ /dev/null @@ -1,108 +0,0 @@ -import shutil -from pathlib import Path - -from django.conf import settings -from django.test import override_settings - -from documents.parsers import get_default_file_extension -from documents.tests.utils import DirectoriesMixin -from documents.tests.utils import TestMigrations - -STORAGE_TYPE_UNENCRYPTED = "unencrypted" -STORAGE_TYPE_GPG = "gpg" - - -def source_path_before(self): - if self.filename: - fname = str(self.filename) - else: - fname = f"{self.pk:07}.{self.file_type}" - if self.storage_type == STORAGE_TYPE_GPG: - fname += ".gpg" - - return Path(settings.ORIGINALS_DIR) / fname - - -def file_type_after(self): - return get_default_file_extension(self.mime_type) - - -def source_path_after(doc): - if doc.filename: - fname = str(doc.filename) - else: - fname = f"{doc.pk:07}{file_type_after(doc)}" - if doc.storage_type == STORAGE_TYPE_GPG: - fname += ".gpg" # pragma: no cover - - return Path(settings.ORIGINALS_DIR) / fname - - -@override_settings(PASSPHRASE="test") -class TestMigrateMimeType(DirectoriesMixin, TestMigrations): - migrate_from = "1002_auto_20201111_1105" - migrate_to = "1003_mime_types" - - def setUpBeforeMigration(self, apps): - Document = apps.get_model("documents", "Document") - doc = Document.objects.create( - title="test", - file_type="pdf", - filename="file1.pdf", - ) - self.doc_id = doc.id - shutil.copy( - Path(__file__).parent / "samples" / "simple.pdf", - source_path_before(doc), - ) - - doc2 = Document.objects.create( - checksum="B", - file_type="pdf", - storage_type=STORAGE_TYPE_GPG, - ) - self.doc2_id = doc2.id - shutil.copy( - ( - Path(__file__).parent - / "samples" - / "documents" - / "originals" - / "0000004.pdf.gpg" - ), - source_path_before(doc2), - ) - - def testMimeTypesMigrated(self): - Document = self.apps.get_model("documents", "Document") - - doc = Document.objects.get(id=self.doc_id) - self.assertEqual(doc.mime_type, "application/pdf") - - doc2 = Document.objects.get(id=self.doc2_id) - self.assertEqual(doc2.mime_type, "application/pdf") - - -@override_settings(PASSPHRASE="test") -class TestMigrateMimeTypeBackwards(DirectoriesMixin, TestMigrations): - migrate_from = "1003_mime_types" - migrate_to = "1002_auto_20201111_1105" - - def setUpBeforeMigration(self, apps): - Document = apps.get_model("documents", "Document") - doc = Document.objects.create( - title="test", - mime_type="application/pdf", - filename="file1.pdf", - ) - self.doc_id = doc.id - shutil.copy( - Path(__file__).parent / "samples" / "simple.pdf", - source_path_after(doc), - ) - - def testMimeTypesReverted(self): - Document = self.apps.get_model("documents", "Document") - - doc = Document.objects.get(id=self.doc_id) - self.assertEqual(doc.file_type, "pdf") diff --git a/src/documents/tests/test_migration_remove_null_characters.py b/src/documents/tests/test_migration_remove_null_characters.py deleted file mode 100644 index c47bc80ca..000000000 --- a/src/documents/tests/test_migration_remove_null_characters.py +++ /dev/null @@ -1,15 +0,0 @@ -from documents.tests.utils import DirectoriesMixin -from documents.tests.utils import TestMigrations - - -class TestMigrateNullCharacters(DirectoriesMixin, TestMigrations): - migrate_from = "1014_auto_20210228_1614" - migrate_to = "1015_remove_null_characters" - - def setUpBeforeMigration(self, apps): - Document = apps.get_model("documents", "Document") - self.doc = Document.objects.create(content="aaa\0bbb") - - def testMimeTypesMigrated(self): - Document = self.apps.get_model("documents", "Document") - self.assertNotIn("\0", Document.objects.get(id=self.doc.id).content) diff --git a/src/documents/tests/test_migration_share_link_bundle.py b/src/documents/tests/test_migration_share_link_bundle.py new file mode 100644 index 000000000..cf52de924 --- /dev/null +++ b/src/documents/tests/test_migration_share_link_bundle.py @@ -0,0 +1,51 @@ +from documents.tests.utils import TestMigrations + + +class TestMigrateShareLinkBundlePermissions(TestMigrations): + migrate_from = "0007_document_content_length" + migrate_to = "0008_sharelinkbundle" + + def setUpBeforeMigration(self, apps) -> None: + User = apps.get_model("auth", "User") + Group = apps.get_model("auth", "Group") + self.Permission = apps.get_model("auth", "Permission") + self.user = User.objects.create(username="user1") + self.group = Group.objects.create(name="group1") + add_document = self.Permission.objects.get(codename="add_document") + self.user.user_permissions.add(add_document.id) + self.group.permissions.add(add_document.id) + + def test_share_link_permissions_granted_to_add_document_holders(self) -> None: + share_perms = self.Permission.objects.filter( + codename__contains="sharelinkbundle", + ) + self.assertTrue(self.user.user_permissions.filter(pk__in=share_perms).exists()) + self.assertTrue(self.group.permissions.filter(pk__in=share_perms).exists()) + + +class TestReverseMigrateShareLinkBundlePermissions(TestMigrations): + migrate_from = "0008_sharelinkbundle" + migrate_to = "0007_document_content_length" + + def setUpBeforeMigration(self, apps) -> None: + User = apps.get_model("auth", "User") + Group = apps.get_model("auth", "Group") + self.Permission = apps.get_model("auth", "Permission") + self.user = User.objects.create(username="user1") + self.group = Group.objects.create(name="group1") + add_document = self.Permission.objects.get(codename="add_document") + share_perms = self.Permission.objects.filter( + codename__contains="sharelinkbundle", + ) + self.share_perm_ids = list(share_perms.values_list("id", flat=True)) + + self.user.user_permissions.add(add_document.id, *self.share_perm_ids) + self.group.permissions.add(add_document.id, *self.share_perm_ids) + + def test_share_link_permissions_revoked_on_reverse(self) -> None: + self.assertFalse( + self.user.user_permissions.filter(pk__in=self.share_perm_ids).exists(), + ) + self.assertFalse( + self.group.permissions.filter(pk__in=self.share_perm_ids).exists(), + ) diff --git a/src/documents/tests/test_migration_storage_path_template.py b/src/documents/tests/test_migration_storage_path_template.py deleted file mode 100644 index 37b87a115..000000000 --- a/src/documents/tests/test_migration_storage_path_template.py +++ /dev/null @@ -1,30 +0,0 @@ -from documents.models import StoragePath -from documents.tests.utils import TestMigrations - - -class TestMigrateStoragePathToTemplate(TestMigrations): - migrate_from = "1054_customfieldinstance_value_monetary_amount_and_more" - migrate_to = "1055_alter_storagepath_path" - - def setUpBeforeMigration(self, apps): - self.old_format = StoragePath.objects.create( - name="sp1", - path="Something/{title}", - ) - self.new_format = StoragePath.objects.create( - name="sp2", - path="{{asn}}/{{title}}", - ) - self.no_formatting = StoragePath.objects.create( - name="sp3", - path="Some/Fixed/Path", - ) - - def test_migrate_old_to_new_storage_path(self): - self.old_format.refresh_from_db() - self.new_format.refresh_from_db() - self.no_formatting.refresh_from_db() - - self.assertEqual(self.old_format.path, "Something/{{ title }}") - self.assertEqual(self.new_format.path, "{{asn}}/{{title}}") - self.assertEqual(self.no_formatting.path, "Some/Fixed/Path") diff --git a/src/documents/tests/test_migration_tag_colors.py b/src/documents/tests/test_migration_tag_colors.py deleted file mode 100644 index 0643fe883..000000000 --- a/src/documents/tests/test_migration_tag_colors.py +++ /dev/null @@ -1,36 +0,0 @@ -from documents.tests.utils import DirectoriesMixin -from documents.tests.utils import TestMigrations - - -class TestMigrateTagColor(DirectoriesMixin, TestMigrations): - migrate_from = "1012_fix_archive_files" - migrate_to = "1013_migrate_tag_colour" - - def setUpBeforeMigration(self, apps): - Tag = apps.get_model("documents", "Tag") - self.t1_id = Tag.objects.create(name="tag1").id - self.t2_id = Tag.objects.create(name="tag2", colour=1).id - self.t3_id = Tag.objects.create(name="tag3", colour=5).id - - def testMimeTypesMigrated(self): - Tag = self.apps.get_model("documents", "Tag") - self.assertEqual(Tag.objects.get(id=self.t1_id).color, "#a6cee3") - self.assertEqual(Tag.objects.get(id=self.t2_id).color, "#a6cee3") - self.assertEqual(Tag.objects.get(id=self.t3_id).color, "#fb9a99") - - -class TestMigrateTagColorBackwards(DirectoriesMixin, TestMigrations): - migrate_from = "1013_migrate_tag_colour" - migrate_to = "1012_fix_archive_files" - - def setUpBeforeMigration(self, apps): - Tag = apps.get_model("documents", "Tag") - self.t1_id = Tag.objects.create(name="tag1").id - self.t2_id = Tag.objects.create(name="tag2", color="#cab2d6").id - self.t3_id = Tag.objects.create(name="tag3", color="#123456").id - - def testMimeTypesReverted(self): - Tag = self.apps.get_model("documents", "Tag") - self.assertEqual(Tag.objects.get(id=self.t1_id).colour, 1) - self.assertEqual(Tag.objects.get(id=self.t2_id).colour, 9) - self.assertEqual(Tag.objects.get(id=self.t3_id).colour, 1) diff --git a/src/documents/tests/test_migration_webp_conversion.py b/src/documents/tests/test_migration_webp_conversion.py deleted file mode 100644 index cd148ed6f..000000000 --- a/src/documents/tests/test_migration_webp_conversion.py +++ /dev/null @@ -1,230 +0,0 @@ -import importlib -import shutil -import tempfile -from collections.abc import Callable -from collections.abc import Iterable -from pathlib import Path -from unittest import mock - -from django.test import override_settings - -from documents.tests.utils import TestMigrations - -# https://github.com/python/cpython/issues/100950 -migration_1021_obj = importlib.import_module( - "documents.migrations.1021_webp_thumbnail_conversion", -) - - -@mock.patch( - f"{__name__}.migration_1021_obj.multiprocessing.pool.Pool.map", -) -@mock.patch(f"{__name__}.migration_1021_obj.run_convert") -class TestMigrateWebPThumbnails(TestMigrations): - migrate_from = "1016_auto_20210317_1351_squashed_1020_merge_20220518_1839" - migrate_to = "1021_webp_thumbnail_conversion" - auto_migrate = False - - def pretend_convert_output(self, *args, **kwargs): - """ - Pretends to do the conversion, by copying the input file - to the output file - """ - shutil.copy2( - Path(kwargs["input_file"].rstrip("[0]")), - Path(kwargs["output_file"]), - ) - - def pretend_map(self, func: Callable, iterable: Iterable): - """ - Pretends to be the map of a multiprocessing.Pool, but secretly does - everything in series - """ - for item in iterable: - func(item) - - def create_dummy_thumbnails( - self, - thumb_dir: Path, - ext: str, - count: int, - start_count: int = 0, - ): - """ - Helper to create a certain count of files of given extension in a given directory - """ - for idx in range(count): - (Path(thumb_dir) / Path(f"{start_count + idx:07}.{ext}")).touch() - # Triple check expected files exist - self.assert_file_count_by_extension(ext, thumb_dir, count) - - def create_webp_thumbnail_files( - self, - thumb_dir: Path, - count: int, - start_count: int = 0, - ): - """ - Creates a dummy WebP thumbnail file in the given directory, based on - the database Document - """ - self.create_dummy_thumbnails(thumb_dir, "webp", count, start_count) - - def create_png_thumbnail_file( - self, - thumb_dir: Path, - count: int, - start_count: int = 0, - ): - """ - Creates a dummy PNG thumbnail file in the given directory, based on - the database Document - """ - self.create_dummy_thumbnails(thumb_dir, "png", count, start_count) - - def assert_file_count_by_extension( - self, - ext: str, - dir: str | Path, - expected_count: int, - ): - """ - Helper to assert a certain count of given extension files in given directory - """ - if not isinstance(dir, Path): - dir = Path(dir) - matching_files = list(dir.glob(f"*.{ext}")) - self.assertEqual(len(matching_files), expected_count) - - def assert_png_file_count(self, dir: Path, expected_count: int): - """ - Helper to assert a certain count of PNG extension files in given directory - """ - self.assert_file_count_by_extension("png", dir, expected_count) - - def assert_webp_file_count(self, dir: Path, expected_count: int): - """ - Helper to assert a certain count of WebP extension files in given directory - """ - self.assert_file_count_by_extension("webp", dir, expected_count) - - def setUp(self): - self.thumbnail_dir = Path(tempfile.mkdtemp()).resolve() - - return super().setUp() - - def tearDown(self) -> None: - shutil.rmtree(self.thumbnail_dir) - - return super().tearDown() - - def test_do_nothing_if_converted( - self, - run_convert_mock: mock.MagicMock, - map_mock: mock.MagicMock, - ): - """ - GIVEN: - - Document exists with default WebP thumbnail path - WHEN: - - Thumbnail conversion is attempted - THEN: - - Nothing is converted - """ - map_mock.side_effect = self.pretend_map - - with override_settings( - THUMBNAIL_DIR=self.thumbnail_dir, - ): - self.create_webp_thumbnail_files(self.thumbnail_dir, 3) - - self.performMigration() - run_convert_mock.assert_not_called() - - self.assert_webp_file_count(self.thumbnail_dir, 3) - - def test_convert_single_thumbnail( - self, - run_convert_mock: mock.MagicMock, - map_mock: mock.MagicMock, - ): - """ - GIVEN: - - Document exists with PNG thumbnail - WHEN: - - Thumbnail conversion is attempted - THEN: - - Single thumbnail is converted - """ - map_mock.side_effect = self.pretend_map - run_convert_mock.side_effect = self.pretend_convert_output - - with override_settings( - THUMBNAIL_DIR=self.thumbnail_dir, - ): - self.create_png_thumbnail_file(self.thumbnail_dir, 3) - - self.performMigration() - - run_convert_mock.assert_called() - self.assertEqual(run_convert_mock.call_count, 3) - - self.assert_webp_file_count(self.thumbnail_dir, 3) - - def test_convert_errors_out( - self, - run_convert_mock: mock.MagicMock, - map_mock: mock.MagicMock, - ): - """ - GIVEN: - - Document exists with PNG thumbnail - WHEN: - - Thumbnail conversion is attempted, but raises an exception - THEN: - - Single thumbnail is converted - """ - map_mock.side_effect = self.pretend_map - run_convert_mock.side_effect = OSError - - with override_settings( - THUMBNAIL_DIR=self.thumbnail_dir, - ): - self.create_png_thumbnail_file(self.thumbnail_dir, 3) - - self.performMigration() - - run_convert_mock.assert_called() - self.assertEqual(run_convert_mock.call_count, 3) - - self.assert_png_file_count(self.thumbnail_dir, 3) - - def test_convert_mixed( - self, - run_convert_mock: mock.MagicMock, - map_mock: mock.MagicMock, - ): - """ - GIVEN: - - Document exists with PNG thumbnail - WHEN: - - Thumbnail conversion is attempted, but raises an exception - THEN: - - Single thumbnail is converted - """ - map_mock.side_effect = self.pretend_map - run_convert_mock.side_effect = self.pretend_convert_output - - with override_settings( - THUMBNAIL_DIR=self.thumbnail_dir, - ): - self.create_png_thumbnail_file(self.thumbnail_dir, 3) - self.create_webp_thumbnail_files(self.thumbnail_dir, 2, start_count=3) - - self.performMigration() - - run_convert_mock.assert_called() - self.assertEqual(run_convert_mock.call_count, 3) - - self.assert_png_file_count(self.thumbnail_dir, 0) - self.assert_webp_file_count(self.thumbnail_dir, 5) diff --git a/src/documents/tests/test_migration_workflows.py b/src/documents/tests/test_migration_workflows.py deleted file mode 100644 index 60e429d68..000000000 --- a/src/documents/tests/test_migration_workflows.py +++ /dev/null @@ -1,134 +0,0 @@ -from documents.data_models import DocumentSource -from documents.tests.utils import TestMigrations - - -class TestMigrateWorkflow(TestMigrations): - migrate_from = "1043_alter_savedviewfilterrule_rule_type" - migrate_to = "1044_workflow_workflowaction_workflowtrigger_and_more" - dependencies = ( - ( - "paperless_mail", - "0029_mailrule_pdf_layout", - ), - ) - - def setUpBeforeMigration(self, apps): - User = apps.get_model("auth", "User") - Group = apps.get_model("auth", "Group") - self.Permission = apps.get_model("auth", "Permission") - self.user = User.objects.create(username="user1") - self.group = Group.objects.create(name="group1") - permission = self.Permission.objects.get(codename="add_document") - self.user.user_permissions.add(permission.id) - self.group.permissions.add(permission.id) - - # create a CT to migrate - c = apps.get_model("documents", "Correspondent").objects.create( - name="Correspondent Name", - ) - dt = apps.get_model("documents", "DocumentType").objects.create( - name="DocType Name", - ) - t1 = apps.get_model("documents", "Tag").objects.create(name="t1") - sp = apps.get_model("documents", "StoragePath").objects.create(path="/test/") - cf1 = apps.get_model("documents", "CustomField").objects.create( - name="Custom Field 1", - data_type="string", - ) - ma = apps.get_model("paperless_mail", "MailAccount").objects.create( - name="MailAccount 1", - ) - mr = apps.get_model("paperless_mail", "MailRule").objects.create( - name="MailRule 1", - order=0, - account=ma, - ) - - user2 = User.objects.create(username="user2") - user3 = User.objects.create(username="user3") - group2 = Group.objects.create(name="group2") - - ConsumptionTemplate = apps.get_model("documents", "ConsumptionTemplate") - - ct = ConsumptionTemplate.objects.create( - name="Template 1", - order=0, - sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}", - filter_filename="*simple*", - filter_path="*/samples/*", - filter_mailrule=mr, - assign_title="Doc from {correspondent}", - assign_correspondent=c, - assign_document_type=dt, - assign_storage_path=sp, - assign_owner=user2, - ) - - ct.assign_tags.add(t1) - ct.assign_view_users.add(user3) - ct.assign_view_groups.add(group2) - ct.assign_change_users.add(user3) - ct.assign_change_groups.add(group2) - ct.assign_custom_fields.add(cf1) - ct.save() - - def test_users_with_add_documents_get_add_and_workflow_templates_get_migrated(self): - permission = self.Permission.objects.get(codename="add_workflow") - self.assertTrue(permission in self.user.user_permissions.all()) - self.assertTrue(permission in self.group.permissions.all()) - - Workflow = self.apps.get_model("documents", "Workflow") - self.assertEqual(Workflow.objects.all().count(), 1) - - -class TestReverseMigrateWorkflow(TestMigrations): - migrate_from = "1044_workflow_workflowaction_workflowtrigger_and_more" - migrate_to = "1043_alter_savedviewfilterrule_rule_type" - - def setUpBeforeMigration(self, apps): - User = apps.get_model("auth", "User") - Group = apps.get_model("auth", "Group") - self.Permission = apps.get_model("auth", "Permission") - self.user = User.objects.create(username="user1") - self.group = Group.objects.create(name="group1") - permission = self.Permission.objects.filter( - codename="add_workflow", - ).first() - if permission is not None: - self.user.user_permissions.add(permission.id) - self.group.permissions.add(permission.id) - - Workflow = apps.get_model("documents", "Workflow") - WorkflowTrigger = apps.get_model("documents", "WorkflowTrigger") - WorkflowAction = apps.get_model("documents", "WorkflowAction") - - trigger = WorkflowTrigger.objects.create( - type=0, - sources=[str(DocumentSource.ConsumeFolder)], - filter_path="*/path/*", - filter_filename="*file*", - ) - - action = WorkflowAction.objects.create( - assign_title="assign title", - ) - workflow = Workflow.objects.create( - name="workflow 1", - order=0, - ) - workflow.triggers.set([trigger]) - workflow.actions.set([action]) - workflow.save() - - def test_remove_workflow_permissions_and_migrate_workflows_to_consumption_templates( - self, - ): - permission = self.Permission.objects.filter( - codename="add_workflow", - ).first() - if permission is not None: - self.assertFalse(permission in self.user.user_permissions.all()) - self.assertFalse(permission in self.group.permissions.all()) - - ConsumptionTemplate = self.apps.get_model("documents", "ConsumptionTemplate") - self.assertEqual(ConsumptionTemplate.objects.all().count(), 1) diff --git a/src/documents/tests/test_models.py b/src/documents/tests/test_models.py index 1c99be3f7..160aa77f9 100644 --- a/src/documents/tests/test_models.py +++ b/src/documents/tests/test_models.py @@ -7,14 +7,14 @@ from documents.tests.factories import DocumentFactory class CorrespondentTestCase(TestCase): - def test___str__(self): + def test___str__(self) -> None: for s in ("test", "oχi", "test with fun_charÅc'\"terß"): correspondent = CorrespondentFactory.create(name=s) self.assertEqual(str(correspondent), s) class DocumentTestCase(TestCase): - def test_correspondent_deletion_does_not_cascade(self): + def test_correspondent_deletion_does_not_cascade(self) -> None: self.assertEqual(Correspondent.objects.all().count(), 0) correspondent = CorrespondentFactory.create() self.assertEqual(Correspondent.objects.all().count(), 1) diff --git a/src/documents/tests/test_parsers.py b/src/documents/tests/test_parsers.py index fee7234e8..1447d5c30 100644 --- a/src/documents/tests/test_parsers.py +++ b/src/documents/tests/test_parsers.py @@ -16,7 +16,7 @@ from paperless_tika.parsers import TikaDocumentParser class TestParserDiscovery(TestCase): @mock.patch("documents.parsers.document_consumer_declaration.send") - def test_get_parser_class_1_parser(self, m, *args): + def test_get_parser_class_1_parser(self, m, *args) -> None: """ GIVEN: - Parser declared for a given mimetype @@ -43,7 +43,7 @@ class TestParserDiscovery(TestCase): self.assertEqual(get_parser_class_for_mime_type("application/pdf"), DummyParser) @mock.patch("documents.parsers.document_consumer_declaration.send") - def test_get_parser_class_n_parsers(self, m, *args): + def test_get_parser_class_n_parsers(self, m, *args) -> None: """ GIVEN: - Two parsers declared for a given mimetype @@ -85,7 +85,7 @@ class TestParserDiscovery(TestCase): ) @mock.patch("documents.parsers.document_consumer_declaration.send") - def test_get_parser_class_0_parsers(self, m, *args): + def test_get_parser_class_0_parsers(self, m, *args) -> None: """ GIVEN: - No parsers are declared @@ -99,7 +99,7 @@ class TestParserDiscovery(TestCase): self.assertIsNone(get_parser_class_for_mime_type("application/pdf")) @mock.patch("documents.parsers.document_consumer_declaration.send") - def test_get_parser_class_no_valid_parser(self, m, *args): + def test_get_parser_class_no_valid_parser(self, m, *args) -> None: """ GIVEN: - No parser declared for a given mimetype @@ -128,7 +128,7 @@ class TestParserDiscovery(TestCase): class TestParserAvailability(TestCase): - def test_tesseract_parser(self): + def test_tesseract_parser(self) -> None: """ GIVEN: - Various mime types @@ -155,7 +155,7 @@ class TestParserAvailability(TestCase): RasterisedDocumentParser, ) - def test_text_parser(self): + def test_text_parser(self) -> None: """ GIVEN: - Various mime types of a text form @@ -179,7 +179,7 @@ class TestParserAvailability(TestCase): TextDocumentParser, ) - def test_tika_parser(self): + def test_tika_parser(self) -> None: """ GIVEN: - Various mime types of a office document form @@ -212,17 +212,17 @@ class TestParserAvailability(TestCase): TikaDocumentParser, ) - def test_no_parser_for_mime(self): + def test_no_parser_for_mime(self) -> None: self.assertIsNone(get_parser_class_for_mime_type("text/sdgsdf")) - def test_default_extension(self): + def test_default_extension(self) -> None: # Test no parser declared still returns a an extension self.assertEqual(get_default_file_extension("application/zip"), ".zip") # Test invalid mimetype returns no extension self.assertEqual(get_default_file_extension("aasdasd/dgfgf"), "") - def test_file_extension_support(self): + def test_file_extension_support(self) -> None: self.assertTrue(is_file_ext_supported(".pdf")) self.assertFalse(is_file_ext_supported(".hsdfh")) self.assertFalse(is_file_ext_supported("")) diff --git a/src/documents/tests/test_sanity_check.py b/src/documents/tests/test_sanity_check.py index c33062c42..415b0967f 100644 --- a/src/documents/tests/test_sanity_check.py +++ b/src/documents/tests/test_sanity_check.py @@ -58,7 +58,7 @@ class TestSanityCheck(DirectoriesMixin, TestCase): archive_filename="0000001.pdf", ) - def assertSanityError(self, doc: Document, messageRegex): + def assertSanityError(self, doc: Document, messageRegex) -> None: messages = check_sanity() self.assertTrue(messages.has_error) with self.assertLogs() as capture: @@ -69,7 +69,7 @@ class TestSanityCheck(DirectoriesMixin, TestCase): ) self.assertRegex(capture.records[1].message, messageRegex) - def test_no_issues(self): + def test_no_issues(self) -> None: self.make_test_data() messages = check_sanity() self.assertFalse(messages.has_error) @@ -83,59 +83,59 @@ class TestSanityCheck(DirectoriesMixin, TestCase): "Sanity checker detected no issues.", ) - def test_no_docs(self): + def test_no_docs(self) -> None: self.assertEqual(len(check_sanity()), 0) - def test_success(self): + def test_success(self) -> None: self.make_test_data() self.assertEqual(len(check_sanity()), 0) - def test_no_thumbnail(self): + def test_no_thumbnail(self) -> None: doc = self.make_test_data() Path(doc.thumbnail_path).unlink() self.assertSanityError(doc, "Thumbnail of document does not exist") - def test_thumbnail_no_access(self): + def test_thumbnail_no_access(self) -> None: doc = self.make_test_data() Path(doc.thumbnail_path).chmod(0o000) self.assertSanityError(doc, "Cannot read thumbnail file of document") Path(doc.thumbnail_path).chmod(0o777) - def test_no_original(self): + def test_no_original(self) -> None: doc = self.make_test_data() Path(doc.source_path).unlink() self.assertSanityError(doc, "Original of document does not exist.") - def test_original_no_access(self): + def test_original_no_access(self) -> None: doc = self.make_test_data() Path(doc.source_path).chmod(0o000) self.assertSanityError(doc, "Cannot read original file of document") Path(doc.source_path).chmod(0o777) - def test_original_checksum_mismatch(self): + def test_original_checksum_mismatch(self) -> None: doc = self.make_test_data() doc.checksum = "WOW" doc.save() self.assertSanityError(doc, "Checksum mismatch. Stored: WOW, actual: ") - def test_no_archive(self): + def test_no_archive(self) -> None: doc = self.make_test_data() Path(doc.archive_path).unlink() self.assertSanityError(doc, "Archived version of document does not exist.") - def test_archive_no_access(self): + def test_archive_no_access(self) -> None: doc = self.make_test_data() Path(doc.archive_path).chmod(0o000) self.assertSanityError(doc, "Cannot read archive file of document") Path(doc.archive_path).chmod(0o777) - def test_archive_checksum_mismatch(self): + def test_archive_checksum_mismatch(self) -> None: doc = self.make_test_data() doc.archive_checksum = "WOW" doc.save() self.assertSanityError(doc, "Checksum mismatch of archived document") - def test_empty_content(self): + def test_empty_content(self) -> None: doc = self.make_test_data() doc.content = "" doc.save() @@ -148,7 +148,7 @@ class TestSanityCheck(DirectoriesMixin, TestCase): "Document contains no OCR data", ) - def test_orphaned_file(self): + def test_orphaned_file(self) -> None: self.make_test_data() Path(self.dirs.originals_dir, "orphaned").touch() messages = check_sanity() @@ -161,7 +161,7 @@ class TestSanityCheck(DirectoriesMixin, TestCase): @override_settings( APP_LOGO="logo/logo.png", ) - def test_ignore_logo(self): + def test_ignore_logo(self) -> None: self.make_test_data() logo_dir = Path(self.dirs.media_dir, "logo") logo_dir.mkdir(parents=True, exist_ok=True) @@ -169,13 +169,20 @@ class TestSanityCheck(DirectoriesMixin, TestCase): messages = check_sanity() self.assertFalse(messages.has_warning) - def test_archive_filename_no_checksum(self): + def test_ignore_ignorable_files(self) -> None: + self.make_test_data() + Path(self.dirs.media_dir, ".DS_Store").touch() + Path(self.dirs.media_dir, "desktop.ini").touch() + messages = check_sanity() + self.assertFalse(messages.has_warning) + + def test_archive_filename_no_checksum(self) -> None: doc = self.make_test_data() doc.archive_checksum = None doc.save() self.assertSanityError(doc, "has an archive file, but its checksum is missing.") - def test_archive_checksum_no_filename(self): + def test_archive_checksum_no_filename(self) -> None: doc = self.make_test_data() doc.archive_filename = None doc.save() diff --git a/src/documents/tests/test_share_link_bundles.py b/src/documents/tests/test_share_link_bundles.py new file mode 100644 index 000000000..c82260819 --- /dev/null +++ b/src/documents/tests/test_share_link_bundles.py @@ -0,0 +1,536 @@ +from __future__ import annotations + +import zipfile +from datetime import timedelta +from pathlib import Path +from unittest import mock + +from django.conf import settings +from django.contrib.auth.models import User +from django.utils import timezone +from rest_framework import serializers +from rest_framework import status +from rest_framework.test import APITestCase + +from documents.filters import ShareLinkBundleFilterSet +from documents.models import ShareLink +from documents.models import ShareLinkBundle +from documents.serialisers import ShareLinkBundleSerializer +from documents.tasks import build_share_link_bundle +from documents.tasks import cleanup_expired_share_link_bundles +from documents.tests.factories import DocumentFactory +from documents.tests.utils import DirectoriesMixin + + +class ShareLinkBundleAPITests(DirectoriesMixin, APITestCase): + ENDPOINT = "/api/share_link_bundles/" + + def setUp(self) -> None: + super().setUp() + self.user = User.objects.create_superuser(username="bundle_admin") + self.client.force_authenticate(self.user) + self.document = DocumentFactory.create() + + @mock.patch("documents.views.build_share_link_bundle.delay") + def test_create_bundle_triggers_build_job(self, delay_mock) -> None: + payload = { + "document_ids": [self.document.pk], + "file_version": ShareLink.FileVersion.ARCHIVE, + "expiration_days": 7, + } + + response = self.client.post(self.ENDPOINT, payload, format="json") + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + bundle = ShareLinkBundle.objects.get(pk=response.data["id"]) + self.assertEqual(bundle.documents.count(), 1) + self.assertEqual(bundle.status, ShareLinkBundle.Status.PENDING) + delay_mock.assert_called_once_with(bundle.pk) + + def test_create_bundle_rejects_missing_documents(self) -> None: + payload = { + "document_ids": [9999], + "file_version": ShareLink.FileVersion.ARCHIVE, + "expiration_days": 7, + } + + response = self.client.post(self.ENDPOINT, payload, format="json") + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("document_ids", response.data) + + @mock.patch("documents.views.has_perms_owner_aware", return_value=False) + def test_create_bundle_rejects_insufficient_permissions(self, perms_mock) -> None: + payload = { + "document_ids": [self.document.pk], + "file_version": ShareLink.FileVersion.ARCHIVE, + "expiration_days": 7, + } + + response = self.client.post(self.ENDPOINT, payload, format="json") + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("document_ids", response.data) + perms_mock.assert_called() + + @mock.patch("documents.views.build_share_link_bundle.delay") + def test_rebuild_bundle_resets_state(self, delay_mock) -> None: + bundle = ShareLinkBundle.objects.create( + slug="rebuild-slug", + file_version=ShareLink.FileVersion.ARCHIVE, + status=ShareLinkBundle.Status.FAILED, + ) + bundle.documents.set([self.document]) + bundle.last_error = {"message": "Something went wrong"} + bundle.size_bytes = 100 + bundle.file_path = "path/to/file.zip" + bundle.save() + + response = self.client.post(f"{self.ENDPOINT}{bundle.pk}/rebuild/") + + self.assertEqual(response.status_code, status.HTTP_200_OK) + bundle.refresh_from_db() + self.assertEqual(bundle.status, ShareLinkBundle.Status.PENDING) + self.assertIsNone(bundle.last_error) + self.assertIsNone(bundle.size_bytes) + self.assertEqual(bundle.file_path, "") + delay_mock.assert_called_once_with(bundle.pk) + + def test_rebuild_bundle_rejects_processing_status(self) -> None: + bundle = ShareLinkBundle.objects.create( + slug="processing-slug", + file_version=ShareLink.FileVersion.ARCHIVE, + status=ShareLinkBundle.Status.PROCESSING, + ) + bundle.documents.set([self.document]) + + response = self.client.post(f"{self.ENDPOINT}{bundle.pk}/rebuild/") + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("detail", response.data) + + def test_create_bundle_rejects_duplicate_documents(self) -> None: + payload = { + "document_ids": [self.document.pk, self.document.pk], + "file_version": ShareLink.FileVersion.ARCHIVE, + "expiration_days": 7, + } + + response = self.client.post(self.ENDPOINT, payload, format="json") + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertIn("document_ids", response.data) + + def test_download_ready_bundle_streams_file(self) -> None: + bundle_file = Path(self.dirs.media_dir) / "bundles" / "ready.zip" + bundle_file.parent.mkdir(parents=True, exist_ok=True) + bundle_file.write_bytes(b"binary-zip-content") + + bundle = ShareLinkBundle.objects.create( + slug="readyslug", + file_version=ShareLink.FileVersion.ARCHIVE, + status=ShareLinkBundle.Status.READY, + file_path=str(bundle_file), + ) + bundle.documents.set([self.document]) + + self.client.logout() + response = self.client.get(f"/share/{bundle.slug}/") + content = b"".join(response.streaming_content) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response["Content-Type"], "application/zip") + self.assertEqual(content, b"binary-zip-content") + self.assertIn("attachment;", response["Content-Disposition"]) + + def test_download_pending_bundle_returns_202(self) -> None: + bundle = ShareLinkBundle.objects.create( + slug="pendingslug", + file_version=ShareLink.FileVersion.ARCHIVE, + status=ShareLinkBundle.Status.PENDING, + ) + bundle.documents.set([self.document]) + + self.client.logout() + response = self.client.get(f"/share/{bundle.slug}/") + + self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) + + def test_download_failed_bundle_returns_503(self) -> None: + bundle = ShareLinkBundle.objects.create( + slug="failedslug", + file_version=ShareLink.FileVersion.ARCHIVE, + status=ShareLinkBundle.Status.FAILED, + ) + bundle.documents.set([self.document]) + + self.client.logout() + response = self.client.get(f"/share/{bundle.slug}/") + + self.assertEqual(response.status_code, status.HTTP_503_SERVICE_UNAVAILABLE) + + def test_expired_share_link_redirects(self) -> None: + share_link = ShareLink.objects.create( + slug="expiredlink", + document=self.document, + file_version=ShareLink.FileVersion.ORIGINAL, + expiration=timezone.now() - timedelta(hours=1), + ) + + self.client.logout() + response = self.client.get(f"/share/{share_link.slug}/") + + self.assertEqual(response.status_code, status.HTTP_302_FOUND) + self.assertIn("sharelink_expired=1", response["Location"]) + + def test_unknown_share_link_redirects(self) -> None: + self.client.logout() + response = self.client.get("/share/unknownsharelink/") + + self.assertEqual(response.status_code, status.HTTP_302_FOUND) + self.assertIn("sharelink_notfound=1", response["Location"]) + + +class ShareLinkBundleTaskTests(DirectoriesMixin, APITestCase): + def setUp(self) -> None: + super().setUp() + self.document = DocumentFactory.create() + + def test_cleanup_expired_share_link_bundles(self) -> None: + expired_path = Path(self.dirs.media_dir) / "expired.zip" + expired_path.parent.mkdir(parents=True, exist_ok=True) + expired_path.write_bytes(b"expired") + + active_path = Path(self.dirs.media_dir) / "active.zip" + active_path.write_bytes(b"active") + + expired_bundle = ShareLinkBundle.objects.create( + slug="expired-bundle", + file_version=ShareLink.FileVersion.ARCHIVE, + status=ShareLinkBundle.Status.READY, + expiration=timezone.now() - timedelta(days=1), + file_path=str(expired_path), + ) + expired_bundle.documents.set([self.document]) + + active_bundle = ShareLinkBundle.objects.create( + slug="active-bundle", + file_version=ShareLink.FileVersion.ARCHIVE, + status=ShareLinkBundle.Status.READY, + expiration=timezone.now() + timedelta(days=1), + file_path=str(active_path), + ) + active_bundle.documents.set([self.document]) + + cleanup_expired_share_link_bundles() + + self.assertFalse(ShareLinkBundle.objects.filter(pk=expired_bundle.pk).exists()) + self.assertTrue(ShareLinkBundle.objects.filter(pk=active_bundle.pk).exists()) + self.assertFalse(expired_path.exists()) + self.assertTrue(active_path.exists()) + + def test_cleanup_expired_share_link_bundles_logs_on_failure(self) -> None: + expired_bundle = ShareLinkBundle.objects.create( + slug="expired-bundle", + file_version=ShareLink.FileVersion.ARCHIVE, + status=ShareLinkBundle.Status.READY, + expiration=timezone.now() - timedelta(days=1), + ) + expired_bundle.documents.set([self.document]) + + with mock.patch.object( + ShareLinkBundle, + "delete", + side_effect=RuntimeError("fail"), + ): + with self.assertLogs("paperless.tasks", level="WARNING") as logs: + cleanup_expired_share_link_bundles() + + self.assertTrue( + any( + "Failed to delete expired share link bundle" in msg + for msg in logs.output + ), + ) + + +class ShareLinkBundleBuildTaskTests(DirectoriesMixin, APITestCase): + def setUp(self) -> None: + super().setUp() + self.document = DocumentFactory.create( + mime_type="application/pdf", + checksum="123", + ) + self.document.archive_checksum = "" + self.document.save() + self.addCleanup( + setattr, + settings, + "SHARE_LINK_BUNDLE_DIR", + settings.SHARE_LINK_BUNDLE_DIR, + ) + settings.SHARE_LINK_BUNDLE_DIR = ( + Path(settings.MEDIA_ROOT) / "documents" / "share_link_bundles" + ) + + def _write_document_file(self, *, archive: bool, content: bytes) -> Path: + if archive: + self.document.archive_filename = f"{self.document.pk:07}.pdf" + self.document.save() + path = self.document.archive_path + else: + path = self.document.source_path + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(content) + return path + + def test_build_share_link_bundle_creates_zip_and_sets_metadata(self) -> None: + self._write_document_file(archive=False, content=b"source") + archive_path = self._write_document_file(archive=True, content=b"archive") + bundle = ShareLinkBundle.objects.create( + slug="build-archive", + file_version=ShareLink.FileVersion.ARCHIVE, + ) + bundle.documents.set([self.document]) + + build_share_link_bundle(bundle.pk) + + bundle.refresh_from_db() + self.assertEqual(bundle.status, ShareLinkBundle.Status.READY) + self.assertIsNone(bundle.last_error) + self.assertIsNotNone(bundle.built_at) + self.assertGreater(bundle.size_bytes or 0, 0) + final_path = bundle.absolute_file_path + self.assertIsNotNone(final_path) + self.assertTrue(final_path.exists()) + with zipfile.ZipFile(final_path) as zipf: + names = zipf.namelist() + self.assertEqual(len(names), 1) + self.assertEqual(zipf.read(names[0]), archive_path.read_bytes()) + + def test_build_share_link_bundle_overwrites_existing_file(self) -> None: + self._write_document_file(archive=False, content=b"source") + bundle = ShareLinkBundle.objects.create( + slug="overwrite", + file_version=ShareLink.FileVersion.ORIGINAL, + ) + bundle.documents.set([self.document]) + + existing = settings.SHARE_LINK_BUNDLE_DIR / "overwrite.zip" + existing.parent.mkdir(parents=True, exist_ok=True) + existing.write_bytes(b"old") + + build_share_link_bundle(bundle.pk) + + bundle.refresh_from_db() + final_path = bundle.absolute_file_path + self.assertIsNotNone(final_path) + self.assertTrue(final_path.exists()) + self.assertNotEqual(final_path.read_bytes(), b"old") + + def test_build_share_link_bundle_failure_marks_failed(self) -> None: + self._write_document_file(archive=False, content=b"source") + bundle = ShareLinkBundle.objects.create( + slug="fail-bundle", + file_version=ShareLink.FileVersion.ORIGINAL, + ) + bundle.documents.set([self.document]) + + with ( + mock.patch( + "documents.tasks.OriginalsOnlyStrategy.add_document", + side_effect=RuntimeError("zip failure"), + ), + mock.patch("pathlib.Path.unlink") as unlink_mock, + ): + unlink_mock.side_effect = [OSError("unlink"), OSError("unlink-finally")] + [ + None, + ] * 5 + with self.assertRaises(RuntimeError): + build_share_link_bundle(bundle.pk) + + bundle.refresh_from_db() + self.assertEqual(bundle.status, ShareLinkBundle.Status.FAILED) + self.assertIsInstance(bundle.last_error, dict) + self.assertEqual(bundle.last_error.get("message"), "zip failure") + self.assertEqual(bundle.last_error.get("exception_type"), "RuntimeError") + scratch_zips = list(Path(settings.SCRATCH_DIR).glob("*.zip")) + self.assertTrue(scratch_zips) + for path in scratch_zips: + path.unlink(missing_ok=True) + + def test_build_share_link_bundle_missing_bundle_noop(self) -> None: + # Should not raise when bundle does not exist + build_share_link_bundle(99999) + + +class ShareLinkBundleFilterSetTests(DirectoriesMixin, APITestCase): + def setUp(self) -> None: + super().setUp() + self.document = DocumentFactory.create() + self.document.checksum = "doc1checksum" + self.document.save() + self.other_document = DocumentFactory.create() + self.other_document.checksum = "doc2checksum" + self.other_document.save() + self.bundle_one = ShareLinkBundle.objects.create( + slug="bundle-one", + file_version=ShareLink.FileVersion.ORIGINAL, + ) + self.bundle_one.documents.set([self.document]) + self.bundle_two = ShareLinkBundle.objects.create( + slug="bundle-two", + file_version=ShareLink.FileVersion.ORIGINAL, + ) + self.bundle_two.documents.set([self.other_document]) + + def test_filter_documents_returns_all_for_empty_value(self) -> None: + filterset = ShareLinkBundleFilterSet( + data={"documents": ""}, + queryset=ShareLinkBundle.objects.all(), + ) + + self.assertCountEqual(filterset.qs, [self.bundle_one, self.bundle_two]) + + def test_filter_documents_handles_invalid_input(self) -> None: + filterset = ShareLinkBundleFilterSet( + data={"documents": "invalid"}, + queryset=ShareLinkBundle.objects.all(), + ) + + self.assertFalse(filterset.qs.exists()) + + def test_filter_documents_filters_by_multiple_ids(self) -> None: + filterset = ShareLinkBundleFilterSet( + data={"documents": f"{self.document.pk},{self.other_document.pk}"}, + queryset=ShareLinkBundle.objects.all(), + ) + + self.assertCountEqual(filterset.qs, [self.bundle_one, self.bundle_two]) + + def test_filter_documents_returns_queryset_for_empty_ids(self) -> None: + filterset = ShareLinkBundleFilterSet( + data={"documents": ","}, + queryset=ShareLinkBundle.objects.all(), + ) + + self.assertCountEqual(filterset.qs, [self.bundle_one, self.bundle_two]) + + +class ShareLinkBundleModelTests(DirectoriesMixin, APITestCase): + def test_absolute_file_path_handles_relative_and_absolute(self) -> None: + relative_path = Path("relative.zip") + bundle = ShareLinkBundle.objects.create( + slug="relative-bundle", + file_version=ShareLink.FileVersion.ORIGINAL, + file_path=str(relative_path), + ) + + self.assertEqual( + bundle.absolute_file_path, + (settings.SHARE_LINK_BUNDLE_DIR / relative_path).resolve(), + ) + + absolute_path = Path(self.dirs.media_dir) / "absolute.zip" + bundle.file_path = str(absolute_path) + + self.assertEqual(bundle.absolute_file_path.resolve(), absolute_path.resolve()) + + def test_str_returns_translated_slug(self) -> None: + bundle = ShareLinkBundle.objects.create( + slug="string-slug", + file_version=ShareLink.FileVersion.ORIGINAL, + ) + + self.assertIn("string-slug", str(bundle)) + + def test_remove_file_deletes_existing_file(self) -> None: + bundle_path = settings.SHARE_LINK_BUNDLE_DIR / "remove.zip" + bundle_path.parent.mkdir(parents=True, exist_ok=True) + bundle_path.write_bytes(b"remove-me") + bundle = ShareLinkBundle.objects.create( + slug="remove-bundle", + file_version=ShareLink.FileVersion.ORIGINAL, + file_path=str(bundle_path.relative_to(settings.SHARE_LINK_BUNDLE_DIR)), + ) + + bundle.remove_file() + + self.assertFalse(bundle_path.exists()) + + def test_remove_file_handles_oserror(self) -> None: + bundle_path = settings.SHARE_LINK_BUNDLE_DIR / "remove-error.zip" + bundle_path.parent.mkdir(parents=True, exist_ok=True) + bundle_path.write_bytes(b"remove-me") + bundle = ShareLinkBundle.objects.create( + slug="remove-error", + file_version=ShareLink.FileVersion.ORIGINAL, + file_path=str(bundle_path.relative_to(settings.SHARE_LINK_BUNDLE_DIR)), + ) + + with mock.patch("pathlib.Path.unlink", side_effect=OSError("fail")): + bundle.remove_file() + + self.assertTrue(bundle_path.exists()) + + def test_delete_calls_remove_file(self) -> None: + bundle_path = settings.SHARE_LINK_BUNDLE_DIR / "delete.zip" + bundle_path.parent.mkdir(parents=True, exist_ok=True) + bundle_path.write_bytes(b"remove-me") + bundle = ShareLinkBundle.objects.create( + slug="delete-bundle", + file_version=ShareLink.FileVersion.ORIGINAL, + file_path=str(bundle_path.relative_to(settings.SHARE_LINK_BUNDLE_DIR)), + ) + + bundle.delete() + self.assertFalse(bundle_path.exists()) + + +class ShareLinkBundleSerializerTests(DirectoriesMixin, APITestCase): + def setUp(self) -> None: + super().setUp() + self.document = DocumentFactory.create() + + def test_validate_document_ids_rejects_duplicates(self) -> None: + serializer = ShareLinkBundleSerializer( + data={ + "document_ids": [self.document.pk, self.document.pk], + "file_version": ShareLink.FileVersion.ORIGINAL, + }, + ) + + self.assertFalse(serializer.is_valid()) + self.assertIn("document_ids", serializer.errors) + + def test_create_assigns_documents_and_expiration(self) -> None: + serializer = ShareLinkBundleSerializer( + data={ + "document_ids": [self.document.pk], + "file_version": ShareLink.FileVersion.ORIGINAL, + "expiration_days": 3, + }, + ) + + self.assertTrue(serializer.is_valid(), serializer.errors) + bundle = serializer.save() + + self.assertEqual(list(bundle.documents.all()), [self.document]) + expected_expiration = timezone.now() + timedelta(days=3) + self.assertAlmostEqual( + bundle.expiration, + expected_expiration, + delta=timedelta(seconds=10), + ) + + def test_create_raises_when_missing_documents(self) -> None: + serializer = ShareLinkBundleSerializer( + data={ + "document_ids": [self.document.pk, 9999], + "file_version": ShareLink.FileVersion.ORIGINAL, + }, + ) + + self.assertTrue(serializer.is_valid(), serializer.errors) + with self.assertRaises(serializers.ValidationError): + serializer.save(documents=[self.document]) diff --git a/src/documents/tests/test_tag_hierarchy.py b/src/documents/tests/test_tag_hierarchy.py index 6052b5c81..2b2937672 100644 --- a/src/documents/tests/test_tag_hierarchy.py +++ b/src/documents/tests/test_tag_hierarchy.py @@ -9,11 +9,12 @@ from documents.models import Tag from documents.models import Workflow from documents.models import WorkflowAction from documents.models import WorkflowTrigger +from documents.serialisers import TagSerializer from documents.signals.handlers import run_workflows class TestTagHierarchy(APITestCase): - def setUp(self): + def setUp(self) -> None: self.user = User.objects.create_superuser(username="admin") self.client.force_authenticate(user=self.user) @@ -31,7 +32,7 @@ class TestTagHierarchy(APITestCase): mime_type="application/pdf", ) - def test_document_api_add_child_adds_parent(self): + def test_document_api_add_child_adds_parent(self) -> None: self.client.patch( f"/api/documents/{self.document.pk}/", {"tags": [self.child.pk]}, @@ -41,7 +42,7 @@ class TestTagHierarchy(APITestCase): tags = set(self.document.tags.values_list("pk", flat=True)) assert tags == {self.parent.pk, self.child.pk} - def test_document_api_remove_parent_removes_children(self): + def test_document_api_remove_parent_removes_children(self) -> None: self.document.add_nested_tags([self.parent, self.child]) self.client.patch( f"/api/documents/{self.document.pk}/", @@ -51,7 +52,7 @@ class TestTagHierarchy(APITestCase): self.document.refresh_from_db() assert self.document.tags.count() == 0 - def test_document_api_remove_parent_removes_child(self): + def test_document_api_remove_parent_removes_child(self) -> None: self.document.add_nested_tags([self.child]) self.client.patch( f"/api/documents/{self.document.pk}/", @@ -61,7 +62,7 @@ class TestTagHierarchy(APITestCase): self.document.refresh_from_db() assert self.document.tags.count() == 0 - def test_bulk_edit_respects_hierarchy(self): + def test_bulk_edit_respects_hierarchy(self) -> None: bulk_edit.add_tag([self.document.pk], self.child.pk) self.document.refresh_from_db() tags = set(self.document.tags.values_list("pk", flat=True)) @@ -80,7 +81,7 @@ class TestTagHierarchy(APITestCase): self.document.refresh_from_db() assert self.document.tags.count() == 0 - def test_workflow_actions(self): + def test_workflow_actions(self) -> None: workflow = Workflow.objects.create(name="wf", order=0) trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, @@ -107,7 +108,7 @@ class TestTagHierarchy(APITestCase): self.document.refresh_from_db() assert self.document.tags.count() == 0 - def test_tag_view_parent_update_adds_parent_to_docs(self): + def test_tag_view_parent_update_adds_parent_to_docs(self) -> None: orphan = Tag.objects.create(name="Orphan") self.document.tags.add(orphan) @@ -121,7 +122,32 @@ class TestTagHierarchy(APITestCase): tags = set(self.document.tags.values_list("pk", flat=True)) assert tags == {self.parent.pk, orphan.pk} - def test_cannot_set_parent_to_self(self): + def test_child_document_count_included_when_parent_paginated(self) -> None: + self.document.tags.add(self.child) + + response = self.client.get( + "/api/tags/", + {"page_size": 1, "ordering": "-name"}, + ) + + assert response.status_code == 200 + assert response.data["results"][0]["id"] == self.parent.pk + + children = response.data["results"][0]["children"] + assert len(children) == 1 + + child_entry = children[0] + assert child_entry["id"] == self.child.pk + assert child_entry["document_count"] == 1 + + def test_tag_serializer_populates_document_filter_context(self) -> None: + context = {} + + serializer = TagSerializer(self.parent, context=context) + assert serializer.data # triggers serialization + assert "document_count_filter" in context + + def test_cannot_set_parent_to_self(self) -> None: tag = Tag.objects.create(name="Selfie") resp = self.client.patch( f"/api/tags/{tag.pk}/", @@ -131,7 +157,7 @@ class TestTagHierarchy(APITestCase): assert resp.status_code == 400 assert "Cannot set itself as parent" in str(resp.data["parent"]) - def test_cannot_set_parent_to_descendant(self): + def test_cannot_set_parent_to_descendant(self) -> None: a = Tag.objects.create(name="A") b = Tag.objects.create(name="B", tn_parent=a) c = Tag.objects.create(name="C", tn_parent=b) @@ -145,7 +171,7 @@ class TestTagHierarchy(APITestCase): assert resp.status_code == 400 assert "Cannot set parent to a descendant" in str(resp.data["parent"]) - def test_max_depth_on_create(self): + def test_max_depth_on_create(self) -> None: a = Tag.objects.create(name="A1") b = Tag.objects.create(name="B1", tn_parent=a) c = Tag.objects.create(name="C1", tn_parent=b) @@ -171,9 +197,9 @@ class TestTagHierarchy(APITestCase): ) assert resp_fail.status_code == 400 assert "parent" in resp_fail.data - assert "Invalid" in str(resp_fail.data["parent"]) + assert "Maximum nesting depth exceeded" in str(resp_fail.data["parent"]) - def test_max_depth_on_move_subtree(self): + def test_max_depth_on_move_subtree(self) -> None: a = Tag.objects.create(name="A2") b = Tag.objects.create(name="B2", tn_parent=a) c = Tag.objects.create(name="C2", tn_parent=b) @@ -191,7 +217,7 @@ class TestTagHierarchy(APITestCase): ) assert resp_fail.status_code == 400 assert "Maximum nesting depth exceeded" in str( - resp_fail.data["non_field_errors"], + resp_fail.data["parent"], ) # Moving X under C (depth 3) should be allowed (deepest becomes 5) @@ -203,3 +229,24 @@ class TestTagHierarchy(APITestCase): assert resp_ok.status_code in (200, 202) x.refresh_from_db() assert x.parent_pk == c.id + + def test_is_root_filter_returns_only_root_tags(self) -> None: + other_root = Tag.objects.create(name="Other parent") + + response = self.client.get( + "/api/tags/", + {"is_root": "true"}, + ) + + assert response.status_code == 200 + assert response.data["count"] == 2 + + returned_ids = {row["id"] for row in response.data["results"]} + assert self.child.pk not in returned_ids + assert self.parent.pk in returned_ids + assert other_root.pk in returned_ids + + parent_entry = next( + row for row in response.data["results"] if row["id"] == self.parent.pk + ) + assert any(child["id"] == self.child.pk for child in parent_entry["children"]) diff --git a/src/documents/tests/test_task_signals.py b/src/documents/tests/test_task_signals.py index d94eb3848..abe36087e 100644 --- a/src/documents/tests/test_task_signals.py +++ b/src/documents/tests/test_task_signals.py @@ -18,7 +18,11 @@ from documents.tests.utils import DirectoriesMixin @mock.patch("documents.consumer.magic.from_file", fake_magic_from_file) class TestTaskSignalHandler(DirectoriesMixin, TestCase): - def util_call_before_task_publish_handler(self, headers_to_use, body_to_use): + def util_call_before_task_publish_handler( + self, + headers_to_use, + body_to_use, + ) -> None: """ Simple utility to call the pre-run handle and ensure it created a single task instance @@ -29,7 +33,7 @@ class TestTaskSignalHandler(DirectoriesMixin, TestCase): self.assertEqual(PaperlessTask.objects.all().count(), 1) - def test_before_task_publish_handler_consume(self): + def test_before_task_publish_handler_consume(self) -> None: """ GIVEN: - A celery task is started via the consume folder @@ -72,7 +76,7 @@ class TestTaskSignalHandler(DirectoriesMixin, TestCase): self.assertEqual(1, task.owner_id) self.assertEqual(celery.states.PENDING, task.status) - def test_task_prerun_handler(self): + def test_task_prerun_handler(self) -> None: """ GIVEN: - A celery task is started via the consume folder @@ -112,7 +116,7 @@ class TestTaskSignalHandler(DirectoriesMixin, TestCase): self.assertEqual(celery.states.STARTED, task.status) - def test_task_postrun_handler(self): + def test_task_postrun_handler(self) -> None: """ GIVEN: - A celery task is started via the consume folder @@ -154,7 +158,7 @@ class TestTaskSignalHandler(DirectoriesMixin, TestCase): self.assertEqual(celery.states.SUCCESS, task.status) - def test_task_failure_handler(self): + def test_task_failure_handler(self) -> None: """ GIVEN: - A celery task is started via the consume folder diff --git a/src/documents/tests/test_tasks.py b/src/documents/tests/test_tasks.py index 11712549a..4647c19ba 100644 --- a/src/documents/tests/test_tasks.py +++ b/src/documents/tests/test_tasks.py @@ -3,14 +3,17 @@ from datetime import timedelta from pathlib import Path from unittest import mock +from celery import states from django.conf import settings from django.test import TestCase +from django.test import override_settings from django.utils import timezone from documents import tasks from documents.models import Correspondent from documents.models import Document from documents.models import DocumentType +from documents.models import PaperlessTask from documents.models import Tag from documents.sanity_checker import SanityCheckFailedException from documents.sanity_checker import SanityCheckMessages @@ -20,7 +23,7 @@ from documents.tests.utils import FileSystemAssertsMixin class TestIndexReindex(DirectoriesMixin, TestCase): - def test_index_reindex(self): + def test_index_reindex(self) -> None: Document.objects.create( title="test", content="my document", @@ -32,7 +35,7 @@ class TestIndexReindex(DirectoriesMixin, TestCase): tasks.index_reindex() - def test_index_optimize(self): + def test_index_optimize(self) -> None: Document.objects.create( title="test", content="my document", @@ -47,12 +50,12 @@ class TestIndexReindex(DirectoriesMixin, TestCase): class TestClassifier(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @mock.patch("documents.tasks.load_classifier") - def test_train_classifier_no_auto_matching(self, load_classifier): + def test_train_classifier_no_auto_matching(self, load_classifier) -> None: tasks.train_classifier() load_classifier.assert_not_called() @mock.patch("documents.tasks.load_classifier") - def test_train_classifier_with_auto_tag(self, load_classifier): + def test_train_classifier_with_auto_tag(self, load_classifier) -> None: load_classifier.return_value = None Tag.objects.create(matching_algorithm=Tag.MATCH_AUTO, name="test") tasks.train_classifier() @@ -60,7 +63,7 @@ class TestClassifier(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsNotFile(settings.MODEL_FILE) @mock.patch("documents.tasks.load_classifier") - def test_train_classifier_with_auto_type(self, load_classifier): + def test_train_classifier_with_auto_type(self, load_classifier) -> None: load_classifier.return_value = None DocumentType.objects.create(matching_algorithm=Tag.MATCH_AUTO, name="test") tasks.train_classifier() @@ -68,14 +71,14 @@ class TestClassifier(DirectoriesMixin, FileSystemAssertsMixin, TestCase): self.assertIsNotFile(settings.MODEL_FILE) @mock.patch("documents.tasks.load_classifier") - def test_train_classifier_with_auto_correspondent(self, load_classifier): + def test_train_classifier_with_auto_correspondent(self, load_classifier) -> None: load_classifier.return_value = None Correspondent.objects.create(matching_algorithm=Tag.MATCH_AUTO, name="test") tasks.train_classifier() load_classifier.assert_called_once() self.assertIsNotFile(settings.MODEL_FILE) - def test_train_classifier(self): + def test_train_classifier(self) -> None: c = Correspondent.objects.create(matching_algorithm=Tag.MATCH_AUTO, name="test") doc = Document.objects.create(correspondent=c, content="test", title="test") self.assertIsNotFile(settings.MODEL_FILE) @@ -104,13 +107,13 @@ class TestClassifier(DirectoriesMixin, FileSystemAssertsMixin, TestCase): class TestSanityCheck(DirectoriesMixin, TestCase): @mock.patch("documents.tasks.sanity_checker.check_sanity") - def test_sanity_check_success(self, m): + def test_sanity_check_success(self, m) -> None: m.return_value = SanityCheckMessages() self.assertEqual(tasks.sanity_check(), "No issues detected.") m.assert_called_once() @mock.patch("documents.tasks.sanity_checker.check_sanity") - def test_sanity_check_error(self, m): + def test_sanity_check_error(self, m) -> None: messages = SanityCheckMessages() messages.error(None, "Some error") m.return_value = messages @@ -118,7 +121,7 @@ class TestSanityCheck(DirectoriesMixin, TestCase): m.assert_called_once() @mock.patch("documents.tasks.sanity_checker.check_sanity") - def test_sanity_check_error_no_raise(self, m): + def test_sanity_check_error_no_raise(self, m) -> None: messages = SanityCheckMessages() messages.error(None, "Some error") m.return_value = messages @@ -131,7 +134,7 @@ class TestSanityCheck(DirectoriesMixin, TestCase): m.assert_called_once() @mock.patch("documents.tasks.sanity_checker.check_sanity") - def test_sanity_check_warning(self, m): + def test_sanity_check_warning(self, m) -> None: messages = SanityCheckMessages() messages.warning(None, "Some warning") m.return_value = messages @@ -142,7 +145,7 @@ class TestSanityCheck(DirectoriesMixin, TestCase): m.assert_called_once() @mock.patch("documents.tasks.sanity_checker.check_sanity") - def test_sanity_check_info(self, m): + def test_sanity_check_info(self, m) -> None: messages = SanityCheckMessages() messages.info(None, "Some info") m.return_value = messages @@ -154,7 +157,7 @@ class TestSanityCheck(DirectoriesMixin, TestCase): class TestBulkUpdate(DirectoriesMixin, TestCase): - def test_bulk_update_documents(self): + def test_bulk_update_documents(self) -> None: doc1 = Document.objects.create( title="test", content="my document", @@ -177,7 +180,7 @@ class TestEmptyTrashTask(DirectoriesMixin, FileSystemAssertsMixin, TestCase): - Document is only deleted if it has been in trash for more than delay (default 30 days) """ - def test_empty_trash(self): + def test_empty_trash(self) -> None: doc = Document.objects.create( title="test", content="my document", @@ -201,7 +204,7 @@ class TestEmptyTrashTask(DirectoriesMixin, FileSystemAssertsMixin, TestCase): class TestUpdateContent(DirectoriesMixin, TestCase): - def test_update_content_maybe_archive_file(self): + def test_update_content_maybe_archive_file(self) -> None: """ GIVEN: - Existing document with archive file @@ -242,7 +245,7 @@ class TestUpdateContent(DirectoriesMixin, TestCase): self.assertNotEqual(Document.objects.get(pk=doc.pk).content, "test") self.assertNotEqual(Document.objects.get(pk=doc.pk).archive_checksum, "wow") - def test_update_content_maybe_archive_file_no_archive(self): + def test_update_content_maybe_archive_file_no_archive(self) -> None: """ GIVEN: - Existing document without archive file @@ -270,3 +273,103 @@ class TestUpdateContent(DirectoriesMixin, TestCase): tasks.update_document_content_maybe_archive_file(doc.pk) self.assertNotEqual(Document.objects.get(pk=doc.pk).content, "test") + + +class TestAIIndex(DirectoriesMixin, TestCase): + @override_settings( + AI_ENABLED=True, + LLM_EMBEDDING_BACKEND="huggingface", + ) + def test_ai_index_success(self) -> None: + """ + GIVEN: + - Document exists, AI is enabled, llm index backend is set + WHEN: + - llmindex_index task is called + THEN: + - update_llm_index is called, and the task is marked as success + """ + Document.objects.create( + title="test", + content="my document", + checksum="wow", + ) + # lazy-loaded so mock the actual function + with mock.patch("paperless_ai.indexing.update_llm_index") as update_llm_index: + update_llm_index.return_value = "LLM index updated successfully." + tasks.llmindex_index() + update_llm_index.assert_called_once() + task = PaperlessTask.objects.get( + task_name=PaperlessTask.TaskName.LLMINDEX_UPDATE, + ) + self.assertEqual(task.status, states.SUCCESS) + self.assertEqual(task.result, "LLM index updated successfully.") + + @override_settings( + AI_ENABLED=True, + LLM_EMBEDDING_BACKEND="huggingface", + ) + def test_ai_index_failure(self) -> None: + """ + GIVEN: + - Document exists, AI is enabled, llm index backend is set + WHEN: + - llmindex_index task is called + THEN: + - update_llm_index raises an exception, and the task is marked as failure + """ + Document.objects.create( + title="test", + content="my document", + checksum="wow", + ) + # lazy-loaded so mock the actual function + with mock.patch("paperless_ai.indexing.update_llm_index") as update_llm_index: + update_llm_index.side_effect = Exception("LLM index update failed.") + tasks.llmindex_index() + update_llm_index.assert_called_once() + task = PaperlessTask.objects.get( + task_name=PaperlessTask.TaskName.LLMINDEX_UPDATE, + ) + self.assertEqual(task.status, states.FAILURE) + self.assertIn("LLM index update failed.", task.result) + + def test_update_document_in_llm_index(self) -> None: + """ + GIVEN: + - Nothing + WHEN: + - update_document_in_llm_index task is called + THEN: + - llm_index_add_or_update_document is called + """ + doc = Document.objects.create( + title="test", + content="my document", + checksum="wow", + ) + with mock.patch( + "documents.tasks.llm_index_add_or_update_document", + ) as llm_index_add_or_update_document: + tasks.update_document_in_llm_index(doc) + llm_index_add_or_update_document.assert_called_once_with(doc) + + def test_remove_document_from_llm_index(self) -> None: + """ + GIVEN: + - Nothing + WHEN: + - remove_document_from_llm_index task is called + THEN: + - llm_index_remove_document is called + """ + doc = Document.objects.create( + title="test", + content="my document", + checksum="wow", + ) + with mock.patch( + "documents.tasks.llm_index_remove_document", + ) as llm_index_remove_document: + tasks.remove_document_from_llm_index(doc) + llm_index_remove_document.assert_called_once_with(doc) diff --git a/src/documents/tests/test_views.py b/src/documents/tests/test_views.py index 4c987e3af..14f0425b9 100644 --- a/src/documents/tests/test_views.py +++ b/src/documents/tests/test_views.py @@ -1,17 +1,31 @@ +import json import tempfile from datetime import timedelta from pathlib import Path +from unittest.mock import MagicMock +from unittest.mock import patch from django.conf import settings +from django.contrib.auth.models import Group from django.contrib.auth.models import Permission from django.contrib.auth.models import User +from django.db import connection from django.test import TestCase from django.test import override_settings +from django.test.utils import CaptureQueriesContext from django.utils import timezone +from guardian.shortcuts import assign_perm from rest_framework import status +from documents.caching import get_llm_suggestion_cache +from documents.caching import set_llm_suggestions_cache +from documents.models import Correspondent from documents.models import Document +from documents.models import DocumentType from documents.models import ShareLink +from documents.models import StoragePath +from documents.models import Tag +from documents.signals.handlers import update_llm_suggestions_cache from documents.tests.utils import DirectoriesMixin from paperless.models import ApplicationConfiguration @@ -21,12 +35,12 @@ class TestViews(DirectoriesMixin, TestCase): self.user = User.objects.create_user("testuser") super().setUp() - def test_login_redirect(self): + def test_login_redirect(self) -> None: response = self.client.get("/") self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertEqual(response.url, "/accounts/login/?next=/") - def test_index(self): + def test_index(self) -> None: self.client.force_login(self.user) for language_given, language_actual in [ ("", "en-US"), @@ -70,7 +84,7 @@ class TestViews(DirectoriesMixin, TestCase): ) @override_settings(BASE_URL="/paperless/") - def test_index_app_logo_with_base_url(self): + def test_index_app_logo_with_base_url(self) -> None: """ GIVEN: - Existing config with app_logo specified @@ -89,7 +103,7 @@ class TestViews(DirectoriesMixin, TestCase): f"/paperless{config.app_logo}", ) - def test_share_link_views(self): + def test_share_link_views(self) -> None: """ GIVEN: - Share link created @@ -154,3 +168,290 @@ class TestViews(DirectoriesMixin, TestCase): response.render() self.assertEqual(response.request["PATH_INFO"], "/accounts/login/") self.assertContains(response, b"Share link has expired") + + def test_list_with_full_permissions(self) -> None: + """ + GIVEN: + - Tags with different permissions + WHEN: + - Request to get tag list with full permissions is made + THEN: + - Tag list is returned with the right permission information + """ + user2 = User.objects.create(username="user2") + user3 = User.objects.create(username="user3") + group1 = Group.objects.create(name="group1") + group2 = Group.objects.create(name="group2") + group3 = Group.objects.create(name="group3") + t1 = Tag.objects.create(name="invoice", pk=1) + assign_perm("view_tag", self.user, t1) + assign_perm("view_tag", user2, t1) + assign_perm("view_tag", user3, t1) + assign_perm("view_tag", group1, t1) + assign_perm("view_tag", group2, t1) + assign_perm("view_tag", group3, t1) + assign_perm("change_tag", self.user, t1) + assign_perm("change_tag", user2, t1) + assign_perm("change_tag", group1, t1) + assign_perm("change_tag", group2, t1) + + Tag.objects.create(name="bank statement", pk=2) + d1 = Document.objects.create( + title="Invoice 1", + content="This is the invoice of a very expensive item", + checksum="A", + ) + d1.tags.add(t1) + d2 = Document.objects.create( + title="Invoice 2", + content="Internet invoice, I should pay it to continue contributing", + checksum="B", + ) + d2.tags.add(t1) + + view_permissions = Permission.objects.filter( + codename__contains="view_tag", + ) + self.user.user_permissions.add(*view_permissions) + self.user.save() + + self.client.force_login(self.user) + response = self.client.get("/api/tags/?page=1&full_perms=true") + results = json.loads(response.content)["results"] + for tag in results: + if tag["name"] == "invoice": + assert tag["permissions"] == { + "view": { + "users": [self.user.pk, user2.pk, user3.pk], + "groups": [group1.pk, group2.pk, group3.pk], + }, + "change": { + "users": [self.user.pk, user2.pk], + "groups": [group1.pk, group2.pk], + }, + } + elif tag["name"] == "bank statement": + assert tag["permissions"] == { + "view": {"users": [], "groups": []}, + "change": {"users": [], "groups": []}, + } + else: + assert False, f"Unexpected tag found: {tag['name']}" + + def test_list_no_n_plus_1_queries(self) -> None: + """ + GIVEN: + - Tags with different permissions + WHEN: + - Request to get tag list with full permissions is made + THEN: + - Permissions are not queried in database tag by tag, + i.e. there are no N+1 queries + """ + view_permissions = Permission.objects.filter( + codename__contains="view_tag", + ) + self.user.user_permissions.add(*view_permissions) + self.user.save() + self.client.force_login(self.user) + + # Start by a small list, and count the number of SQL queries + for i in range(2): + Tag.objects.create(name=f"tag_{i}") + + with CaptureQueriesContext(connection) as ctx_small: + response_small = self.client.get("/api/tags/?full_perms=true") + assert response_small.status_code == 200 + num_queries_small = len(ctx_small.captured_queries) + + # Complete the list, and count the number of SQL queries again + for i in range(2, 50): + Tag.objects.create(name=f"tag_{i}") + + with CaptureQueriesContext(connection) as ctx_large: + response_large = self.client.get("/api/tags/?full_perms=true") + assert response_large.status_code == 200 + num_queries_large = len(ctx_large.captured_queries) + + # A few additional queries are allowed, but not a linear explosion + assert num_queries_large <= num_queries_small + 5, ( + f"Possible N+1 queries detected: {num_queries_small} queries for 2 tags, " + f"but {num_queries_large} queries for 50 tags" + ) + + +class TestAISuggestions(DirectoriesMixin, TestCase): + def setUp(self) -> None: + self.user = User.objects.create_superuser(username="testuser") + self.document = Document.objects.create( + title="Test Document", + filename="test.pdf", + mime_type="application/pdf", + ) + self.tag1 = Tag.objects.create(name="tag1") + self.correspondent1 = Correspondent.objects.create(name="correspondent1") + self.document_type1 = DocumentType.objects.create(name="type1") + self.path1 = StoragePath.objects.create(name="path1") + super().setUp() + + @patch("documents.views.get_llm_suggestion_cache") + @patch("documents.views.refresh_suggestions_cache") + @override_settings( + AI_ENABLED=True, + LLM_BACKEND="mock_backend", + ) + def test_suggestions_with_cached_llm( + self, + mock_refresh_cache, + mock_get_cache, + ) -> None: + mock_get_cache.return_value = MagicMock(suggestions={"tags": ["tag1", "tag2"]}) + + self.client.force_login(user=self.user) + response = self.client.get(f"/api/documents/{self.document.pk}/suggestions/") + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.json(), {"tags": ["tag1", "tag2"]}) + mock_refresh_cache.assert_called_once_with(self.document.pk) + + @patch("documents.views.get_ai_document_classification") + @override_settings( + AI_ENABLED=True, + LLM_BACKEND="mock_backend", + ) + def test_suggestions_with_ai_enabled( + self, + mock_get_ai_classification, + ) -> None: + mock_get_ai_classification.return_value = { + "title": "AI Title", + "tags": ["tag1", "tag2"], + "correspondents": ["correspondent1"], + "document_types": ["type1"], + "storage_paths": ["path1"], + "dates": ["2023-01-01"], + } + + self.client.force_login(user=self.user) + response = self.client.get(f"/api/documents/{self.document.pk}/suggestions/") + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual( + response.json(), + { + "title": "AI Title", + "tags": [self.tag1.pk], + "suggested_tags": ["tag2"], + "correspondents": [self.correspondent1.pk], + "suggested_correspondents": [], + "document_types": [self.document_type1.pk], + "suggested_document_types": [], + "storage_paths": [self.path1.pk], + "suggested_storage_paths": [], + "dates": ["2023-01-01"], + }, + ) + + def test_invalidate_suggestions_cache(self) -> None: + self.client.force_login(user=self.user) + suggestions = { + "title": "AI Title", + "tags": ["tag1", "tag2"], + "correspondents": ["correspondent1"], + "document_types": ["type1"], + "storage_paths": ["path1"], + "dates": ["2023-01-01"], + } + set_llm_suggestions_cache( + self.document.pk, + suggestions, + backend="mock_backend", + ) + self.assertEqual( + get_llm_suggestion_cache( + self.document.pk, + backend="mock_backend", + ).suggestions, + suggestions, + ) + # post_save signal triggered + update_llm_suggestions_cache( + sender=None, + instance=self.document, + ) + self.assertIsNone( + get_llm_suggestion_cache( + self.document.pk, + backend="mock_backend", + ), + ) + + +class TestAIChatStreamingView(DirectoriesMixin, TestCase): + ENDPOINT = "/api/documents/chat/" + + def setUp(self) -> None: + self.user = User.objects.create_user(username="testuser", password="pass") + self.client.force_login(user=self.user) + self.document = Document.objects.create( + title="Test Document", + filename="test.pdf", + mime_type="application/pdf", + ) + super().setUp() + + @override_settings(AI_ENABLED=False) + def test_post_ai_disabled(self) -> None: + response = self.client.post( + self.ENDPOINT, + data='{"q": "question"}', + content_type="application/json", + ) + self.assertEqual(response.status_code, 400) + self.assertIn(b"AI is required for this feature", response.content) + + @patch("documents.views.stream_chat_with_documents") + @patch("documents.views.get_objects_for_user_owner_aware") + @override_settings(AI_ENABLED=True) + def test_post_no_document_id(self, mock_get_objects, mock_stream_chat) -> None: + mock_get_objects.return_value = [self.document] + mock_stream_chat.return_value = iter([b"data"]) + response = self.client.post( + self.ENDPOINT, + data='{"q": "question"}', + content_type="application/json", + ) + self.assertEqual(response.status_code, 200) + self.assertEqual(response["Content-Type"], "text/event-stream") + + @patch("documents.views.stream_chat_with_documents") + @override_settings(AI_ENABLED=True) + def test_post_with_document_id(self, mock_stream_chat) -> None: + mock_stream_chat.return_value = iter([b"data"]) + response = self.client.post( + self.ENDPOINT, + data=f'{{"q": "question", "document_id": {self.document.pk}}}', + content_type="application/json", + ) + self.assertEqual(response.status_code, 200) + self.assertEqual(response["Content-Type"], "text/event-stream") + + @override_settings(AI_ENABLED=True) + def test_post_with_invalid_document_id(self) -> None: + response = self.client.post( + self.ENDPOINT, + data='{"q": "question", "document_id": 999999}', + content_type="application/json", + ) + self.assertEqual(response.status_code, 400) + self.assertIn(b"Document not found", response.content) + + @patch("documents.views.has_perms_owner_aware") + @override_settings(AI_ENABLED=True) + def test_post_with_document_id_no_permission(self, mock_has_perms) -> None: + mock_has_perms.return_value = False + response = self.client.post( + self.ENDPOINT, + data=f'{{"q": "question", "document_id": {self.document.pk}}}', + content_type="application/json", + ) + self.assertEqual(response.status_code, 403) + self.assertIn(b"Insufficient permissions", response.content) diff --git a/src/documents/tests/test_workflows.py b/src/documents/tests/test_workflows.py index 7652d22b5..1cd0a9826 100644 --- a/src/documents/tests/test_workflows.py +++ b/src/documents/tests/test_workflows.py @@ -1,27 +1,34 @@ import datetime +import json import shutil import socket +import tempfile from datetime import timedelta from pathlib import Path from typing import TYPE_CHECKING from unittest import mock import pytest +from django.conf import settings from django.contrib.auth.models import Group from django.contrib.auth.models import User +from django.core import mail from django.test import override_settings from django.utils import timezone from guardian.shortcuts import assign_perm from guardian.shortcuts import get_groups_with_perms from guardian.shortcuts import get_users_with_perms +from httpx import ConnectError from httpx import HTTPError from httpx import HTTPStatusError from pytest_httpx import HTTPXMock from rest_framework.test import APIClient from rest_framework.test import APITestCase +from documents.file_handling import create_source_path_directory +from documents.file_handling import generate_unique_filename from documents.signals.handlers import run_workflows -from documents.signals.handlers import send_webhook +from documents.workflows.webhooks import send_webhook if TYPE_CHECKING: from django.db.models import QuerySet @@ -29,8 +36,10 @@ from pytest_django.fixtures import SettingsWrapper from documents import tasks from documents.data_models import ConsumableDocument +from documents.data_models import DocumentMetadataOverrides from documents.data_models import DocumentSource from documents.matching import document_matches_workflow +from documents.matching import existing_document_matches_workflow from documents.matching import prefilter_documents_by_workflowtrigger from documents.models import Correspondent from documents.models import CustomField @@ -46,11 +55,13 @@ from documents.models import WorkflowActionEmail from documents.models import WorkflowActionWebhook from documents.models import WorkflowRun from documents.models import WorkflowTrigger +from documents.serialisers import WorkflowTriggerSerializer from documents.signals import document_consumption_finished from documents.tests.utils import DirectoriesMixin from documents.tests.utils import DummyProgressManager from documents.tests.utils import FileSystemAssertsMixin from documents.tests.utils import SampleDirMixin +from documents.workflows.actions import execute_password_removal_action from paperless_mail.models import MailAccount from paperless_mail.models import MailRule @@ -109,7 +120,7 @@ class TestWorkflows( return super().setUp() - def test_workflow_match(self): + def test_workflow_match(self) -> None: """ GIVEN: - Existing workflow @@ -228,7 +239,7 @@ class TestWorkflows( expected_str = f"Document matched {trigger} from {w}" self.assertIn(expected_str, info) - def test_workflow_match_mailrule(self): + def test_workflow_match_mailrule(self) -> None: """ GIVEN: - Existing workflow @@ -330,7 +341,7 @@ class TestWorkflows( expected_str = f"Document matched {trigger} from {w}" self.assertIn(expected_str, info) - def test_workflow_match_multiple(self): + def test_workflow_match_multiple(self) -> None: """ GIVEN: - Multiple existing workflows @@ -425,7 +436,7 @@ class TestWorkflows( expected_str = f"Document matched {trigger2} from {w2}" self.assertIn(expected_str, cm.output[1]) - def test_workflow_fnmatch_path(self): + def test_workflow_fnmatch_path(self) -> None: """ GIVEN: - Existing workflow @@ -473,7 +484,7 @@ class TestWorkflows( expected_str = f"Document matched {trigger} from {w}" self.assertIn(expected_str, cm.output[0]) - def test_workflow_no_match_filename(self): + def test_workflow_no_match_filename(self) -> None: """ GIVEN: - Existing workflow @@ -548,7 +559,7 @@ class TestWorkflows( expected_str = f"Document filename {test_file.name} does not match" self.assertIn(expected_str, cm.output[1]) - def test_workflow_no_match_path(self): + def test_workflow_no_match_path(self) -> None: """ GIVEN: - Existing workflow @@ -632,7 +643,7 @@ class TestWorkflows( expected_str = f"Document path {test_file} does not match" self.assertIn(expected_str, cm.output[1]) - def test_workflow_no_match_mail_rule(self): + def test_workflow_no_match_mail_rule(self) -> None: """ GIVEN: - Existing workflow @@ -717,7 +728,7 @@ class TestWorkflows( expected_str = "Document mail rule 99 !=" self.assertIn(expected_str, cm.output[1]) - def test_workflow_no_match_source(self): + def test_workflow_no_match_source(self) -> None: """ GIVEN: - Existing workflow @@ -801,7 +812,7 @@ class TestWorkflows( expected_str = f"Document source {DocumentSource.ApiUpload.name} not in ['{DocumentSource.ConsumeFolder.name}', '{DocumentSource.MailFetch.name}']" self.assertIn(expected_str, cm.output[1]) - def test_document_added_no_match_trigger_type(self): + def test_document_added_no_match_trigger_type(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION, ) @@ -836,7 +847,7 @@ class TestWorkflows( expected_str = f"No matching triggers with type {WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED} found" self.assertIn(expected_str, cm.output[1]) - def test_workflow_repeat_custom_fields(self): + def test_workflow_repeat_custom_fields(self) -> None: """ GIVEN: - Existing workflows which assign the same custom field @@ -889,7 +900,7 @@ class TestWorkflows( expected_str = f"Document matched {trigger} from {w}" self.assertIn(expected_str, cm.output[0]) - def test_document_added_workflow(self): + def test_document_added_workflow(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, filter_filename="*sample*", @@ -937,7 +948,7 @@ class TestWorkflows( self.assertEqual(doc.correspondent, self.c2) self.assertEqual(doc.title, f"Doc created in {created.year}") - def test_document_added_no_match_filename(self): + def test_document_added_no_match_filename(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, filter_filename="*foobar*", @@ -973,7 +984,7 @@ class TestWorkflows( expected_str = f"Document filename {doc.original_filename} does not match" self.assertIn(expected_str, cm.output[1]) - def test_document_added_match_content_matching(self): + def test_document_added_match_content_matching(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, matching_algorithm=MatchingModel.MATCH_LITERAL, @@ -1011,7 +1022,7 @@ class TestWorkflows( expected_str = f"Document matched {trigger} from {w}" self.assertIn(expected_str, cm.output[1]) - def test_document_added_no_match_content_matching(self): + def test_document_added_no_match_content_matching(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, matching_algorithm=MatchingModel.MATCH_LITERAL, @@ -1048,7 +1059,7 @@ class TestWorkflows( expected_str = f"Document content matching settings for algorithm '{trigger.matching_algorithm}' did not match" self.assertIn(expected_str, cm.output[1]) - def test_document_added_no_match_tags(self): + def test_document_added_no_match_tags(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, ) @@ -1080,10 +1091,515 @@ class TestWorkflows( ) expected_str = f"Document did not match {w}" self.assertIn(expected_str, cm.output[0]) - expected_str = f"Document tags {doc.tags.all()} do not include {trigger.filter_has_tags.all()}" + expected_str = f"Document tags {list(doc.tags.all())} do not include {list(trigger.filter_has_tags.all())}" self.assertIn(expected_str, cm.output[1]) - def test_document_added_no_match_doctype(self): + def test_document_added_no_match_all_tags(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + ) + trigger.filter_has_all_tags.set([self.t1, self.t2]) + action = WorkflowAction.objects.create( + assign_title="Doc assign owner", + assign_owner=self.user2, + ) + w = Workflow.objects.create( + name="Workflow 1", + order=0, + ) + w.triggers.add(trigger) + w.actions.add(action) + w.save() + + doc = Document.objects.create( + title="sample test", + correspondent=self.c, + original_filename="sample.pdf", + ) + doc.tags.set([self.t1]) + doc.save() + + with self.assertLogs("paperless.matching", level="DEBUG") as cm: + document_consumption_finished.send( + sender=self.__class__, + document=doc, + ) + expected_str = f"Document did not match {w}" + self.assertIn(expected_str, cm.output[0]) + expected_str = ( + f"Document tags {list(doc.tags.all())} do not contain all of" + f" {list(trigger.filter_has_all_tags.all())}" + ) + self.assertIn(expected_str, cm.output[1]) + + def test_document_added_excluded_tags(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + ) + trigger.filter_has_not_tags.set([self.t3]) + action = WorkflowAction.objects.create( + assign_title="Doc assign owner", + assign_owner=self.user2, + ) + w = Workflow.objects.create( + name="Workflow 1", + order=0, + ) + w.triggers.add(trigger) + w.actions.add(action) + w.save() + + doc = Document.objects.create( + title="sample test", + correspondent=self.c, + original_filename="sample.pdf", + ) + doc.tags.set([self.t3]) + doc.save() + + with self.assertLogs("paperless.matching", level="DEBUG") as cm: + document_consumption_finished.send( + sender=self.__class__, + document=doc, + ) + expected_str = f"Document did not match {w}" + self.assertIn(expected_str, cm.output[0]) + expected_str = ( + f"Document tags {list(doc.tags.all())} include excluded tags" + f" {list(trigger.filter_has_not_tags.all())}" + ) + self.assertIn(expected_str, cm.output[1]) + + def test_document_added_excluded_correspondent(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + ) + trigger.filter_has_not_correspondents.set([self.c]) + action = WorkflowAction.objects.create( + assign_title="Doc assign owner", + assign_owner=self.user2, + ) + w = Workflow.objects.create( + name="Workflow 1", + order=0, + ) + w.triggers.add(trigger) + w.actions.add(action) + w.save() + + doc = Document.objects.create( + title="sample test", + correspondent=self.c, + original_filename="sample.pdf", + ) + + with self.assertLogs("paperless.matching", level="DEBUG") as cm: + document_consumption_finished.send( + sender=self.__class__, + document=doc, + ) + expected_str = f"Document did not match {w}" + self.assertIn(expected_str, cm.output[0]) + expected_str = ( + f"Document correspondent {doc.correspondent} is excluded by" + f" {list(trigger.filter_has_not_correspondents.all())}" + ) + self.assertIn(expected_str, cm.output[1]) + + def test_document_added_excluded_document_types(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + ) + trigger.filter_has_not_document_types.set([self.dt]) + action = WorkflowAction.objects.create( + assign_title="Doc assign owner", + assign_owner=self.user2, + ) + w = Workflow.objects.create( + name="Workflow 1", + order=0, + ) + w.triggers.add(trigger) + w.actions.add(action) + w.save() + + doc = Document.objects.create( + title="sample test", + document_type=self.dt, + original_filename="sample.pdf", + ) + + with self.assertLogs("paperless.matching", level="DEBUG") as cm: + document_consumption_finished.send( + sender=self.__class__, + document=doc, + ) + expected_str = f"Document did not match {w}" + self.assertIn(expected_str, cm.output[0]) + expected_str = ( + f"Document doc type {doc.document_type} is excluded by" + f" {list(trigger.filter_has_not_document_types.all())}" + ) + self.assertIn(expected_str, cm.output[1]) + + def test_document_added_excluded_storage_paths(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + ) + trigger.filter_has_not_storage_paths.set([self.sp]) + action = WorkflowAction.objects.create( + assign_title="Doc assign owner", + assign_owner=self.user2, + ) + w = Workflow.objects.create( + name="Workflow 1", + order=0, + ) + w.triggers.add(trigger) + w.actions.add(action) + w.save() + + doc = Document.objects.create( + title="sample test", + storage_path=self.sp, + original_filename="sample.pdf", + ) + + with self.assertLogs("paperless.matching", level="DEBUG") as cm: + document_consumption_finished.send( + sender=self.__class__, + document=doc, + ) + expected_str = f"Document did not match {w}" + self.assertIn(expected_str, cm.output[0]) + expected_str = ( + f"Document storage path {doc.storage_path} is excluded by" + f" {list(trigger.filter_has_not_storage_paths.all())}" + ) + self.assertIn(expected_str, cm.output[1]) + + def test_document_added_any_filters(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + ) + trigger.filter_has_any_correspondents.set([self.c]) + trigger.filter_has_any_document_types.set([self.dt]) + trigger.filter_has_any_storage_paths.set([self.sp]) + + matching_doc = Document.objects.create( + title="sample test", + correspondent=self.c, + document_type=self.dt, + storage_path=self.sp, + original_filename="sample.pdf", + checksum="checksum-any-match", + ) + + matched, reason = existing_document_matches_workflow(matching_doc, trigger) + self.assertTrue(matched) + self.assertIsNone(reason) + + wrong_correspondent = Document.objects.create( + title="wrong correspondent", + correspondent=self.c2, + document_type=self.dt, + storage_path=self.sp, + original_filename="sample2.pdf", + ) + matched, reason = existing_document_matches_workflow( + wrong_correspondent, + trigger, + ) + self.assertFalse(matched) + self.assertIn("correspondent", reason) + + other_document_type = DocumentType.objects.create(name="Other") + wrong_document_type = Document.objects.create( + title="wrong doc type", + correspondent=self.c, + document_type=other_document_type, + storage_path=self.sp, + original_filename="sample3.pdf", + checksum="checksum-wrong-doc-type", + ) + matched, reason = existing_document_matches_workflow( + wrong_document_type, + trigger, + ) + self.assertFalse(matched) + self.assertIn("doc type", reason) + + other_storage_path = StoragePath.objects.create( + name="Other path", + path="/other/", + ) + wrong_storage_path = Document.objects.create( + title="wrong storage", + correspondent=self.c, + document_type=self.dt, + storage_path=other_storage_path, + original_filename="sample4.pdf", + checksum="checksum-wrong-storage-path", + ) + matched, reason = existing_document_matches_workflow( + wrong_storage_path, + trigger, + ) + self.assertFalse(matched) + self.assertIn("storage path", reason) + + def test_document_added_custom_field_query_no_match(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + filter_custom_field_query=json.dumps( + [ + "AND", + [[self.cf1.id, "exact", "expected"]], + ], + ), + ) + action = WorkflowAction.objects.create( + assign_title="Doc assign owner", + assign_owner=self.user2, + ) + workflow = Workflow.objects.create(name="Workflow 1", order=0) + workflow.triggers.add(trigger) + workflow.actions.add(action) + workflow.save() + + doc = Document.objects.create( + title="sample test", + correspondent=self.c, + original_filename="sample.pdf", + ) + CustomFieldInstance.objects.create( + document=doc, + field=self.cf1, + value_text="other", + ) + + with self.assertLogs("paperless.matching", level="DEBUG") as cm: + document_consumption_finished.send( + sender=self.__class__, + document=doc, + ) + expected_str = f"Document did not match {workflow}" + self.assertIn(expected_str, cm.output[0]) + self.assertIn( + "Document custom fields do not match the configured custom field query", + cm.output[1], + ) + + def test_document_added_custom_field_query_match(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + filter_custom_field_query=json.dumps( + [ + "AND", + [[self.cf1.id, "exact", "expected"]], + ], + ), + ) + doc = Document.objects.create( + title="sample test", + correspondent=self.c, + original_filename="sample.pdf", + ) + CustomFieldInstance.objects.create( + document=doc, + field=self.cf1, + value_text="expected", + ) + + matched, reason = existing_document_matches_workflow(doc, trigger) + self.assertTrue(matched) + self.assertIsNone(reason) + + def test_prefilter_documents_custom_field_query(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + filter_custom_field_query=json.dumps( + [ + "AND", + [[self.cf1.id, "exact", "match"]], + ], + ), + ) + doc1 = Document.objects.create( + title="doc 1", + correspondent=self.c, + original_filename="doc1.pdf", + checksum="checksum1", + ) + CustomFieldInstance.objects.create( + document=doc1, + field=self.cf1, + value_text="match", + ) + + doc2 = Document.objects.create( + title="doc 2", + correspondent=self.c, + original_filename="doc2.pdf", + checksum="checksum2", + ) + CustomFieldInstance.objects.create( + document=doc2, + field=self.cf1, + value_text="different", + ) + + filtered = prefilter_documents_by_workflowtrigger( + Document.objects.all(), + trigger, + ) + self.assertIn(doc1, filtered) + self.assertNotIn(doc2, filtered) + + def test_prefilter_documents_any_filters(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + ) + trigger.filter_has_any_correspondents.set([self.c]) + trigger.filter_has_any_document_types.set([self.dt]) + trigger.filter_has_any_storage_paths.set([self.sp]) + + allowed_document = Document.objects.create( + title="allowed", + correspondent=self.c, + document_type=self.dt, + storage_path=self.sp, + original_filename="doc-allowed.pdf", + checksum="checksum-any-allowed", + ) + blocked_document = Document.objects.create( + title="blocked", + correspondent=self.c2, + document_type=self.dt, + storage_path=self.sp, + original_filename="doc-blocked.pdf", + checksum="checksum-any-blocked", + ) + + filtered = prefilter_documents_by_workflowtrigger( + Document.objects.all(), + trigger, + ) + + self.assertIn(allowed_document, filtered) + self.assertNotIn(blocked_document, filtered) + + def test_consumption_trigger_requires_filter_configuration(self) -> None: + serializer = WorkflowTriggerSerializer( + data={ + "type": WorkflowTrigger.WorkflowTriggerType.CONSUMPTION, + }, + ) + + self.assertFalse(serializer.is_valid()) + errors = serializer.errors.get("non_field_errors", []) + self.assertIn( + "File name, path or mail rule filter are required", + [str(error) for error in errors], + ) + + def test_workflow_trigger_serializer_clears_empty_custom_field_query(self) -> None: + serializer = WorkflowTriggerSerializer( + data={ + "type": WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + "filter_custom_field_query": "", + }, + ) + + self.assertTrue(serializer.is_valid(), serializer.errors) + self.assertIsNone(serializer.validated_data.get("filter_custom_field_query")) + + def test_existing_document_invalid_custom_field_query_configuration(self) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + filter_custom_field_query="{ not json", + ) + + document = Document.objects.create( + title="doc invalid query", + original_filename="invalid.pdf", + checksum="checksum-invalid-query", + ) + + matched, reason = existing_document_matches_workflow(document, trigger) + self.assertFalse(matched) + self.assertEqual(reason, "Invalid custom field query configuration") + + def test_prefilter_documents_returns_none_for_invalid_custom_field_query( + self, + ) -> None: + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + filter_custom_field_query="{ not json", + ) + + Document.objects.create( + title="doc", + original_filename="doc.pdf", + checksum="checksum-prefilter-invalid", + ) + + filtered = prefilter_documents_by_workflowtrigger( + Document.objects.all(), + trigger, + ) + + self.assertEqual(list(filtered), []) + + def test_prefilter_documents_applies_all_filters(self) -> None: + other_document_type = DocumentType.objects.create(name="Other Type") + other_storage_path = StoragePath.objects.create( + name="Blocked path", + path="/blocked/", + ) + + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, + filter_has_correspondent=self.c, + filter_has_document_type=self.dt, + filter_has_storage_path=self.sp, + ) + trigger.filter_has_tags.set([self.t1]) + trigger.filter_has_all_tags.set([self.t1, self.t2]) + trigger.filter_has_not_tags.set([self.t3]) + trigger.filter_has_not_correspondents.set([self.c2]) + trigger.filter_has_not_document_types.set([other_document_type]) + trigger.filter_has_not_storage_paths.set([other_storage_path]) + + allowed_document = Document.objects.create( + title="allowed", + correspondent=self.c, + document_type=self.dt, + storage_path=self.sp, + original_filename="allow.pdf", + checksum="checksum-prefilter-allowed", + ) + allowed_document.tags.set([self.t1, self.t2]) + + blocked_document = Document.objects.create( + title="blocked", + correspondent=self.c2, + document_type=other_document_type, + storage_path=other_storage_path, + original_filename="block.pdf", + checksum="checksum-prefilter-blocked", + ) + blocked_document.tags.set([self.t1, self.t3]) + + filtered = prefilter_documents_by_workflowtrigger( + Document.objects.all(), + trigger, + ) + + self.assertIn(allowed_document, filtered) + self.assertNotIn(blocked_document, filtered) + + def test_document_added_no_match_doctype(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, filter_has_document_type=self.dt, @@ -1116,7 +1632,7 @@ class TestWorkflows( expected_str = f"Document doc type {doc.document_type} does not match {trigger.filter_has_document_type}" self.assertIn(expected_str, cm.output[1]) - def test_document_added_no_match_correspondent(self): + def test_document_added_no_match_correspondent(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, filter_has_correspondent=self.c, @@ -1150,7 +1666,7 @@ class TestWorkflows( expected_str = f"Document correspondent {doc.correspondent} does not match {trigger.filter_has_correspondent}" self.assertIn(expected_str, cm.output[1]) - def test_document_added_no_match_storage_path(self): + def test_document_added_no_match_storage_path(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, filter_has_storage_path=self.sp, @@ -1182,7 +1698,7 @@ class TestWorkflows( expected_str = f"Document storage path {doc.storage_path} does not match {trigger.filter_has_storage_path}" self.assertIn(expected_str, cm.output[1]) - def test_document_added_invalid_title_placeholders(self): + def test_document_added_invalid_title_placeholders(self) -> None: """ GIVEN: - Existing workflow with added trigger type @@ -1223,7 +1739,7 @@ class TestWorkflows( self.assertEqual(doc.title, "Doc {created_year]") - def test_document_updated_workflow(self): + def test_document_updated_workflow(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, filter_has_document_type=self.dt, @@ -1255,7 +1771,7 @@ class TestWorkflows( self.assertEqual(doc.custom_fields.all().count(), 1) - def test_document_consumption_workflow_month_placeholder_addded(self): + def test_document_consumption_workflow_month_placeholder_addded(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION, sources=f"{DocumentSource.ApiUpload}", @@ -1294,7 +1810,7 @@ class TestWorkflows( r"Doc added in \w{3,}", ) # Match any 3-letter month name - def test_document_updated_workflow_existing_custom_field(self): + def test_document_updated_workflow_existing_custom_field(self) -> None: """ GIVEN: - Existing workflow with UPDATED trigger and action that assigns a custom field with a value @@ -1338,7 +1854,7 @@ class TestWorkflows( doc.refresh_from_db() self.assertEqual(doc.custom_fields.get(field=self.cf1).value, "new value") - def test_document_updated_workflow_merge_permissions(self): + def test_document_updated_workflow_merge_permissions(self) -> None: """ GIVEN: - Existing workflow with UPDATED trigger and action that sets permissions @@ -1406,7 +1922,7 @@ class TestWorkflows( # group2 should have been added self.assertIn(self.group2, group_perms) - def test_workflow_scheduled_trigger_created(self): + def test_workflow_scheduled_trigger_created(self) -> None: """ GIVEN: - Existing workflow with SCHEDULED trigger against the created field and action that assigns owner @@ -1449,7 +1965,7 @@ class TestWorkflows( doc.refresh_from_db() self.assertEqual(doc.owner, self.user2) - def test_workflow_scheduled_trigger_added(self): + def test_workflow_scheduled_trigger_added(self) -> None: """ GIVEN: - Existing workflow with SCHEDULED trigger against the added field and action that assigns owner @@ -1492,7 +2008,7 @@ class TestWorkflows( self.assertEqual(doc.owner, self.user2) @mock.patch("documents.models.Document.objects.filter", autospec=True) - def test_workflow_scheduled_trigger_modified(self, mock_filter): + def test_workflow_scheduled_trigger_modified(self, mock_filter) -> None: """ GIVEN: - Existing workflow with SCHEDULED trigger against the modified field and action that assigns owner @@ -1534,7 +2050,7 @@ class TestWorkflows( doc.refresh_from_db() self.assertEqual(doc.owner, self.user2) - def test_workflow_scheduled_trigger_custom_field(self): + def test_workflow_scheduled_trigger_custom_field(self) -> None: """ GIVEN: - Existing workflow with SCHEDULED trigger against a custom field and action that assigns owner @@ -1580,7 +2096,7 @@ class TestWorkflows( doc.refresh_from_db() self.assertEqual(doc.owner, self.user2) - def test_workflow_scheduled_already_run(self): + def test_workflow_scheduled_already_run(self) -> None: """ GIVEN: - Existing workflow with SCHEDULED trigger @@ -1631,7 +2147,7 @@ class TestWorkflows( doc.refresh_from_db() self.assertIsNone(doc.owner) - def test_workflow_scheduled_trigger_too_early(self): + def test_workflow_scheduled_trigger_too_early(self) -> None: """ GIVEN: - Existing workflow with SCHEDULED trigger and recurring interval of 7 days @@ -1685,7 +2201,69 @@ class TestWorkflows( doc.refresh_from_db() self.assertIsNone(doc.owner) - def test_workflow_scheduled_trigger_negative_offset_customfield(self): + def test_workflow_scheduled_recurring_respects_latest_run(self) -> None: + """ + GIVEN: + - Scheduled workflow marked as recurring with a 1-day interval + - Document that matches the trigger + - Two prior runs exist: one 2 days ago and one 1 hour ago + WHEN: + - Scheduled workflows are checked again + THEN: + - Workflow does not run because the most recent run is inside the interval + """ + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.SCHEDULED, + schedule_date_field=WorkflowTrigger.ScheduleDateField.CREATED, + schedule_is_recurring=True, + schedule_recurring_interval_days=1, + ) + action = WorkflowAction.objects.create( + assign_title="Doc assign owner", + assign_owner=self.user2, + ) + w = Workflow.objects.create( + name="Workflow 1", + order=0, + ) + w.triggers.add(trigger) + w.actions.add(action) + w.save() + + doc = Document.objects.create( + title="sample test", + correspondent=self.c, + original_filename="sample.pdf", + created=timezone.now().date() - timedelta(days=3), + ) + + WorkflowRun.objects.create( + workflow=w, + document=doc, + type=WorkflowTrigger.WorkflowTriggerType.SCHEDULED, + run_at=timezone.now() - timedelta(days=2), + ) + WorkflowRun.objects.create( + workflow=w, + document=doc, + type=WorkflowTrigger.WorkflowTriggerType.SCHEDULED, + run_at=timezone.now() - timedelta(hours=1), + ) + + tasks.check_scheduled_workflows() + + doc.refresh_from_db() + self.assertIsNone(doc.owner) + self.assertEqual( + WorkflowRun.objects.filter( + workflow=w, + document=doc, + type=WorkflowTrigger.WorkflowTriggerType.SCHEDULED, + ).count(), + 2, + ) + + def test_workflow_scheduled_trigger_negative_offset_customfield(self) -> None: """ GIVEN: - Workflow with offset -7 (i.e., 7 days *before* the date) @@ -1747,7 +2325,7 @@ class TestWorkflows( doc2.refresh_from_db() self.assertIsNone(doc2.owner) - def test_workflow_scheduled_trigger_negative_offset_created(self): + def test_workflow_scheduled_trigger_negative_offset_created(self) -> None: """ GIVEN: - Existing workflow with SCHEDULED trigger and negative offset of -7 days (so 7 days before date) @@ -1798,7 +2376,7 @@ class TestWorkflows( doc2.refresh_from_db() self.assertIsNone(doc2.owner) # has not triggered yet - def test_offset_positive_means_after(self): + def test_offset_positive_means_after(self) -> None: """ GIVEN: - Document created 30 days ago @@ -1832,7 +2410,7 @@ class TestWorkflows( doc.refresh_from_db() self.assertEqual(doc.owner, self.user2) - def test_workflow_scheduled_filters_queryset(self): + def test_workflow_scheduled_filters_queryset(self) -> None: """ GIVEN: - Existing workflow with scheduled trigger @@ -1883,7 +2461,7 @@ class TestWorkflows( ) self.assertEqual(filtered_docs.count(), 5) - def test_workflow_enabled_disabled(self): + def test_workflow_enabled_disabled(self) -> None: trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED, filter_filename="*sample*", @@ -1929,7 +2507,7 @@ class TestWorkflows( self.assertEqual(doc.title, "Title assign owner") self.assertEqual(doc.owner, self.user2) - def test_new_trigger_type_raises_exception(self): + def test_new_trigger_type_raises_exception(self) -> None: trigger = WorkflowTrigger.objects.create( type=99, ) @@ -1949,7 +2527,7 @@ class TestWorkflows( ) self.assertRaises(Exception, document_matches_workflow, doc, w, 99) - def test_removal_action_document_updated_workflow(self): + def test_removal_action_document_updated_workflow(self) -> None: """ GIVEN: - Workflow with removal action @@ -2023,7 +2601,7 @@ class TestWorkflows( group_perms: QuerySet = get_groups_with_perms(doc) self.assertNotIn(self.group1, group_perms) - def test_removal_action_document_updated_removeall(self): + def test_removal_action_document_updated_removeall(self) -> None: """ GIVEN: - Workflow with removal action with remove all fields set @@ -2094,7 +2672,7 @@ class TestWorkflows( group_perms: QuerySet = get_groups_with_perms(doc) self.assertNotIn(self.group1, group_perms) - def test_removal_action_document_consumed(self): + def test_removal_action_document_consumed(self) -> None: """ GIVEN: - Workflow with assignment and removal actions @@ -2225,7 +2803,7 @@ class TestWorkflows( expected_str = f"Document matched {trigger} from {w}" self.assertIn(expected_str, info) - def test_removal_action_document_consumed_remove_all(self): + def test_removal_action_document_consumed_remove_all(self) -> None: """ GIVEN: - Workflow with assignment and removal actions with remove all fields set @@ -2336,7 +2914,7 @@ class TestWorkflows( expected_str = f"Document matched {trigger} from {w}" self.assertIn(expected_str, info) - def test_workflow_with_tag_actions_doesnt_overwrite_other_actions(self): + def test_workflow_with_tag_actions_doesnt_overwrite_other_actions(self) -> None: """ GIVEN: - Document updated workflow filtered by has tag with two actions, first adds owner, second removes a tag @@ -2385,6 +2963,80 @@ class TestWorkflows( self.assertEqual(doc.tags.all().count(), 1) self.assertIn(self.t2, doc.tags.all()) + @override_settings( + PAPERLESS_EMAIL_HOST="localhost", + EMAIL_ENABLED=True, + PAPERLESS_URL="http://localhost:8000", + ) + @mock.patch("django.core.mail.message.EmailMessage.send") + def test_workflow_assignment_then_email_includes_attachment(self, mock_email_send): + """ + GIVEN: + - Workflow with assignment and email actions + - Email action configured to include the document + WHEN: + - Workflow is run on a newly created document + THEN: + - Email action sends the document as an attachment + """ + + storage_path = StoragePath.objects.create( + name="sp2", + path="workflow/{{ document.pk }}", + ) + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION, + ) + assignment_action = WorkflowAction.objects.create( + type=WorkflowAction.WorkflowActionType.ASSIGNMENT, + assign_storage_path=storage_path, + assign_owner=self.user2, + ) + assignment_action.assign_tags.add(self.t1) + + email_action_config = WorkflowActionEmail.objects.create( + subject="Doc ready {doc_title}", + body="Document URL: {doc_url}", + to="owner@example.com", + include_document=True, + ) + email_action = WorkflowAction.objects.create( + type=WorkflowAction.WorkflowActionType.EMAIL, + email=email_action_config, + ) + + workflow = Workflow.objects.create(name="Assignment then email", order=0) + workflow.triggers.add(trigger) + workflow.actions.set([assignment_action, email_action]) + + temp_working_copy = shutil.copy( + self.SAMPLE_DIR / "simple.pdf", + self.dirs.scratch_dir / "working-copy.pdf", + ) + + Document.objects.create( + title="workflow doc", + correspondent=self.c, + checksum="wf-assignment-email", + mime_type="application/pdf", + ) + + consumable_document = ConsumableDocument( + source=DocumentSource.ConsumeFolder, + original_file=temp_working_copy, + ) + + mock_email_send.return_value = 1 + + with self.assertNoLogs("paperless.workflows", level="ERROR"): + run_workflows( + WorkflowTrigger.WorkflowTriggerType.CONSUMPTION, + consumable_document, + overrides=DocumentMetadataOverrides(), + ) + + mock_email_send.assert_called_once() + @override_settings( PAPERLESS_EMAIL_HOST="localhost", EMAIL_ENABLED=True, @@ -2392,7 +3044,7 @@ class TestWorkflows( ) @mock.patch("httpx.post") @mock.patch("django.core.mail.message.EmailMessage.send") - def test_workflow_email_action(self, mock_email_send, mock_post): + def test_workflow_email_action(self, mock_email_send, mock_post) -> None: """ GIVEN: - Document updated workflow with email action @@ -2445,7 +3097,7 @@ class TestWorkflows( PAPERLESS_URL="http://localhost:8000", ) @mock.patch("django.core.mail.message.EmailMessage.send") - def test_workflow_email_include_file(self, mock_email_send): + def test_workflow_email_include_file(self, mock_email_send) -> None: """ GIVEN: - Document updated workflow with email action @@ -2511,10 +3163,74 @@ class TestWorkflows( mock_email_send.assert_called_once() + @override_settings( + PAPERLESS_EMAIL_HOST="localhost", + EMAIL_ENABLED=True, + PAPERLESS_URL="http://localhost:8000", + EMAIL_BACKEND="django.core.mail.backends.locmem.EmailBackend", + ) + def test_workflow_email_attachment_uses_storage_filename(self) -> None: + """ + GIVEN: + - Document updated workflow with include document action + - Document stored with formatted storage-path filename + WHEN: + - Workflow sends an email + THEN: + - Attachment filename matches the stored filename + """ + + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, + ) + email_action = WorkflowActionEmail.objects.create( + subject="Test Notification: {doc_title}", + body="Test message: {doc_url}", + to="me@example.com", + include_document=True, + ) + action = WorkflowAction.objects.create( + type=WorkflowAction.WorkflowActionType.EMAIL, + email=email_action, + ) + workflow = Workflow.objects.create( + name="Workflow attachment filename", + order=0, + ) + workflow.triggers.add(trigger) + workflow.actions.add(action) + workflow.save() + + storage_path = StoragePath.objects.create( + name="Fancy Path", + path="formatted/{{ document.pk }}/{{ title }}", + ) + doc = Document.objects.create( + title="workflow doc", + correspondent=self.c, + checksum="workflow-email-attachment", + mime_type="application/pdf", + storage_path=storage_path, + original_filename="workflow-orig.pdf", + ) + + # eg what happens in update_filename_and_move_files + generated = generate_unique_filename(doc) + destination = (settings.ORIGINALS_DIR / generated).resolve() + create_source_path_directory(destination) + shutil.copy(self.SAMPLE_DIR / "simple.pdf", destination) + Document.objects.filter(pk=doc.pk).update(filename=generated.as_posix()) + + run_workflows(WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, doc) + + self.assertEqual(len(mail.outbox), 1) + attachment_names = [att[0] for att in mail.outbox[0].attachments] + self.assertEqual(attachment_names, [Path(generated).name]) + @override_settings( EMAIL_ENABLED=False, ) - def test_workflow_email_action_no_email_setup(self): + def test_workflow_email_action_no_email_setup(self) -> None: """ GIVEN: - Document updated workflow with email action @@ -2550,7 +3266,7 @@ class TestWorkflows( original_filename="sample.pdf", ) - with self.assertLogs("paperless.handlers", level="ERROR") as cm: + with self.assertLogs("paperless.workflows.actions", level="ERROR") as cm: run_workflows(WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, doc) expected_str = "Email backend has not been configured" @@ -2561,7 +3277,7 @@ class TestWorkflows( PAPERLESS_URL="http://localhost:8000", ) @mock.patch("django.core.mail.message.EmailMessage.send") - def test_workflow_email_action_fail(self, mock_email_send): + def test_workflow_email_action_fail(self, mock_email_send) -> None: """ GIVEN: - Document updated workflow with email action @@ -2598,7 +3314,7 @@ class TestWorkflows( original_filename="sample.pdf", ) - with self.assertLogs("paperless.handlers", level="ERROR") as cm: + with self.assertLogs("paperless.workflows", level="ERROR") as cm: run_workflows(WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, doc) expected_str = "Error occurred sending email" @@ -2611,7 +3327,11 @@ class TestWorkflows( ) @mock.patch("httpx.post") @mock.patch("django.core.mail.message.EmailMessage.send") - def test_workflow_email_consumption_started(self, mock_email_send, mock_post): + def test_workflow_email_consumption_started( + self, + mock_email_send, + mock_post, + ) -> None: """ GIVEN: - Workflow with email action and consumption trigger @@ -2666,9 +3386,11 @@ class TestWorkflows( @override_settings( PAPERLESS_URL="http://localhost:8000", + PAPERLESS_FORCE_SCRIPT_NAME="/paperless", + BASE_URL="/paperless/", ) - @mock.patch("documents.signals.handlers.send_webhook.delay") - def test_workflow_webhook_action_body(self, mock_post): + @mock.patch("documents.workflows.webhooks.send_webhook.delay") + def test_workflow_webhook_action_body(self, mock_post) -> None: """ GIVEN: - Document updated workflow with webhook action which uses body @@ -2687,7 +3409,7 @@ class TestWorkflows( ) webhook_action = WorkflowActionWebhook.objects.create( use_params=False, - body="Test message: {{doc_url}}", + body="Test message: {{doc_url}} with id {{doc_id}}", url="http://paperless-ngx.com", include_document=False, ) @@ -2717,7 +3439,10 @@ class TestWorkflows( mock_post.assert_called_once_with( url="http://paperless-ngx.com", - data=f"Test message: http://localhost:8000/documents/{doc.id}/", + data=( + f"Test message: http://localhost:8000/paperless/documents/{doc.id}/" + f" with id {doc.id}" + ), headers={}, files=None, as_json=False, @@ -2726,8 +3451,8 @@ class TestWorkflows( @override_settings( PAPERLESS_URL="http://localhost:8000", ) - @mock.patch("documents.signals.handlers.send_webhook.delay") - def test_workflow_webhook_action_w_files(self, mock_post): + @mock.patch("documents.workflows.webhooks.send_webhook.delay") + def test_workflow_webhook_action_w_files(self, mock_post) -> None: """ GIVEN: - Document updated workflow with webhook action which includes document @@ -2788,7 +3513,7 @@ class TestWorkflows( @override_settings( PAPERLESS_URL="http://localhost:8000", ) - def test_workflow_webhook_action_fail(self): + def test_workflow_webhook_action_fail(self) -> None: """ GIVEN: - Document updated workflow with webhook action @@ -2829,13 +3554,13 @@ class TestWorkflows( ) # fails because no file - with self.assertLogs("paperless.handlers", level="ERROR") as cm: + with self.assertLogs("paperless.workflows", level="ERROR") as cm: run_workflows(WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, doc) expected_str = "Error occurred sending webhook" self.assertIn(expected_str, cm.output[0]) - def test_workflow_webhook_action_url_invalid_params_headers(self): + def test_workflow_webhook_action_url_invalid_params_headers(self) -> None: """ GIVEN: - Document updated workflow with webhook action @@ -2872,7 +3597,7 @@ class TestWorkflows( original_filename="sample.pdf", ) - with self.assertLogs("paperless.handlers", level="ERROR") as cm: + with self.assertLogs("paperless.workflows", level="ERROR") as cm: run_workflows(WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, doc) expected_str = "Error occurred parsing webhook params" @@ -2880,15 +3605,15 @@ class TestWorkflows( expected_str = "Error occurred parsing webhook headers" self.assertIn(expected_str, cm.output[1]) - @mock.patch("httpx.post") - def test_workflow_webhook_send_webhook_task(self, mock_post): + @mock.patch("httpx.Client.post") + def test_workflow_webhook_send_webhook_task(self, mock_post) -> None: mock_post.return_value = mock.Mock( status_code=200, json=mock.Mock(return_value={"status": "ok"}), raise_for_status=mock.Mock(), ) - with self.assertLogs("paperless.handlers") as cm: + with self.assertLogs("paperless.workflows") as cm: send_webhook( url="http://paperless-ngx.com", data="Test message", @@ -2901,8 +3626,6 @@ class TestWorkflows( content="Test message", headers={}, files=None, - follow_redirects=False, - timeout=5, ) expected_str = "Webhook sent to http://paperless-ngx.com" @@ -2920,12 +3643,10 @@ class TestWorkflows( data={"message": "Test message"}, headers={}, files=None, - follow_redirects=False, - timeout=5, ) - @mock.patch("httpx.post") - def test_workflow_webhook_send_webhook_retry(self, mock_http): + @mock.patch("httpx.Client.post") + def test_workflow_webhook_send_webhook_retry(self, mock_http) -> None: mock_http.return_value.raise_for_status = mock.Mock( side_effect=HTTPStatusError( "Error", @@ -2934,7 +3655,7 @@ class TestWorkflows( ), ) - with self.assertLogs("paperless.handlers") as cm: + with self.assertLogs("paperless.workflows") as cm: with self.assertRaises(HTTPStatusError): send_webhook( url="http://paperless-ngx.com", @@ -2950,8 +3671,8 @@ class TestWorkflows( ) self.assertIn(expected_str, cm.output[0]) - @mock.patch("documents.signals.handlers.send_webhook.delay") - def test_workflow_webhook_action_consumption(self, mock_post): + @mock.patch("documents.workflows.webhooks.send_webhook.delay") + def test_workflow_webhook_action_consumption(self, mock_post) -> None: """ GIVEN: - Workflow with webhook action and consumption trigger @@ -3003,12 +3724,202 @@ class TestWorkflows( mock_post.assert_called_once() + @mock.patch("documents.bulk_edit.remove_password") + def test_password_removal_action_attempts_multiple_passwords( + self, + mock_remove_password, + ): + """ + GIVEN: + - Workflow password removal action + - Multiple passwords provided + WHEN: + - Document updated triggering the workflow + THEN: + - Password removal is attempted until one succeeds + """ + doc = Document.objects.create( + title="Protected", + checksum="pw-checksum", + ) + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, + ) + action = WorkflowAction.objects.create( + type=WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL, + passwords="wrong, right\n extra ", + ) + workflow = Workflow.objects.create(name="Password workflow") + workflow.triggers.add(trigger) + workflow.actions.add(action) + + mock_remove_password.side_effect = [ + ValueError("wrong password"), + "OK", + ] + + run_workflows(trigger.type, doc) + + assert mock_remove_password.call_count == 2 + mock_remove_password.assert_has_calls( + [ + mock.call( + [doc.id], + password="wrong", + update_document=True, + user=doc.owner, + ), + mock.call( + [doc.id], + password="right", + update_document=True, + user=doc.owner, + ), + ], + ) + + @mock.patch("documents.bulk_edit.remove_password") + def test_password_removal_action_fails_without_correct_password( + self, + mock_remove_password, + ): + """ + GIVEN: + - Workflow password removal action + - No correct password provided + WHEN: + - Document updated triggering the workflow + THEN: + - Password removal is attempted for all passwords and fails + """ + doc = Document.objects.create( + title="Protected", + checksum="pw-checksum-2", + ) + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, + ) + action = WorkflowAction.objects.create( + type=WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL, + passwords=" \n , ", + ) + workflow = Workflow.objects.create(name="Password workflow missing passwords") + workflow.triggers.add(trigger) + workflow.actions.add(action) + + run_workflows(trigger.type, doc) + + mock_remove_password.assert_not_called() + + @mock.patch("documents.bulk_edit.remove_password") + def test_password_removal_action_skips_without_passwords( + self, + mock_remove_password, + ): + """ + GIVEN: + - Workflow password removal action with no passwords + WHEN: + - Workflow is run + THEN: + - Password removal is not attempted + """ + doc = Document.objects.create( + title="Protected", + checksum="pw-checksum-2", + ) + trigger = WorkflowTrigger.objects.create( + type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, + ) + action = WorkflowAction.objects.create( + type=WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL, + passwords="", + ) + workflow = Workflow.objects.create(name="Password workflow missing passwords") + workflow.triggers.add(trigger) + workflow.actions.add(action) + + run_workflows(trigger.type, doc) + + mock_remove_password.assert_not_called() + + @mock.patch("documents.bulk_edit.remove_password") + def test_password_removal_consumable_document_deferred( + self, + mock_remove_password, + ): + """ + GIVEN: + - Workflow password removal action + - Simulated consumption trigger (a ConsumableDocument is used) + WHEN: + - Document consumption is finished + THEN: + - Password removal is attempted + """ + action = WorkflowAction.objects.create( + type=WorkflowAction.WorkflowActionType.PASSWORD_REMOVAL, + passwords="first, second", + ) + + temp_dir = Path(tempfile.mkdtemp()) + original_file = temp_dir / "file.pdf" + original_file.write_bytes(b"pdf content") + consumable = ConsumableDocument( + source=DocumentSource.ApiUpload, + original_file=original_file, + ) + + execute_password_removal_action(action, consumable, logging_group=None) + + mock_remove_password.assert_not_called() + + mock_remove_password.side_effect = [ + ValueError("bad password"), + "OK", + ] + + doc = Document.objects.create( + checksum="pw-checksum-consumed", + title="Protected", + ) + + document_consumption_finished.send( + sender=self.__class__, + document=doc, + ) + + assert mock_remove_password.call_count == 2 + mock_remove_password.assert_has_calls( + [ + mock.call( + [doc.id], + password="first", + update_document=True, + user=doc.owner, + ), + mock.call( + [doc.id], + password="second", + update_document=True, + user=doc.owner, + ), + ], + ) + + # ensure handler disconnected after first run + document_consumption_finished.send( + sender=self.__class__, + document=doc, + ) + assert mock_remove_password.call_count == 2 + class TestWebhookSend: def test_send_webhook_data_or_json( self, httpx_mock: HTTPXMock, - ): + ) -> None: """ GIVEN: - Nothing @@ -3060,7 +3971,7 @@ def resolve_to(monkeypatch): class TestWebhookSecurity: - def test_blocks_invalid_scheme_or_hostname(self, httpx_mock: HTTPXMock): + def test_blocks_invalid_scheme_or_hostname(self, httpx_mock: HTTPXMock) -> None: """ GIVEN: - Invalid URL schemes or hostnames @@ -3088,7 +3999,7 @@ class TestWebhookSecurity: ) @override_settings(WEBHOOKS_ALLOWED_PORTS=[80, 443]) - def test_blocks_disallowed_port(self, httpx_mock: HTTPXMock): + def test_blocks_disallowed_port(self, httpx_mock: HTTPXMock) -> None: """ GIVEN: - URL with a disallowed port @@ -3109,7 +4020,11 @@ class TestWebhookSecurity: assert httpx_mock.get_request() is None @override_settings(WEBHOOKS_ALLOW_INTERNAL_REQUESTS=False) - def test_blocks_private_loopback_linklocal(self, httpx_mock: HTTPXMock, resolve_to): + def test_blocks_private_loopback_linklocal( + self, + httpx_mock: HTTPXMock, + resolve_to, + ) -> None: """ GIVEN: - URL with a private, loopback, or link-local IP address @@ -3120,7 +4035,7 @@ class TestWebhookSecurity: - ValueError is raised """ resolve_to("127.0.0.1") - with pytest.raises(ValueError): + with pytest.raises(ConnectError): send_webhook( "http://paperless-ngx.com", data="", @@ -3129,7 +4044,11 @@ class TestWebhookSecurity: as_json=False, ) - def test_allows_public_ip_and_sends(self, httpx_mock: HTTPXMock, resolve_to): + def test_allows_public_ip_and_sends( + self, + httpx_mock: HTTPXMock, + resolve_to, + ) -> None: """ GIVEN: - URL with a public IP address @@ -3150,9 +4069,10 @@ class TestWebhookSecurity: ) req = httpx_mock.get_request() - assert req.url.host == "paperless-ngx.com" + assert req.url.host == "52.207.186.75" + assert req.headers["host"] == "paperless-ngx.com" - def test_follow_redirects_disabled(self, httpx_mock: HTTPXMock, resolve_to): + def test_follow_redirects_disabled(self, httpx_mock: HTTPXMock, resolve_to) -> None: """ GIVEN: - A URL that redirects @@ -3180,7 +4100,11 @@ class TestWebhookSecurity: assert len(httpx_mock.get_requests()) == 1 - def test_strips_user_supplied_host_header(self, httpx_mock: HTTPXMock, resolve_to): + def test_strips_user_supplied_host_header( + self, + httpx_mock: HTTPXMock, + resolve_to, + ) -> None: """ GIVEN: - A URL with a user-supplied Host header diff --git a/src/documents/tests/utils.py b/src/documents/tests/utils.py index 88dddc557..f099cd92e 100644 --- a/src/documents/tests/utils.py +++ b/src/documents/tests/utils.py @@ -20,6 +20,7 @@ from django.db.migrations.executor import MigrationExecutor from django.test import TransactionTestCase from django.test import override_settings +from documents.consumer import AsnCheckPlugin from documents.consumer import ConsumerPlugin from documents.consumer import ConsumerPreflightPlugin from documents.data_models import ConsumableDocument @@ -68,7 +69,7 @@ def setup_directories(): return dirs -def remove_dirs(dirs): +def remove_dirs(dirs) -> None: shutil.rmtree(dirs.media_dir, ignore_errors=True) shutil.rmtree(dirs.data_dir, ignore_errors=True) shutil.rmtree(dirs.scratch_dir, ignore_errors=True) @@ -169,23 +170,23 @@ class FileSystemAssertsMixin: Utilities for checks various state information of the file system """ - def assertIsFile(self, path: PathLike | str): + def assertIsFile(self, path: PathLike | str) -> None: self.assertTrue(Path(path).resolve().is_file(), f"File does not exist: {path}") - def assertIsNotFile(self, path: PathLike | str): + def assertIsNotFile(self, path: PathLike | str) -> None: self.assertFalse(Path(path).resolve().is_file(), f"File does exist: {path}") - def assertIsDir(self, path: PathLike | str): + def assertIsDir(self, path: PathLike | str) -> None: self.assertTrue(Path(path).resolve().is_dir(), f"Dir does not exist: {path}") - def assertIsNotDir(self, path: PathLike | str): + def assertIsNotDir(self, path: PathLike | str) -> None: self.assertFalse(Path(path).resolve().is_dir(), f"Dir does exist: {path}") def assertFilesEqual( self, path1: PathLike | str, path2: PathLike | str, - ): + ) -> None: path1 = Path(path1) path2 = Path(path2) import hashlib @@ -195,7 +196,7 @@ class FileSystemAssertsMixin: self.assertEqual(hash1, hash2, "File SHA256 mismatch") - def assertFileCountInDir(self, path: PathLike | str, count: int): + def assertFileCountInDir(self, path: PathLike | str, count: int) -> None: path = Path(path).resolve() self.assertTrue(path.is_dir(), f"Path {path} is not a directory") files = [x for x in path.iterdir() if x.is_file()] @@ -293,7 +294,7 @@ class TestMigrations(TransactionTestCase): migrate_to = None auto_migrate = True - def setUp(self): + def setUp(self) -> None: super().setUp() assert self.migrate_from and self.migrate_to, ( @@ -316,7 +317,7 @@ class TestMigrations(TransactionTestCase): if self.auto_migrate: self.performMigration() - def performMigration(self): + def performMigration(self) -> None: # Run the migration to test executor = MigrationExecutor(connection) executor.loader.build_graph() # reload. @@ -324,10 +325,10 @@ class TestMigrations(TransactionTestCase): self.apps = executor.loader.project_state(self.migrate_to).apps - def setUpBeforeMigration(self, apps): + def setUpBeforeMigration(self, apps) -> None: pass - def tearDown(self): + def tearDown(self) -> None: """ Ensure the database schema is restored to the latest migration after each migration test, so subsequent tests run against HEAD. @@ -371,6 +372,14 @@ class GetConsumerMixin: "task-id", ) preflight_plugin.setup() + asncheck_plugin = AsnCheckPlugin( + doc, + overrides or DocumentMetadataOverrides(), + self.status, # type: ignore + self.dirs.scratch_dir, + "task-id", + ) + asncheck_plugin.setup() reader = ConsumerPlugin( doc, overrides or DocumentMetadataOverrides(), @@ -381,6 +390,7 @@ class GetConsumerMixin: reader.setup() try: preflight_plugin.run() + asncheck_plugin.run() yield reader finally: reader.cleanup() @@ -404,7 +414,7 @@ class DummyProgressManager: self.open() return self - def __exit__(self, exc_type, exc_val, exc_tb): + def __exit__(self, exc_type, exc_val, exc_tb) -> None: self.close() def open(self) -> None: diff --git a/src/documents/views.py b/src/documents/views.py index 20da3b789..0f907df6d 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -5,9 +5,12 @@ import platform import re import tempfile import zipfile +from collections import defaultdict +from collections import deque from datetime import datetime from pathlib import Path from time import mktime +from typing import Literal from unicodedata import normalize from urllib.parse import quote from urllib.parse import urlparse @@ -19,6 +22,8 @@ from celery import states from django.conf import settings from django.contrib.auth.models import Group from django.contrib.auth.models import User +from django.contrib.contenttypes.models import ContentType +from django.core.cache import cache from django.db import connections from django.db.migrations.loader import MigrationLoader from django.db.migrations.recorder import MigrationRecorder @@ -30,7 +35,6 @@ from django.db.models import Model from django.db.models import Q from django.db.models import Sum from django.db.models import When -from django.db.models.functions import Length from django.db.models.functions import Lower from django.db.models.manager import Manager from django.http import FileResponse @@ -40,13 +44,16 @@ from django.http import HttpResponseBadRequest from django.http import HttpResponseForbidden from django.http import HttpResponseRedirect from django.http import HttpResponseServerError +from django.http import StreamingHttpResponse from django.shortcuts import get_object_or_404 from django.utils import timezone from django.utils.decorators import method_decorator from django.utils.timezone import make_aware from django.utils.translation import get_language +from django.utils.translation import gettext_lazy as _ from django.views import View from django.views.decorators.cache import cache_control +from django.views.decorators.csrf import ensure_csrf_cookie from django.views.decorators.http import condition from django.views.decorators.http import last_modified from django.views.generic import TemplateView @@ -54,15 +61,20 @@ from django_filters.rest_framework import DjangoFilterBackend from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import OpenApiParameter from drf_spectacular.utils import extend_schema +from drf_spectacular.utils import extend_schema_serializer from drf_spectacular.utils import extend_schema_view from drf_spectacular.utils import inline_serializer +from guardian.utils import get_group_obj_perms_model +from guardian.utils import get_user_obj_perms_model from langdetect import detect from packaging import version as packaging_version from redis import Redis from rest_framework import parsers from rest_framework import serializers +from rest_framework import status from rest_framework.decorators import action from rest_framework.exceptions import NotFound +from rest_framework.exceptions import ValidationError from rest_framework.filters import OrderingFilter from rest_framework.filters import SearchFilter from rest_framework.generics import GenericAPIView @@ -82,10 +94,12 @@ from documents import index from documents.bulk_download import ArchiveOnlyStrategy from documents.bulk_download import OriginalAndArchiveStrategy from documents.bulk_download import OriginalsOnlyStrategy +from documents.caching import get_llm_suggestion_cache from documents.caching import get_metadata_cache from documents.caching import get_suggestion_cache from documents.caching import refresh_metadata_cache from documents.caching import refresh_suggestions_cache +from documents.caching import set_llm_suggestions_cache from documents.caching import set_metadata_cache from documents.caching import set_suggestions_cache from documents.classifier import load_classifier @@ -99,6 +113,7 @@ from documents.conditionals import thumbnail_last_modified from documents.data_models import ConsumableDocument from documents.data_models import DocumentMetadataOverrides from documents.data_models import DocumentSource +from documents.file_handling import format_filename from documents.filters import CorrespondentFilterSet from documents.filters import CustomFieldFilterSet from documents.filters import DocumentFilterSet @@ -107,9 +122,11 @@ from documents.filters import DocumentTypeFilterSet from documents.filters import ObjectOwnedOrGrantedPermissionsFilter from documents.filters import ObjectOwnedPermissionsFilter from documents.filters import PaperlessTaskFilterSet +from documents.filters import ShareLinkBundleFilterSet from documents.filters import ShareLinkFilterSet from documents.filters import StoragePathFilterSet from documents.filters import TagFilterSet +from documents.mail import EmailAttachment from documents.mail import send_email from documents.matching import match_correspondents from documents.matching import match_document_types @@ -123,6 +140,7 @@ from documents.models import Note from documents.models import PaperlessTask from documents.models import SavedView from documents.models import ShareLink +from documents.models import ShareLinkBundle from documents.models import StoragePath from documents.models import Tag from documents.models import UiSettings @@ -130,13 +148,16 @@ from documents.models import Workflow from documents.models import WorkflowAction from documents.models import WorkflowTrigger from documents.parsers import get_parser_class_for_mime_type -from documents.parsers import parse_date_generator +from documents.permissions import AcknowledgeTasksPermissions from documents.permissions import PaperlessAdminPermissions from documents.permissions import PaperlessNotePermissions from documents.permissions import PaperlessObjectPermissions +from documents.permissions import ViewDocumentsPermissions +from documents.permissions import get_document_count_filter_for_user from documents.permissions import get_objects_for_user_owner_aware from documents.permissions import has_perms_owner_aware from documents.permissions import set_permissions_for_object +from documents.plugins.date_parsing import get_date_parser from documents.schema import generate_object_with_permissions_schema from documents.serialisers import AcknowledgeTasksViewSerializer from documents.serialisers import BulkDownloadSerializer @@ -148,11 +169,13 @@ from documents.serialisers import DocumentListSerializer from documents.serialisers import DocumentSerializer from documents.serialisers import DocumentTypeSerializer from documents.serialisers import DocumentVersionSerializer +from documents.serialisers import EmailSerializer from documents.serialisers import NotesSerializer from documents.serialisers import PostDocumentSerializer from documents.serialisers import RunTaskViewSerializer from documents.serialisers import SavedViewSerializer from documents.serialisers import SearchResultSerializer +from documents.serialisers import ShareLinkBundleSerializer from documents.serialisers import ShareLinkSerializer from documents.serialisers import StoragePathSerializer from documents.serialisers import StoragePathTestSerializer @@ -165,22 +188,30 @@ from documents.serialisers import WorkflowActionSerializer from documents.serialisers import WorkflowSerializer from documents.serialisers import WorkflowTriggerSerializer from documents.signals import document_updated +from documents.tasks import build_share_link_bundle from documents.tasks import consume_file from documents.tasks import empty_trash from documents.tasks import index_optimize +from documents.tasks import llmindex_index from documents.tasks import sanity_check from documents.tasks import train_classifier from documents.tasks import update_document_parent_tags -from documents.templating.filepath import validate_filepath_template_and_render from documents.utils import get_boolean from paperless import version from paperless.celery import app as celery_app +from paperless.config import AIConfig from paperless.config import GeneralConfig -from paperless.db import GnuPG from paperless.models import ApplicationConfiguration from paperless.serialisers import GroupSerializer from paperless.serialisers import UserSerializer from paperless.views import StandardPagination +from paperless_ai.ai_classifier import get_ai_document_classification +from paperless_ai.chat import stream_chat_with_documents +from paperless_ai.matching import extract_unmatched_names +from paperless_ai.matching import match_correspondents_by_name +from paperless_ai.matching import match_document_types_by_name +from paperless_ai.matching import match_storage_paths_by_name +from paperless_ai.matching import match_tags_by_name from paperless_mail.models import MailAccount from paperless_mail.models import MailRule from paperless_mail.oauth import PaperlessMailOAuth2Manager @@ -255,26 +286,115 @@ class PassUserMixin(GenericAPIView): return super().get_serializer(*args, **kwargs) -class PermissionsAwareDocumentCountMixin(PassUserMixin): +class BulkPermissionMixin: + """ + Prefetch Django-Guardian permissions for a list before serialization, to avoid N+1 queries. + """ + + def _get_object_perms( + self, + objects: list, + perm_codenames: list[str], + actor: Literal["users", "groups"], + ) -> dict[int, dict[str, list[int]]]: + """ + Collect object-level permissions for either users or groups. + """ + model = self.queryset.model + obj_perm_model = ( + get_user_obj_perms_model(model) + if actor == "users" + else get_group_obj_perms_model(model) + ) + id_field = "user_id" if actor == "users" else "group_id" + ctype = ContentType.objects.get_for_model(model) + object_pks = [obj.pk for obj in objects] + + perms_qs = obj_perm_model.objects.filter( + content_type=ctype, + object_pk__in=object_pks, + permission__codename__in=perm_codenames, + ).values_list("object_pk", id_field, "permission__codename") + + perms: dict[int, dict[str, list[int]]] = defaultdict(lambda: defaultdict(list)) + for object_pk, actor_id, codename in perms_qs: + perms[int(object_pk)][codename].append(actor_id) + + # Ensure that all objects have all codenames, even if empty + for pk in object_pks: + for codename in perm_codenames: + perms[pk][codename] + + return perms + + def get_serializer_context(self): + """ + Get all permissions of the current list of objects at once and pass them to the serializer. + This avoid fetching permissions object by object in database. + """ + context = super().get_serializer_context() + try: + full_perms = get_boolean( + str(self.request.query_params.get("full_perms", "false")), + ) + except ValueError: + full_perms = False + + if not full_perms: + return context + + # Check which objects are being paginated + page = getattr(self, "paginator", None) + if page and hasattr(page, "page"): + queryset = page.page.object_list + elif hasattr(self, "page"): + queryset = self.page + else: + queryset = self.filter_queryset(self.get_queryset()) + + model_name = self.queryset.model.__name__.lower() + permission_name_view = f"view_{model_name}" + permission_name_change = f"change_{model_name}" + + user_perms = self._get_object_perms( + objects=queryset, + perm_codenames=[permission_name_view, permission_name_change], + actor="users", + ) + group_perms = self._get_object_perms( + objects=queryset, + perm_codenames=[permission_name_view, permission_name_change], + actor="groups", + ) + + context["users_view_perms"] = { + pk: user_perms[pk][permission_name_view] for pk in user_perms + } + context["users_change_perms"] = { + pk: user_perms[pk][permission_name_change] for pk in user_perms + } + context["groups_view_perms"] = { + pk: group_perms[pk][permission_name_view] for pk in group_perms + } + context["groups_change_perms"] = { + pk: group_perms[pk][permission_name_change] for pk in group_perms + } + + return context + + +class PermissionsAwareDocumentCountMixin(BulkPermissionMixin, PassUserMixin): """ Mixin to add document count to queryset, permissions-aware if needed """ + def get_document_count_filter(self): + request = getattr(self, "request", None) + user = getattr(request, "user", None) if request else None + return get_document_count_filter_for_user(user) + def get_queryset(self): - filter = ( - Q(documents__deleted_at__isnull=True) - if self.request.user is None or self.request.user.is_superuser - else ( - Q( - documents__deleted_at__isnull=True, - documents__id__in=get_objects_for_user_owner_aware( - self.request.user, - "documents.view_document", - Document, - ).values_list("id", flat=True), - ) - ) - ) + filter = self.get_document_count_filter() return ( super() .get_queryset() @@ -343,6 +463,50 @@ class TagViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): filterset_class = TagFilterSet ordering_fields = ("color", "name", "matching_algorithm", "match", "document_count") + def get_serializer_context(self): + context = super().get_serializer_context() + context["document_count_filter"] = self.get_document_count_filter() + if hasattr(self, "_children_map"): + context["children_map"] = self._children_map + return context + + def list(self, request, *args, **kwargs): + """ + Build a children map once to avoid per-parent queries in the serializer. + """ + queryset = self.filter_queryset(self.get_queryset()) + ordering = OrderingFilter().get_ordering(request, queryset, self) or ( + Lower("name"), + ) + queryset = queryset.order_by(*ordering) + + all_tags = list(queryset) + descendant_pks = {pk for tag in all_tags for pk in tag.get_descendants_pks()} + + if descendant_pks: + filter_q = self.get_document_count_filter() + children_source = list( + Tag.objects.filter(pk__in=descendant_pks | {t.pk for t in all_tags}) + .select_related("owner") + .annotate(document_count=Count("documents", filter=filter_q)) + .order_by(*ordering), + ) + else: + children_source = all_tags + + children_map = {} + for tag in children_source: + children_map.setdefault(tag.tn_parent_id, []).append(tag) + self._children_map = children_map + + page = self.paginate_queryset(queryset) + serializer = self.get_serializer(page, many=True) + response = self.get_paginated_response(serializer.data) + if descendant_pks: + # Include children in the "all" field, if needed + response.data["all"] = [tag.pk for tag in children_source] + return response + def perform_update(self, serializer): old_parent = self.get_object().get_parent() tag = serializer.save() @@ -369,6 +533,14 @@ class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): ordering_fields = ("name", "matching_algorithm", "match", "document_count") +@extend_schema_serializer( + component_name="EmailDocumentRequest", + exclude_fields=("documents",), +) +class EmailDocumentDetailSchema(EmailSerializer): + pass + + @extend_schema_view( retrieve=extend_schema( description="Retrieve a single document", @@ -536,20 +708,28 @@ class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): 404: None, }, ), - email=extend_schema( + email_document=extend_schema( description="Email the document to one or more recipients as an attachment.", - request=inline_serializer( - name="EmailRequest", - fields={ - "addresses": serializers.CharField(), - "subject": serializers.CharField(), - "message": serializers.CharField(), - "use_archive_version": serializers.BooleanField(default=True), - }, - ), + request=EmailDocumentDetailSchema, responses={ 200: inline_serializer( - name="EmailResponse", + name="EmailDocumentResponse", + fields={"message": serializers.CharField()}, + ), + 400: None, + 403: None, + 404: None, + 500: None, + }, + deprecated=True, + ), + email_documents=extend_schema( + operation_id="email_documents", + description="Email one or more documents as attachments to one or more recipients.", + request=EmailSerializer, + responses={ + 200: inline_serializer( + name="EmailDocumentsResponse", fields={"message": serializers.CharField()}, ), 400: None, @@ -585,6 +765,7 @@ class DocumentViewSet( "title", "correspondent__name", "document_type__name", + "storage_path__name", "created", "modified", "added", @@ -830,37 +1011,104 @@ class DocumentViewSet( ): return HttpResponseForbidden("Insufficient permissions") - document_suggestions = get_suggestion_cache(doc.pk) + ai_config = AIConfig() - if document_suggestions is not None: - refresh_suggestions_cache(doc.pk) - return Response(document_suggestions.suggestions) - - classifier = load_classifier() - - dates = [] - if settings.NUMBER_OF_SUGGESTED_DATES > 0: - gen = parse_date_generator(doc.filename, doc.content) - dates = sorted( - {i for i in itertools.islice(gen, settings.NUMBER_OF_SUGGESTED_DATES)}, + if ai_config.ai_enabled: + cached_llm_suggestions = get_llm_suggestion_cache( + doc.pk, + backend=ai_config.llm_backend, ) - resp_data = { - "correspondents": [ - c.id for c in match_correspondents(doc, classifier, request.user) - ], - "tags": [t.id for t in match_tags(doc, classifier, request.user)], - "document_types": [ - dt.id for dt in match_document_types(doc, classifier, request.user) - ], - "storage_paths": [ - dt.id for dt in match_storage_paths(doc, classifier, request.user) - ], - "dates": [date.strftime("%Y-%m-%d") for date in dates if date is not None], - } + if cached_llm_suggestions: + refresh_suggestions_cache(doc.pk) + return Response(cached_llm_suggestions.suggestions) - # Cache the suggestions and the classifier hash for later - set_suggestions_cache(doc.pk, resp_data, classifier) + llm_suggestions = get_ai_document_classification(doc, request.user) + + matched_tags = match_tags_by_name( + llm_suggestions.get("tags", []), + request.user, + ) + matched_correspondents = match_correspondents_by_name( + llm_suggestions.get("correspondents", []), + request.user, + ) + matched_types = match_document_types_by_name( + llm_suggestions.get("document_types", []), + request.user, + ) + matched_paths = match_storage_paths_by_name( + llm_suggestions.get("storage_paths", []), + request.user, + ) + + resp_data = { + "title": llm_suggestions.get("title"), + "tags": [t.id for t in matched_tags], + "suggested_tags": extract_unmatched_names( + llm_suggestions.get("tags", []), + matched_tags, + ), + "correspondents": [c.id for c in matched_correspondents], + "suggested_correspondents": extract_unmatched_names( + llm_suggestions.get("correspondents", []), + matched_correspondents, + ), + "document_types": [d.id for d in matched_types], + "suggested_document_types": extract_unmatched_names( + llm_suggestions.get("document_types", []), + matched_types, + ), + "storage_paths": [s.id for s in matched_paths], + "suggested_storage_paths": extract_unmatched_names( + llm_suggestions.get("storage_paths", []), + matched_paths, + ), + "dates": llm_suggestions.get("dates", []), + } + + set_llm_suggestions_cache(doc.pk, resp_data, backend=ai_config.llm_backend) + else: + document_suggestions = get_suggestion_cache(doc.pk) + + if document_suggestions is not None: + refresh_suggestions_cache(doc.pk) + return Response(document_suggestions.suggestions) + + classifier = load_classifier() + + dates = [] + if settings.NUMBER_OF_SUGGESTED_DATES > 0: + with get_date_parser() as date_parser: + gen = date_parser.parse(doc.filename, doc.content) + dates = sorted( + { + i + for i in itertools.islice( + gen, + settings.NUMBER_OF_SUGGESTED_DATES, + ) + }, + ) + + resp_data = { + "correspondents": [ + c.id for c in match_correspondents(doc, classifier, request.user) + ], + "tags": [t.id for t in match_tags(doc, classifier, request.user)], + "document_types": [ + dt.id for dt in match_document_types(doc, classifier, request.user) + ], + "storage_paths": [ + dt.id for dt in match_storage_paths(doc, classifier, request.user) + ], + "dates": [ + date.strftime("%Y-%m-%d") for date in dates if date is not None + ], + } + + # Cache the suggestions and the classifier hash for later + set_suggestions_cache(doc.pk, resp_data, classifier) return Response(resp_data) @@ -931,10 +1179,7 @@ class DocumentViewSet( if request_doc.head_version_id is None else request_doc ) - if file_doc.storage_type == Document.STORAGE_TYPE_GPG: - handle = GnuPG.decrypted(file_doc.thumbnail_file) - else: - handle = file_doc.thumbnail_file + handle = file_doc.thumbnail_file return HttpResponse(handle, content_type="image/webp") except (FileNotFoundError, Document.DoesNotExist): @@ -1034,7 +1279,7 @@ class DocumentViewSet( ): return HttpResponseForbidden("Insufficient permissions to delete notes") - note = Note.objects.get(id=int(request.GET.get("id"))) + note = Note.objects.get(id=int(request.GET.get("id")), document=doc) if settings.AUDIT_LOG_ENABLED: LogEntry.objects.log_create( instance=doc, @@ -1151,55 +1396,79 @@ class DocumentViewSet( return Response(sorted(entries, key=lambda x: x["timestamp"], reverse=True)) - @action(methods=["post"], detail=True) - def email(self, request, pk=None): - try: - doc = Document.objects.select_related("owner").get(pk=pk) + @action( + methods=["post"], + detail=True, + url_path="email", + permission_classes=[IsAuthenticated, ViewDocumentsPermissions], + ) + # TODO: deprecated as of 2.19, remove in future release + def email_document(self, request, pk=None): + request_data = request.data.copy() + request_data.setlist("documents", [pk]) + return self.email_documents(request, data=request_data) + + @action( + methods=["post"], + detail=False, + url_path="email", + serializer_class=EmailSerializer, + permission_classes=[IsAuthenticated, ViewDocumentsPermissions], + ) + def email_documents(self, request, data=None): + serializer = EmailSerializer(data=data or request.data) + serializer.is_valid(raise_exception=True) + + validated_data = serializer.validated_data + document_ids = validated_data.get("documents") + addresses = validated_data.get("addresses").split(",") + addresses = [addr.strip() for addr in addresses] + subject = validated_data.get("subject") + message = validated_data.get("message") + use_archive_version = validated_data.get("use_archive_version", True) + + documents = Document.objects.select_related("owner").filter(pk__in=document_ids) + for document in documents: if request.user is not None and not has_perms_owner_aware( request.user, "view_document", - doc, + document, ): return HttpResponseForbidden("Insufficient permissions") - except Document.DoesNotExist: - raise Http404 try: - if ( - "addresses" not in request.data - or "subject" not in request.data - or "message" not in request.data - ): - return HttpResponseBadRequest("Missing required fields") - - use_archive_version = request.data.get("use_archive_version", True) - - addresses = request.data.get("addresses").split(",") - if not all( - re.match(r"[^@]+@[^@]+\.[^@]+", address.strip()) - for address in addresses - ): - return HttpResponseBadRequest("Invalid email address found") - - send_email( - subject=request.data.get("subject"), - body=request.data.get("message"), - to=addresses, - attachment=( + attachments: list[EmailAttachment] = [] + for doc in documents: + attachment_path = ( doc.archive_path if use_archive_version and doc.has_archive_version else doc.source_path - ), - attachment_mime_type=doc.mime_type, + ) + attachments.append( + EmailAttachment( + path=attachment_path, + mime_type=doc.mime_type, + friendly_name=doc.get_public_filename( + archive=use_archive_version and doc.has_archive_version, + ), + ), + ) + + send_email( + subject=subject, + body=message, + to=addresses, + attachments=attachments, ) + logger.debug( - f"Sent document {doc.id} via email to {addresses}", + f"Sent documents {[doc.id for doc in documents]} via email to {addresses}", ) return Response({"message": "Email sent"}) except Exception as e: - logger.warning(f"An error occurred emailing document: {e!s}") + logger.warning(f"An error occurred emailing documents: {e!s}") return HttpResponseServerError( - "Error emailing document, check logs for more detail.", + "Error emailing documents, check logs for more detail.", ) @action(methods=["post"], detail=True) @@ -1253,6 +1522,59 @@ class DocumentViewSet( ) +class ChatStreamingSerializer(serializers.Serializer): + q = serializers.CharField(required=True) + document_id = serializers.IntegerField(required=False, allow_null=True) + + +@method_decorator( + [ + ensure_csrf_cookie, + cache_control(no_cache=True), + ], + name="dispatch", +) +class ChatStreamingView(GenericAPIView): + permission_classes = (IsAuthenticated,) + serializer_class = ChatStreamingSerializer + + def post(self, request, *args, **kwargs): + request.compress_exempt = True + ai_config = AIConfig() + if not ai_config.ai_enabled: + return HttpResponseBadRequest("AI is required for this feature") + + try: + question = request.data["q"] + except KeyError: + return HttpResponseBadRequest("Invalid request") + + doc_id = request.data.get("document_id") + + if doc_id: + try: + document = Document.objects.get(id=doc_id) + except Document.DoesNotExist: + return HttpResponseBadRequest("Document not found") + + if not has_perms_owner_aware(request.user, "view_document", document): + return HttpResponseForbidden("Insufficient permissions") + + documents = [document] + else: + documents = get_objects_for_user_owner_aware( + request.user, + "view_document", + Document, + ) + + response = StreamingHttpResponse( + stream_chat_with_documents(query_str=question, documents=documents), + content_type="text/event-stream", + ) + return response + + @extend_schema_view( list=extend_schema( description="Document views including search", @@ -1287,7 +1609,7 @@ class DocumentViewSet( ), ) class UnifiedSearchViewSet(DocumentViewSet): - def __init__(self, *args, **kwargs): + def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) self.searcher = None @@ -1383,6 +1705,13 @@ class UnifiedSearchViewSet(DocumentViewSet): type=OpenApiTypes.STR, location=OpenApiParameter.PATH, ), + OpenApiParameter( + name="limit", + type=OpenApiTypes.INT, + location=OpenApiParameter.QUERY, + description="Return only the last N entries from the log file", + required=False, + ), ], responses={ (200, "application/json"): serializers.ListSerializer( @@ -1414,8 +1743,22 @@ class LogViewSet(ViewSet): if not log_file.is_file(): raise Http404 + limit_param = request.query_params.get("limit") + if limit_param is not None: + try: + limit = int(limit_param) + except (TypeError, ValueError): + raise ValidationError({"limit": "Must be a positive integer"}) + if limit < 1: + raise ValidationError({"limit": "Must be a positive integer"}) + else: + limit = None + with log_file.open() as f: - lines = [line.rstrip() for line in f.readlines()] + if limit is None: + lines = [line.rstrip() for line in f.readlines()] + else: + lines = [line.rstrip() for line in deque(f, maxlen=limit)] return Response(lines) @@ -1444,7 +1787,7 @@ class SavedViewViewSet(ModelViewSet, PassUserMixin): .prefetch_related("filter_rules") ) - def perform_create(self, serializer): + def perform_create(self, serializer) -> None: serializer.save(owner=self.request.user) @@ -1483,6 +1826,7 @@ class BulkEditView(PassUserMixin): "merge": None, "edit_pdf": "checksum", "reprocess": "checksum", + "remove_password": "checksum", } permission_classes = (IsAuthenticated,) @@ -1501,6 +1845,7 @@ class BulkEditView(PassUserMixin): bulk_edit.split, bulk_edit.merge, bulk_edit.edit_pdf, + bulk_edit.remove_password, ]: parameters["user"] = user @@ -1529,6 +1874,7 @@ class BulkEditView(PassUserMixin): bulk_edit.rotate, bulk_edit.delete_pages, bulk_edit.edit_pdf, + bulk_edit.remove_password, ] ) or ( @@ -1545,7 +1891,7 @@ class BulkEditView(PassUserMixin): and ( method in [bulk_edit.split, bulk_edit.merge] or ( - method == bulk_edit.edit_pdf + method in [bulk_edit.edit_pdf, bulk_edit.remove_password] and not parameters["update_document"] ) ) @@ -1643,6 +1989,8 @@ class PostDocumentView(GenericAPIView): parser_classes = (parsers.MultiPartParser,) def post(self, request, *args, **kwargs): + if not request.user.has_perm("documents.add_document"): + return HttpResponseForbidden("Insufficient permissions") serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) @@ -1860,7 +2208,7 @@ class SearchAutoCompleteView(GenericAPIView): user = self.request.user if hasattr(self.request, "user") else None if "term" in request.query_params: - term = request.query_params["term"] + term = request.query_params["term"].strip() else: return HttpResponseBadRequest("Term required") @@ -2134,23 +2482,19 @@ class StatisticsView(GenericAPIView): user = request.user if request.user is not None else None documents = ( - ( - Document.objects.all() - if user is None - else get_objects_for_user_owner_aware( - user, - "documents.view_document", - Document, - ) + Document.objects.all() + if user is None + else get_objects_for_user_owner_aware( + user, + "documents.view_document", + Document, ) - .only("mime_type", "content") - .prefetch_related("tags") ) tags = ( Tag.objects.all() if user is None else get_objects_for_user_owner_aware(user, "documents.view_tag", Tag) - ) + ).only("id", "is_inbox_tag") correspondent_count = ( Correspondent.objects.count() if user is None @@ -2179,31 +2523,33 @@ class StatisticsView(GenericAPIView): ).count() ) - documents_total = documents.count() - - inbox_tags = tags.filter(is_inbox_tag=True) + inbox_tag_pks = list( + tags.filter(is_inbox_tag=True).values_list("pk", flat=True), + ) documents_inbox = ( - documents.filter(tags__id__in=inbox_tags).distinct().count() - if inbox_tags.exists() + documents.filter(tags__id__in=inbox_tag_pks).values("id").distinct().count() + if inbox_tag_pks else None ) - document_file_type_counts = ( + # Single SQL request for document stats and mime type counts + mime_type_stats = list( documents.values("mime_type") - .annotate(mime_type_count=Count("mime_type")) - .order_by("-mime_type_count") - if documents_total > 0 - else [] + .annotate( + mime_type_count=Count("id"), + mime_type_chars=Sum("content_length"), + ) + .order_by("-mime_type_count"), ) - character_count = ( - documents.annotate( - characters=Length("content"), - ) - .aggregate(Sum("characters")) - .get("characters__sum") - ) + # Calculate totals from grouped results + documents_total = sum(row["mime_type_count"] for row in mime_type_stats) + character_count = sum(row["mime_type_chars"] or 0 for row in mime_type_stats) + document_file_type_counts = [ + {"mime_type": row["mime_type"], "mime_type_count": row["mime_type_count"]} + for row in mime_type_stats + ] current_asn = Document.objects.aggregate( Max("archive_serial_number", default=0), @@ -2216,11 +2562,9 @@ class StatisticsView(GenericAPIView): "documents_total": documents_total, "documents_inbox": documents_inbox, "inbox_tag": ( - inbox_tags.first().pk if inbox_tags.exists() else None + inbox_tag_pks[0] if inbox_tag_pks else None ), # backwards compatibility - "inbox_tags": ( - [tag.pk for tag in inbox_tags] if inbox_tags.exists() else None - ), + "inbox_tags": (inbox_tag_pks if inbox_tag_pks else None), "document_file_type_counts": document_file_type_counts, "character_count": character_count, "tag_count": len(tags), @@ -2248,7 +2592,7 @@ class BulkDownloadView(GenericAPIView): follow_filename_format = serializer.validated_data.get("follow_formatting") for document in documents: - if not has_perms_owner_aware(request.user, "view_document", document): + if not has_perms_owner_aware(request.user, "change_document", document): return HttpResponseForbidden("Insufficient permissions") settings.SCRATCH_DIR.mkdir(parents=True, exist_ok=True) @@ -2333,7 +2677,7 @@ class StoragePathViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin): document = serializer.validated_data.get("document") path = serializer.validated_data.get("path") - result = validate_filepath_template_and_render(path, document) + result = format_filename(document, path) return Response(result) @@ -2387,6 +2731,10 @@ class UiSettingsView(GenericAPIView): ui_settings["email_enabled"] = settings.EMAIL_ENABLED + ai_config = AIConfig() + + ui_settings["ai_enabled"] = ai_config.ai_enabled + user_resp = { "id": user.id, "username": user.username, @@ -2432,31 +2780,34 @@ class UiSettingsView(GenericAPIView): ), ) class RemoteVersionView(GenericAPIView): + cache_key = "remote_version_view_latest_release" + def get(self, request, format=None): - remote_version = "0.0.0" - is_greater_than_current = False current_version = packaging_version.parse(version.__full_version_str__) - try: - resp = httpx.get( - "https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest", - headers={"Accept": "application/json"}, - ) - resp.raise_for_status() + remote_version = cache.get(self.cache_key) + if remote_version is None: try: + resp = httpx.get( + "https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest", + headers={"Accept": "application/json"}, + ) + resp.raise_for_status() data = resp.json() remote_version = data["tag_name"] # Some early tags used ngx-x.y.z remote_version = remote_version.removeprefix("ngx-") except ValueError as e: logger.debug(f"An error occurred parsing remote version json: {e}") - except httpx.HTTPError as e: - logger.debug(f"An error occurred checking for available updates: {e}") + except httpx.HTTPError as e: + logger.debug(f"An error occurred checking for available updates: {e}") + + if remote_version: + cache.set(self.cache_key, remote_version, 60 * 15) + else: + remote_version = "0.0.0" is_greater_than_current = ( - packaging_version.parse( - remote_version, - ) - > current_version + packaging_version.parse(remote_version) > current_version ) return Response( @@ -2525,6 +2876,10 @@ class TasksViewSet(ReadOnlyModelViewSet): sanity_check, {"scheduled": False, "raise_on_error": False}, ), + PaperlessTask.TaskName.LLMINDEX_UPDATE: ( + llmindex_index, + {"scheduled": False, "rebuild": False}, + ), } def get_queryset(self): @@ -2534,7 +2889,11 @@ class TasksViewSet(ReadOnlyModelViewSet): queryset = PaperlessTask.objects.filter(task_id=task_id) return queryset - @action(methods=["post"], detail=False) + @action( + methods=["post"], + detail=False, + permission_classes=[IsAuthenticated, AcknowledgeTasksPermissions], + ) def acknowledge(self, request): serializer = AcknowledgeTasksViewSerializer(data=request.data) serializer.is_valid(raise_exception=True) @@ -2588,21 +2947,187 @@ class ShareLinkViewSet(ModelViewSet, PassUserMixin): ordering_fields = ("created", "expiration", "document") +class ShareLinkBundleViewSet(ModelViewSet, PassUserMixin): + model = ShareLinkBundle + + queryset = ShareLinkBundle.objects.all() + + serializer_class = ShareLinkBundleSerializer + pagination_class = StandardPagination + permission_classes = (IsAuthenticated, PaperlessObjectPermissions) + filter_backends = ( + DjangoFilterBackend, + OrderingFilter, + ObjectOwnedOrGrantedPermissionsFilter, + ) + filterset_class = ShareLinkBundleFilterSet + ordering_fields = ("created", "expiration", "status") + + def get_queryset(self): + return ( + super() + .get_queryset() + .prefetch_related("documents") + .annotate(document_total=Count("documents", distinct=True)) + ) + + def create(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + document_ids = serializer.validated_data["document_ids"] + documents_qs = Document.objects.filter(pk__in=document_ids).select_related( + "owner", + ) + found_ids = set(documents_qs.values_list("pk", flat=True)) + missing = sorted(set(document_ids) - found_ids) + if missing: + raise ValidationError( + { + "document_ids": _( + "Documents not found: %(ids)s", + ) + % {"ids": ", ".join(str(item) for item in missing)}, + }, + ) + + documents = list(documents_qs) + for document in documents: + if not has_perms_owner_aware(request.user, "view_document", document): + raise ValidationError( + { + "document_ids": _( + "Insufficient permissions to share document %(id)s.", + ) + % {"id": document.pk}, + }, + ) + + document_map = {document.pk: document for document in documents} + ordered_documents = [document_map[doc_id] for doc_id in document_ids] + + bundle = serializer.save( + owner=request.user, + documents=ordered_documents, + ) + bundle.remove_file() + bundle.status = ShareLinkBundle.Status.PENDING + bundle.last_error = None + bundle.size_bytes = None + bundle.built_at = None + bundle.file_path = "" + bundle.save( + update_fields=[ + "status", + "last_error", + "size_bytes", + "built_at", + "file_path", + ], + ) + build_share_link_bundle.delay(bundle.pk) + bundle.document_total = len(ordered_documents) + response_serializer = self.get_serializer(bundle) + headers = self.get_success_headers(response_serializer.data) + return Response( + response_serializer.data, + status=status.HTTP_201_CREATED, + headers=headers, + ) + + @action(detail=True, methods=["post"]) + def rebuild(self, request, pk=None): + bundle = self.get_object() + if bundle.status == ShareLinkBundle.Status.PROCESSING: + return Response( + {"detail": _("Bundle is already being processed.")}, + status=status.HTTP_400_BAD_REQUEST, + ) + bundle.remove_file() + bundle.status = ShareLinkBundle.Status.PENDING + bundle.last_error = None + bundle.size_bytes = None + bundle.built_at = None + bundle.file_path = "" + bundle.save( + update_fields=[ + "status", + "last_error", + "size_bytes", + "built_at", + "file_path", + ], + ) + build_share_link_bundle.delay(bundle.pk) + bundle.document_total = ( + getattr(bundle, "document_total", None) or bundle.documents.count() + ) + serializer = self.get_serializer(bundle) + return Response(serializer.data) + + class SharedLinkView(View): authentication_classes = [] permission_classes = [] def get(self, request, slug): share_link = ShareLink.objects.filter(slug=slug).first() - if share_link is None: + if share_link is not None: + if ( + share_link.expiration is not None + and share_link.expiration < timezone.now() + ): + return HttpResponseRedirect("/accounts/login/?sharelink_expired=1") + return serve_file( + doc=share_link.document, + use_archive=share_link.file_version == "archive", + disposition="inline", + ) + + bundle = ShareLinkBundle.objects.filter(slug=slug).first() + if bundle is None: return HttpResponseRedirect("/accounts/login/?sharelink_notfound=1") - if share_link.expiration is not None and share_link.expiration < timezone.now(): + + if bundle.expiration is not None and bundle.expiration < timezone.now(): return HttpResponseRedirect("/accounts/login/?sharelink_expired=1") - return serve_file( - doc=share_link.document, - use_archive=share_link.file_version == "archive", - disposition="inline", + + if bundle.status in { + ShareLinkBundle.Status.PENDING, + ShareLinkBundle.Status.PROCESSING, + }: + return HttpResponse( + _( + "The share link bundle is still being prepared. Please try again later.", + ), + status=status.HTTP_202_ACCEPTED, + ) + + file_path = bundle.absolute_file_path + + if bundle.status == ShareLinkBundle.Status.FAILED or file_path is None: + return HttpResponse( + _( + "The share link bundle is unavailable.", + ), + status=status.HTTP_503_SERVICE_UNAVAILABLE, + ) + + response = FileResponse(file_path.open("rb"), content_type="application/zip") + short_slug = bundle.slug[:12] + download_name = f"paperless-share-{short_slug}.zip" + filename_normalized = ( + normalize("NFKD", download_name) + .encode( + "ascii", + "ignore", + ) + .decode("ascii") ) + filename_encoded = quote(download_name) + response["Content-Disposition"] = ( + f"attachment; filename='{filename_normalized}'; " + f"filename*=utf-8''{filename_encoded}" + ) + return response def serve_file(*, doc: Document, use_archive: bool, disposition: str): @@ -2618,9 +3143,6 @@ def serve_file(*, doc: Document, use_archive: bool, disposition: str): if mime_type in {"application/csv", "text/csv"} and disposition == "inline": mime_type = "text/plain" - if doc.storage_type == Document.STORAGE_TYPE_GPG: - file_handle = GnuPG.decrypted(file_handle) - response = HttpResponse(file_handle, content_type=mime_type) # Firefox is not able to handle unicode characters in filename field # RFC 5987 addresses this issue @@ -3040,6 +3562,31 @@ class SystemStatusView(PassUserMixin): last_sanity_check.date_done if last_sanity_check else None ) + ai_config = AIConfig() + if not ai_config.llm_index_enabled: + llmindex_status = "DISABLED" + llmindex_error = None + llmindex_last_modified = None + else: + last_llmindex_update = ( + PaperlessTask.objects.filter( + task_name=PaperlessTask.TaskName.LLMINDEX_UPDATE, + ) + .order_by("-date_done") + .first() + ) + llmindex_status = "OK" + llmindex_error = None + if last_llmindex_update is None: + llmindex_status = "WARNING" + llmindex_error = "No LLM index update tasks found" + elif last_llmindex_update and last_llmindex_update.status == states.FAILURE: + llmindex_status = "ERROR" + llmindex_error = last_llmindex_update.result + llmindex_last_modified = ( + last_llmindex_update.date_done if last_llmindex_update else None + ) + return Response( { "pngx_version": current_version, @@ -3077,6 +3624,9 @@ class SystemStatusView(PassUserMixin): "sanity_check_status": sanity_check_status, "sanity_check_last_run": sanity_check_last_run, "sanity_check_error": sanity_check_error, + "llmindex_status": llmindex_status, + "llmindex_last_modified": llmindex_last_modified, + "llmindex_error": llmindex_error, }, }, ) diff --git a/src/documents/workflows/__init__.py b/src/documents/workflows/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/documents/workflows/actions.py b/src/documents/workflows/actions.py new file mode 100644 index 000000000..442bc0abe --- /dev/null +++ b/src/documents/workflows/actions.py @@ -0,0 +1,340 @@ +import logging +import re +from pathlib import Path + +from django.conf import settings +from django.contrib.auth.models import User +from django.utils import timezone + +from documents.data_models import ConsumableDocument +from documents.data_models import DocumentMetadataOverrides +from documents.mail import EmailAttachment +from documents.mail import send_email +from documents.models import Correspondent +from documents.models import Document +from documents.models import DocumentType +from documents.models import WorkflowAction +from documents.models import WorkflowTrigger +from documents.signals import document_consumption_finished +from documents.templating.workflows import parse_w_workflow_placeholders +from documents.workflows.webhooks import send_webhook + +logger = logging.getLogger("paperless.workflows.actions") + + +def build_workflow_action_context( + document: Document | ConsumableDocument, + overrides: DocumentMetadataOverrides | None, +) -> dict: + """ + Build context dictionary for workflow action placeholder parsing. + """ + use_overrides = overrides is not None + + if not use_overrides: + return { + "title": document.title, + "doc_url": f"{settings.PAPERLESS_URL}{settings.BASE_URL}documents/{document.pk}/", + "correspondent": document.correspondent.name + if document.correspondent + else "", + "document_type": document.document_type.name + if document.document_type + else "", + "owner_username": document.owner.username if document.owner else "", + "filename": document.original_filename or "", + "current_filename": document.filename or "", + "added": timezone.localtime(document.added), + "created": document.created, + "id": document.pk, + } + + correspondent_obj = ( + Correspondent.objects.filter(pk=overrides.correspondent_id).first() + if overrides and overrides.correspondent_id + else None + ) + document_type_obj = ( + DocumentType.objects.filter(pk=overrides.document_type_id).first() + if overrides and overrides.document_type_id + else None + ) + owner_obj = ( + User.objects.filter(pk=overrides.owner_id).first() + if overrides and overrides.owner_id + else None + ) + + filename = document.original_file if document.original_file else "" + return { + "title": overrides.title + if overrides and overrides.title + else str(document.original_file), + "doc_url": "", + "correspondent": correspondent_obj.name if correspondent_obj else "", + "document_type": document_type_obj.name if document_type_obj else "", + "owner_username": owner_obj.username if owner_obj else "", + "filename": filename, + "current_filename": filename, + "added": timezone.localtime(timezone.now()), + "created": overrides.created if overrides else None, + "id": "", + } + + +def execute_email_action( + action: WorkflowAction, + document: Document | ConsumableDocument, + context: dict, + logging_group, + original_file: Path, + trigger_type: WorkflowTrigger.WorkflowTriggerType, +) -> None: + """ + Execute an email action for a workflow. + """ + + if not settings.EMAIL_ENABLED: + logger.error( + "Email backend has not been configured, cannot send email notifications", + extra={"group": logging_group}, + ) + return + + subject = ( + parse_w_workflow_placeholders( + action.email.subject, + context["correspondent"], + context["document_type"], + context["owner_username"], + context["added"], + context["filename"], + context["current_filename"], + context["created"], + context["title"], + context["doc_url"], + context["id"], + ) + if action.email.subject + else "" + ) + body = ( + parse_w_workflow_placeholders( + action.email.body, + context["correspondent"], + context["document_type"], + context["owner_username"], + context["added"], + context["filename"], + context["current_filename"], + context["created"], + context["title"], + context["doc_url"], + context["id"], + ) + if action.email.body + else "" + ) + + try: + attachments: list[EmailAttachment] = [] + if action.email.include_document: + attachment: EmailAttachment | None = None + if trigger_type in [ + WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, + WorkflowTrigger.WorkflowTriggerType.SCHEDULED, + ] and isinstance(document, Document): + friendly_name = ( + Path(context["current_filename"]).name + if context["current_filename"] + else document.source_path.name + ) + attachment = EmailAttachment( + path=document.source_path, + mime_type=document.mime_type, + friendly_name=friendly_name, + ) + elif original_file: + friendly_name = ( + Path(context["current_filename"]).name + if context["current_filename"] + else original_file.name + ) + attachment = EmailAttachment( + path=original_file, + mime_type=document.mime_type, + friendly_name=friendly_name, + ) + if attachment: + attachments = [attachment] + + n_messages = send_email( + subject=subject, + body=body, + to=action.email.to.split(","), + attachments=attachments, + ) + logger.debug( + f"Sent {n_messages} notification email(s) to {action.email.to}", + extra={"group": logging_group}, + ) + except Exception as e: + logger.exception( + f"Error occurred sending notification email: {e}", + extra={"group": logging_group}, + ) + + +def execute_webhook_action( + action: WorkflowAction, + document: Document | ConsumableDocument, + context: dict, + logging_group, + original_file: Path, +): + try: + data = {} + if action.webhook.use_params: + if action.webhook.params: + try: + for key, value in action.webhook.params.items(): + data[key] = parse_w_workflow_placeholders( + value, + context["correspondent"], + context["document_type"], + context["owner_username"], + context["added"], + context["filename"], + context["current_filename"], + context["created"], + context["title"], + context["doc_url"], + context["id"], + ) + except Exception as e: + logger.error( + f"Error occurred parsing webhook params: {e}", + extra={"group": logging_group}, + ) + elif action.webhook.body: + data = parse_w_workflow_placeholders( + action.webhook.body, + context["correspondent"], + context["document_type"], + context["owner_username"], + context["added"], + context["filename"], + context["current_filename"], + context["created"], + context["title"], + context["doc_url"], + context["id"], + ) + headers = {} + if action.webhook.headers: + try: + headers = {str(k): str(v) for k, v in action.webhook.headers.items()} + except Exception as e: + logger.error( + f"Error occurred parsing webhook headers: {e}", + extra={"group": logging_group}, + ) + files = None + if action.webhook.include_document: + with original_file.open("rb") as f: + files = { + "file": ( + str(context["filename"]) + if context["filename"] + else original_file.name, + f.read(), + document.mime_type, + ), + } + send_webhook.delay( + url=action.webhook.url, + data=data, + headers=headers, + files=files, + as_json=action.webhook.as_json, + ) + logger.debug( + f"Webhook to {action.webhook.url} queued", + extra={"group": logging_group}, + ) + except Exception as e: + logger.exception( + f"Error occurred sending webhook: {e}", + extra={"group": logging_group}, + ) + + +def execute_password_removal_action( + action: WorkflowAction, + document: Document | ConsumableDocument, + logging_group, +) -> None: + """ + Try to remove a password from a document using the configured list. + """ + passwords = action.passwords + if not passwords: + logger.warning( + "Password removal action %s has no passwords configured", + action.pk, + extra={"group": logging_group}, + ) + return + + passwords = [ + password.strip() + for password in re.split(r"[,\n]", passwords) + if password.strip() + ] + + if isinstance(document, ConsumableDocument): + # hook the consumption-finished signal to attempt password removal later + def handler(sender, **kwargs): + consumed_document: Document = kwargs.get("document") + if consumed_document is not None: + execute_password_removal_action( + action, + consumed_document, + logging_group, + ) + document_consumption_finished.disconnect(handler) + + document_consumption_finished.connect(handler, weak=False) + return + + # import here to avoid circular dependency + from documents.bulk_edit import remove_password + + for password in passwords: + try: + remove_password( + [document.id], + password=password, + update_document=True, + user=document.owner, + ) + logger.info( + "Removed password from document %s using workflow action %s", + document.pk, + action.pk, + extra={"group": logging_group}, + ) + return + except ValueError as e: + logger.warning( + "Password removal failed for document %s with supplied password: %s", + document.pk, + e, + extra={"group": logging_group}, + ) + + logger.error( + "Password removal failed for document %s after trying all provided passwords", + document.pk, + extra={"group": logging_group}, + ) diff --git a/src/documents/workflows/mutations.py b/src/documents/workflows/mutations.py new file mode 100644 index 000000000..b93a26781 --- /dev/null +++ b/src/documents/workflows/mutations.py @@ -0,0 +1,360 @@ +import logging + +from django.utils import timezone +from guardian.shortcuts import remove_perm + +from documents.data_models import DocumentMetadataOverrides +from documents.models import CustomFieldInstance +from documents.models import Document +from documents.models import WorkflowAction +from documents.permissions import set_permissions_for_object +from documents.templating.workflows import parse_w_workflow_placeholders + +logger = logging.getLogger("paperless.workflows.mutations") + + +def apply_assignment_to_document( + action: WorkflowAction, + document: Document, + doc_tag_ids: list[int], + logging_group, +): + """ + Apply assignment actions to a Document instance. + + action: WorkflowAction, annotated with 'has_assign_*' boolean fields + """ + if action.has_assign_tags: + tag_ids_to_add: set[int] = set() + for tag in action.assign_tags.all(): + tag_ids_to_add.add(tag.pk) + tag_ids_to_add.update(int(pk) for pk in tag.get_ancestors_pks()) + + doc_tag_ids[:] = list(set(doc_tag_ids) | tag_ids_to_add) + + if action.assign_correspondent: + document.correspondent = action.assign_correspondent + + if action.assign_document_type: + document.document_type = action.assign_document_type + + if action.assign_storage_path: + document.storage_path = action.assign_storage_path + + if action.assign_owner: + document.owner = action.assign_owner + + if action.assign_title: + try: + document.title = parse_w_workflow_placeholders( + action.assign_title, + document.correspondent.name if document.correspondent else "", + document.document_type.name if document.document_type else "", + document.owner.username if document.owner else "", + timezone.localtime(document.added), + document.original_filename or "", + document.filename or "", + document.created, + "", # dont pass the title to avoid recursion + "", # no urls in titles + document.pk, + ) + except Exception: # pragma: no cover + logger.exception( + f"Error occurred parsing title assignment '{action.assign_title}', falling back to original", + extra={"group": logging_group}, + ) + + if any( + [ + action.has_assign_view_users, + action.has_assign_view_groups, + action.has_assign_change_users, + action.has_assign_change_groups, + ], + ): + permissions = { + "view": { + "users": action.assign_view_users.values_list("id", flat=True), + "groups": action.assign_view_groups.values_list("id", flat=True), + }, + "change": { + "users": action.assign_change_users.values_list("id", flat=True), + "groups": action.assign_change_groups.values_list("id", flat=True), + }, + } + set_permissions_for_object( + permissions=permissions, + object=document, + merge=True, + ) + + if action.has_assign_custom_fields: + for field in action.assign_custom_fields.all(): + value_field_name = CustomFieldInstance.get_value_field_name( + data_type=field.data_type, + ) + args = { + value_field_name: action.assign_custom_fields_values.get( + str(field.pk), + None, + ), + } + # for some reason update_or_create doesn't work here + instance = CustomFieldInstance.objects.filter( + field=field, + document=document, + ).first() + if instance and args[value_field_name] is not None: + setattr(instance, value_field_name, args[value_field_name]) + instance.save() + elif not instance: + CustomFieldInstance.objects.create( + **args, + field=field, + document=document, + ) + + +def apply_assignment_to_overrides( + action: WorkflowAction, + overrides: DocumentMetadataOverrides, +): + """ + Apply assignment actions to DocumentMetadataOverrides. + + action: WorkflowAction, annotated with 'has_assign_*' boolean fields + """ + if action.has_assign_tags: + if overrides.tag_ids is None: + overrides.tag_ids = [] + tag_ids_to_add: set[int] = set() + for tag in action.assign_tags.all(): + tag_ids_to_add.add(tag.pk) + tag_ids_to_add.update(int(pk) for pk in tag.get_ancestors_pks()) + + overrides.tag_ids = list(set(overrides.tag_ids) | tag_ids_to_add) + + if action.assign_correspondent: + overrides.correspondent_id = action.assign_correspondent.pk + + if action.assign_document_type: + overrides.document_type_id = action.assign_document_type.pk + + if action.assign_storage_path: + overrides.storage_path_id = action.assign_storage_path.pk + + if action.assign_owner: + overrides.owner_id = action.assign_owner.pk + + if action.assign_title: + overrides.title = action.assign_title + + if any( + [ + action.has_assign_view_users, + action.has_assign_view_groups, + action.has_assign_change_users, + action.has_assign_change_groups, + ], + ): + overrides.view_users = list( + set( + (overrides.view_users or []) + + list(action.assign_view_users.values_list("id", flat=True)), + ), + ) + overrides.view_groups = list( + set( + (overrides.view_groups or []) + + list(action.assign_view_groups.values_list("id", flat=True)), + ), + ) + overrides.change_users = list( + set( + (overrides.change_users or []) + + list(action.assign_change_users.values_list("id", flat=True)), + ), + ) + overrides.change_groups = list( + set( + (overrides.change_groups or []) + + list(action.assign_change_groups.values_list("id", flat=True)), + ), + ) + + if action.has_assign_custom_fields: + if overrides.custom_fields is None: + overrides.custom_fields = {} + overrides.custom_fields.update( + { + field.pk: action.assign_custom_fields_values.get( + str(field.pk), + None, + ) + for field in action.assign_custom_fields.all() + }, + ) + + +def apply_removal_to_document( + action: WorkflowAction, + document: Document, + doc_tag_ids: list[int], +): + """ + Apply removal actions to a Document instance. + + action: WorkflowAction, annotated with 'has_remove_*' boolean fields + """ + + if action.remove_all_tags: + doc_tag_ids.clear() + else: + tag_ids_to_remove: set[int] = set() + for tag in action.remove_tags.all(): + tag_ids_to_remove.add(tag.pk) + tag_ids_to_remove.update(int(pk) for pk in tag.get_descendants_pks()) + + doc_tag_ids[:] = [t for t in doc_tag_ids if t not in tag_ids_to_remove] + + if action.remove_all_correspondents or ( + document.correspondent + and action.remove_correspondents.filter(pk=document.correspondent.pk).exists() + ): + document.correspondent = None + + if action.remove_all_document_types or ( + document.document_type + and action.remove_document_types.filter(pk=document.document_type.pk).exists() + ): + document.document_type = None + + if action.remove_all_storage_paths or ( + document.storage_path + and action.remove_storage_paths.filter(pk=document.storage_path.pk).exists() + ): + document.storage_path = None + + if action.remove_all_owners or ( + document.owner and action.remove_owners.filter(pk=document.owner.pk).exists() + ): + document.owner = None + + if action.remove_all_permissions: + permissions = { + "view": {"users": [], "groups": []}, + "change": {"users": [], "groups": []}, + } + set_permissions_for_object( + permissions=permissions, + object=document, + merge=False, + ) + + if any( + [ + action.has_remove_view_users, + action.has_remove_view_groups, + action.has_remove_change_users, + action.has_remove_change_groups, + ], + ): + for user in action.remove_view_users.all(): + remove_perm("view_document", user, document) + for user in action.remove_change_users.all(): + remove_perm("change_document", user, document) + for group in action.remove_view_groups.all(): + remove_perm("view_document", group, document) + for group in action.remove_change_groups.all(): + remove_perm("change_document", group, document) + + if action.remove_all_custom_fields: + CustomFieldInstance.objects.filter(document=document).hard_delete() + elif action.has_remove_custom_fields: + CustomFieldInstance.objects.filter( + field__in=action.remove_custom_fields.all(), + document=document, + ).hard_delete() + + +def apply_removal_to_overrides( + action: WorkflowAction, + overrides: DocumentMetadataOverrides, +): + """ + Apply removal actions to DocumentMetadataOverrides. + + action: WorkflowAction, annotated with 'has_remove_*' boolean fields + """ + if action.remove_all_tags: + overrides.tag_ids = None + elif overrides.tag_ids: + tag_ids_to_remove: set[int] = set() + for tag in action.remove_tags.all(): + tag_ids_to_remove.add(tag.pk) + tag_ids_to_remove.update(int(pk) for pk in tag.get_descendants_pks()) + + overrides.tag_ids = [t for t in overrides.tag_ids if t not in tag_ids_to_remove] + + if action.remove_all_correspondents or ( + overrides.correspondent_id + and action.remove_correspondents.filter(pk=overrides.correspondent_id).exists() + ): + overrides.correspondent_id = None + + if action.remove_all_document_types or ( + overrides.document_type_id + and action.remove_document_types.filter(pk=overrides.document_type_id).exists() + ): + overrides.document_type_id = None + + if action.remove_all_storage_paths or ( + overrides.storage_path_id + and action.remove_storage_paths.filter(pk=overrides.storage_path_id).exists() + ): + overrides.storage_path_id = None + + if action.remove_all_owners or ( + overrides.owner_id + and action.remove_owners.filter(pk=overrides.owner_id).exists() + ): + overrides.owner_id = None + + if action.remove_all_permissions: + overrides.view_users = None + overrides.view_groups = None + overrides.change_users = None + overrides.change_groups = None + elif any( + [ + action.has_remove_view_users, + action.has_remove_view_groups, + action.has_remove_change_users, + action.has_remove_change_groups, + ], + ): + if overrides.view_users: + for user in action.remove_view_users.filter(pk__in=overrides.view_users): + overrides.view_users.remove(user.pk) + if overrides.change_users: + for user in action.remove_change_users.filter( + pk__in=overrides.change_users, + ): + overrides.change_users.remove(user.pk) + if overrides.view_groups: + for group in action.remove_view_groups.filter(pk__in=overrides.view_groups): + overrides.view_groups.remove(group.pk) + if overrides.change_groups: + for group in action.remove_change_groups.filter( + pk__in=overrides.change_groups, + ): + overrides.change_groups.remove(group.pk) + + if action.remove_all_custom_fields: + overrides.custom_fields = None + elif action.has_remove_custom_fields and overrides.custom_fields: + for field in action.remove_custom_fields.filter( + pk__in=overrides.custom_fields.keys(), + ): + overrides.custom_fields.pop(field.pk, None) diff --git a/src/documents/workflows/utils.py b/src/documents/workflows/utils.py new file mode 100644 index 000000000..0a644b0eb --- /dev/null +++ b/src/documents/workflows/utils.py @@ -0,0 +1,128 @@ +import logging + +from django.db.models import Exists +from django.db.models import OuterRef +from django.db.models import Prefetch + +from documents.models import Workflow +from documents.models import WorkflowAction +from documents.models import WorkflowTrigger + +logger = logging.getLogger("paperless.workflows") + + +def get_workflows_for_trigger( + trigger_type: WorkflowTrigger.WorkflowTriggerType, + workflow_to_run: Workflow | None = None, +): + """ + Return workflows relevant to a trigger. If a specific workflow is given, + wrap it in a list; otherwise fetch enabled workflows for the trigger with + the prefetches used by the runner. + """ + annotated_actions = ( + WorkflowAction.objects.select_related( + "assign_correspondent", + "assign_document_type", + "assign_storage_path", + "assign_owner", + "email", + "webhook", + ) + .prefetch_related( + "assign_tags", + "assign_view_users", + "assign_view_groups", + "assign_change_users", + "assign_change_groups", + "assign_custom_fields", + "remove_tags", + "remove_correspondents", + "remove_document_types", + "remove_storage_paths", + "remove_custom_fields", + "remove_owners", + ) + .annotate( + has_assign_tags=Exists( + WorkflowAction.assign_tags.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_assign_view_users=Exists( + WorkflowAction.assign_view_users.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_assign_view_groups=Exists( + WorkflowAction.assign_view_groups.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_assign_change_users=Exists( + WorkflowAction.assign_change_users.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_assign_change_groups=Exists( + WorkflowAction.assign_change_groups.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_assign_custom_fields=Exists( + WorkflowAction.assign_custom_fields.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_remove_view_users=Exists( + WorkflowAction.remove_view_users.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_remove_view_groups=Exists( + WorkflowAction.remove_view_groups.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_remove_change_users=Exists( + WorkflowAction.remove_change_users.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_remove_change_groups=Exists( + WorkflowAction.remove_change_groups.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + has_remove_custom_fields=Exists( + WorkflowAction.remove_custom_fields.through.objects.filter( + workflowaction_id=OuterRef("pk"), + ), + ), + ) + ) + + action_prefetch = Prefetch( + "actions", + queryset=annotated_actions.order_by("order", "pk"), + ) + + if workflow_to_run is not None: + return ( + Workflow.objects.filter(pk=workflow_to_run.pk) + .prefetch_related( + action_prefetch, + "triggers", + ) + .distinct() + ) + + return ( + Workflow.objects.filter(enabled=True, triggers__type=trigger_type) + .prefetch_related( + action_prefetch, + "triggers", + ) + .order_by("order") + .distinct() + ) diff --git a/src/documents/workflows/webhooks.py b/src/documents/workflows/webhooks.py new file mode 100644 index 000000000..a0256873a --- /dev/null +++ b/src/documents/workflows/webhooks.py @@ -0,0 +1,171 @@ +import ipaddress +import logging +import socket +from urllib.parse import urlparse + +import httpx +from celery import shared_task +from django.conf import settings + +logger = logging.getLogger("paperless.workflows.webhooks") + + +class WebhookTransport(httpx.HTTPTransport): + """ + Transport that resolves/validates hostnames and rewrites to a vetted IP + while keeping Host/SNI as the original hostname. + """ + + def __init__( + self, + hostname: str, + *args, + allow_internal: bool = False, + **kwargs, + ) -> None: + super().__init__(*args, **kwargs) + self.hostname = hostname + self.allow_internal = allow_internal + + def handle_request(self, request: httpx.Request) -> httpx.Response: + hostname = request.url.host + + if not hostname: + raise httpx.ConnectError("No hostname in request URL") + + try: + addr_info = socket.getaddrinfo(hostname, None) + except socket.gaierror as e: + raise httpx.ConnectError(f"Could not resolve hostname: {hostname}") from e + + ips = [info[4][0] for info in addr_info if info and info[4]] + if not ips: + raise httpx.ConnectError(f"Could not resolve hostname: {hostname}") + + if not self.allow_internal: + for ip_str in ips: + if not WebhookTransport.is_public_ip(ip_str): + raise httpx.ConnectError( + f"Connection blocked: {hostname} resolves to a non-public address", + ) + + ip_str = ips[0] + formatted_ip = self._format_ip_for_url(ip_str) + + new_headers = httpx.Headers(request.headers) + if "host" in new_headers: + del new_headers["host"] + new_headers["Host"] = hostname + new_url = request.url.copy_with(host=formatted_ip) + + request = httpx.Request( + method=request.method, + url=new_url, + headers=new_headers, + content=request.stream, + extensions=request.extensions, + ) + request.extensions["sni_hostname"] = hostname + + return super().handle_request(request) + + def _format_ip_for_url(self, ip: str) -> str: + """ + Format IP address for use in URL (wrap IPv6 in brackets) + """ + try: + ip_obj = ipaddress.ip_address(ip) + if ip_obj.version == 6: + return f"[{ip}]" + return ip + except ValueError: + return ip + + @staticmethod + def is_public_ip(ip: str | int) -> bool: + try: + obj = ipaddress.ip_address(ip) + return not ( + obj.is_private + or obj.is_loopback + or obj.is_link_local + or obj.is_multicast + or obj.is_unspecified + ) + except ValueError: # pragma: no cover + return False + + @staticmethod + def resolve_first_ip(host: str) -> str | None: + try: + info = socket.getaddrinfo(host, None) + return info[0][4][0] if info else None + except Exception: # pragma: no cover + return None + + +@shared_task( + retry_backoff=True, + autoretry_for=(httpx.HTTPStatusError,), + max_retries=3, + throws=(httpx.HTTPError,), +) +def send_webhook( + url: str, + data: str | dict, + headers: dict, + files: dict, + *, + as_json: bool = False, +): + p = urlparse(url) + if p.scheme.lower() not in settings.WEBHOOKS_ALLOWED_SCHEMES or not p.hostname: + logger.warning("Webhook blocked: invalid scheme/hostname") + raise ValueError("Invalid URL scheme or hostname.") + + port = p.port or (443 if p.scheme == "https" else 80) + if ( + len(settings.WEBHOOKS_ALLOWED_PORTS) > 0 + and port not in settings.WEBHOOKS_ALLOWED_PORTS + ): + logger.warning("Webhook blocked: port not permitted") + raise ValueError("Destination port not permitted.") + + transport = WebhookTransport( + hostname=p.hostname, + allow_internal=settings.WEBHOOKS_ALLOW_INTERNAL_REQUESTS, + ) + + try: + post_args = { + "url": url, + "headers": { + k: v for k, v in (headers or {}).items() if k.lower() != "host" + }, + "files": files or None, + } + if as_json: + post_args["json"] = data + elif isinstance(data, dict): + post_args["data"] = data + else: + post_args["content"] = data + + with httpx.Client( + transport=transport, + timeout=5.0, + follow_redirects=False, + ) as client: + client.post( + **post_args, + ).raise_for_status() + logger.info( + f"Webhook sent to {url}", + ) + except Exception as e: + logger.error( + f"Failed attempt sending webhook to {url}: {e}", + ) + raise e + finally: + transport.close() diff --git a/src/locale/af_ZA/LC_MESSAGES/django.po b/src/locale/af_ZA/LC_MESSAGES/django.po index 19396e0ca..12c4c7532 100644 --- a/src/locale/af_ZA/LC_MESSAGES/django.po +++ b/src/locale/af_ZA/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Afrikaans\n" "Language: af_ZA\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumente" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Waarde moet geldige JSON wees." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Ongeldige gepasmaakte veldnavraaguitdrukking" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Ongeldige uitdrukking lys. Moet nie leeg wees nie." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Ongeldige logiese uitdrukking {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "eienaar" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Geen" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Enige woord" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Alle woorde" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Presiese ooreenkoms" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Reguliere uitdrukking" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Outomaties" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "naam" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "ooreenkoms" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "ooreenkomsalgoritme" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "hoofletterongevoelig" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korrespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korrespondente" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "kleur" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "is inmandjie-etiket" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Markeer hierdie etiket as ’n inmandjie-etiket: Alle nuwe verwerkte dokumente kry inmandjie-etikette." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etiket" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etikette" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "dokumenttipe" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "dokumenttipes" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "pad" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "bergpad" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "bergpaaie" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Ongeënkripteer" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Geënkripteer met GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "titel" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "inhoud" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Die rou data van die dokument. Hierdie veld word hoofsaaklik gebruik om te soek." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME-tipe" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrolesom" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Die kontrolesom van die oorspronklike dokument." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "argiefkontrolesom" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Die kontrolesom van die geargiveerde dokument." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "bladsy telling" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Bladsy telling in die dokument." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "geskep" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "gewysig" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tipe bergplek" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "toegevoeg" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "lêernaam" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Huidige lêernaam in argief" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "lêernaam in argief" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Huidige lêernaam in argief" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "oorspronklike lêernaam" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Die oorspronklike lêernaam toe dit opgelaai is" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "argiefreeksnommer" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Die ligging van hierdie dokument in u fisiese dokumentargief." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumente" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabel" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Klein Kaarte" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Groot Kaarte" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Titel" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Geskep" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "toon in paneelbord" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "toon in systaaf" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "sorteerveld" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "sorteer omgekeerd" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "bewaarde aansig" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "bewaarde aansigte" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "titel bevat" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "inhoud bevat" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN is" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "korrespondent is" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "dokumenttipe is" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "is in inmandjie" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "het etiket" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "het enige etiket" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "geskep voor" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "geskep na" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "jaar geskep is" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "maand geskep is" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "dag geskep is" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "toegevoeg voor" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "toegevoeg na" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "gewysig voor" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "gewysig na" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "het geen etiket nie" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "het geen ASN nie" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "titel of inhoud bevat" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "deursoek inhoud" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "het etikette in" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN groter as" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN kleiner as" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "bewaarpad is" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "reëltipe" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "waarde" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "filterreël" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "filterreëls" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Taak-ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID vir die taak wat uitgevoer is" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Bevestig" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Of die taak bevestig is via die tussenvlak of die API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Taaklêernaam" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Naam van die lêer waarvoor die taak uitgevoer is" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Taaknaam" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Taakstatus" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Huidige status van die taak wat uitgevoer word" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Geskepte datumtyd" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Datumtydveld wanneer die resultaat geskep is in UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Begonne datumtyd" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Datumtydveld wanneer die taak begin is in UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Voltooide datumtyd" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Datumtydveld wanneer die taak voltooi is in UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Resultaatdata" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Data wat deur die taak teruggegee is" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "gebruiker" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "nota" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notas" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Verwerk slegs dokumente wat volledig met hierdie lêernaam ooreenkom indien gespesifiseer. U kan jokertekens soos *.pdf of *faktuur* gebruik. Hoofletterongevoelig." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-pos" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "ken hierdie etiket toe" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "ken hierdie dokumenttipe toe" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "ken hierdie korrespondent toe" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "volgorde" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Ongeldige reguliere uitdrukking: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Ongeldige kleur." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Lêertipe %(type)s word nie ondersteun nie" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Ongeldige veranderlike bespeur." @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Engels (VS)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabies" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Belorussies" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalaans" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tsjeggies" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Deens" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Duits" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Engels (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spaans" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Fins" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Frans" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italiaans" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburgs" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Nederlands" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Pools" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugees (Brasilië)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugees" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Roemeens" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russies" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Sloweens" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serwies" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Sweeds" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turks" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Vereenvoudigde Sjinees" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx administrasie" diff --git a/src/locale/ar_AR/LC_MESSAGES/django.po b/src/locale/ar_AR/LC_MESSAGES/django.po index 5b3146c39..82554b041 100644 --- a/src/locale/ar_AR/LC_MESSAGES/django.po +++ b/src/locale/ar_AR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Arabic\n" "Language: ar_SA\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "المستندات" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "يجب أن تكون القيمة JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." -msgstr "" +msgstr "قائمة عبارة خاطئة." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "تجاوز الحد الأقصى لعدد شروط الاستعلام." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} حقل مخصص غير صالح." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "لم يتم العثور على حقل مخصص" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "مالك" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "لا شيء" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "أي كلمة" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "كل الكلمات" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "تطابق تام" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "التعابير النظامية" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "كلمة مبهمة" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "تلقائي" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "اسم" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "تطابق" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "خوارزمية مطابقة" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "غير حساس" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "جهة التراسل" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "جهة التراسل" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "لون" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "علامة علبة الوارد" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "ضع علامة على هذه العلامة كعلامة علبة الوارد : سيتم وضع علامة على جميع المستندات المستهلكة حديثا مع علامات صندوق الواردات." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "علامة" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "علامات" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "نوع المستند" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "أنواع المستندات" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "مسار" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "مسار التخزين" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "مسارات التخزين" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "غير مشفرة" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "مشفر باستخدام حارس خصوصية GNU" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "عنوان" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "محتوى" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "بيانات النص الخام من المستند. يستخدم هذا الحقل أساسا للبحث." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "نوع الـ mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "بصمة المِلَفّ" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "بصمة المِلَفّ للمستند الأصلي." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "مجموع الاختباري للأرشيف" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "بصمة المِلَفّ للمستند ‏المحفوظ." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "عدد الصفحات" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "2 - عدد صفحات الوثيقة." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "أُنشئ" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "مُعدّل" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "نوع التخزين" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "أضيف" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "اسم المِلَفّ" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "اسم المِلَفّ الحالي في التخزين" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "اسم ‏الأرشيف" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "اسم ملف ‏الأرشيف الحالي في التخزين" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "اسم المِلَفّ الأصلي" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "اسم المِلَفّ الأصلي عند تحميله" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "الرَّقْم التسلسلي للأرشيف" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "موقع هذا المستند في ‏أرشيف المستند الفيزيائي." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "مستند" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "المستندات" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "جدول" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "بطاقات صغيرة" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "بطاقات كبيرة" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "العنوان" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "تمّ إنشاؤه" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "تمّت إضافته" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "سِمَات" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "المُراسِل" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "نوع المستند" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "مسار الحفظ" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "ملاحظة" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "المالك" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "مُشتَرَك" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "الصفحات" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "عرض على لوحة التحكم" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "عرض على الشريط الجانبي" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "فرز الحقل" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "فرز بالعكس" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "عرض حجم الصفحة" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "عرض وضعية العرض" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "حقول عرض المستند" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "العرض المحفوظ" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "العروض المحفوظة" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "العنوان يحتوي" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "المحتوى يحتوي" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN هو" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "المراسل هو" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "نوع المستند" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "موجود في علبة الوارد" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "لديه علامة" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "لديه أي وسم" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "أنشئت قبل" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "أنشئت بعد" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "أنشئت سنة" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "أنشئت شهر" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "أنشئت يوم" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "أضيف قبل" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "أضيف بعد" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "عُدِّل قبل" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "عُدِّل بعد" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "ليس لديه علامة" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "ليس لديه ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "العنوان أو المحتوى يحتوي" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "استعلام كامل النص" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "المزيد مثل هذا" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "لديه علامات في" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN أكبر من" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN أقل من" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "مسار التخزين" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "له مراسل في" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "لا يوجد مراسل في" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "يحتوي على نوع المستند في" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "ليس لديه نوع مستند في" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "لديه مسار تخزين في" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "ليس لديه مسار تخزين في" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "المالك هو" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "لديه مالك في" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "ليس لديه مالك" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "ليس لديه مالك في" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "له قيمة حقل مخصص" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "تم المشاركة من قبلي" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "لديه حقول مخصصة" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "لديه حقل مخصص في" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "لا يحتوي على حقل مخصص في" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "لا يحتوي على حقل مخصص" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "تمت الإضافة إلى" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "تمت الإضافة من" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "نوع الـ mime" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "نوع القاعدة" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "قيمة" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "تصفية القاعدة" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "تصفية القواعد" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "مهمة تلقائية" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "مهمة مجدولة" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "مهمة يدوية" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "‏مِلَفّ الاستهلاك" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "تصنيف التدريب" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "تحسين الفهرسة" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "الرمز التعريفي للمهمة" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "رمز المعرف للمهمة التي كانت تعمل" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "مُعترف" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "إذا عرف على المهمة عبر الواجهة الأمامية أو API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "اسم ملف المهمة" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "اسم المِلَفّ الذي وكل بالمهمة" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "اسم المهمة" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "اسم المهمة التي تم تشغيلها" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "حالة المهمة" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "الحالة الراهنة للمهمة قيد العمل" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "تاريخ و وقت الإنشاء" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "حقل التاريخ والوقت عند إنشاء نتيجة المهمة في UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "تاريخ و وقت البداية" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "حقل التاريخ والوقت عند بدء المهمة في UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "التاريخ و الوقت المكتمل" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "حقل التاريخ و الوقت عند اكتمال المهمة في UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "نتائج البيانات" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "البيانات المستردة من قبل المهمة" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "ملاحظه على المستند" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "المستخدم" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "ملاحظة" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "ملاحظات" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "أرشيف" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "الأصل" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "تاريخ الانتهاء" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "مشاركة الرابط" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "مشاركة الروابط" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "سلسلة نصيّة" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "رابط" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "التاريخ" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "قيمة منطقية" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "عدد صحيح" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "عائم" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "قيمة نقدية" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "رابط المستند" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "تحديد" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "نوع البيانات" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "بيانات إضافية" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "بيانات إضافية للحقل المخصص، مثل تحديد خيارات" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "حقل مخصص" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "حقول مخصصة" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "مثيل الحقل المخصص" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "مثيلات الحقل المخصصة" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "بدأ الإستهلاك" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "تم إضافة المستند" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "تم تحديث المستند" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "مجدول" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "‏مِلَفّ الاستهلاك" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "تحميل Api" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "جلب البريد" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "التعديل" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "حقل مخصص" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "نوع محفز انطلاق سير العمل" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "مسار التصفية" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "فقط استهلك المستندات ذات المسار الذي يطابق هذا إذا تم تحديده. البطاقات البرية المحددة كما * مسموح بها. الحالة غير حساسة." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "تصفية اسم الملف" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "فقط المستندات التي تتطابق تماما مع اسم هذا المِلَفّ إذا تم تحديدها. المحارف البديلة مثل *.pdf أو *الفواتير* مسموح بها. لأنها غير حساسة." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "تصفية المستندات من قاعدة البريد هذه" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "لديه هذه العلامة ( أو العلامات)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "يحتوي على هذا النوع من المستندات" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "لديه هذا المراسل" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "محفز انطلاق سير العمل" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "محفزات انطلاق سير العمل" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "نص البريد الالكتروني" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" -msgstr "تضمين المستند في البريد الإلكتروني" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." +msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." -msgstr "عنوان URL وجهة الإشعار." - -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "محفز انطلاق سير العمل" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "محفزات انطلاق سير العمل" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "نص البريد الالكتروني" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "تضمين المستند في البريد الإلكتروني" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "عنوان URL وجهة الإشعار." + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "إسناد مهمة" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "إزالة" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "البريد الإلكتروني" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "نوع إجراء سير العمل" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "تعيين العنوان" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "تعيين هذه العلامة" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "تعيين نوع هذا المستند" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "تعيين هذا المراسل" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "تعيين مسار التخزين هذا" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "تعيين هذا المالك" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" -msgstr "منح أذونات العرض إلى هؤلاء المستخدمين" +msgstr "منح صلاحيات العرض إلى هؤلاء المستخدمين" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "منح صلاحيات العرض إلى هذه المجموعات" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "منح صلاحيات التغيير لهؤلاء المستخدمين" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "منح صلاحيات التغيير إلى هذه المجموعات" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "تعيين هذه الحقول المخصصة" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "إزالة هذا الوسم (أو الوسوم)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "إزالة جميع الوسوم" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "إزالة نوع (أنواع) هذه المستندات" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "إزالة نوع أو أنواع هذه المستندات" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "إزالة هذا المراسل (أو هؤلاء المراسلين)" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "حذف كل المراسلين" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "إزالة مسار (أو مسارات) التخزين هذه" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "حذف كل مسارات الحفظ" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "إزالة هذا المالك (أو المالكين)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "إزالة جميع المالكين" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" -msgstr "سحب أذونات العرض من هؤلاء المستخدمين" +msgstr "سحب صلاحيات العرض من هؤلاء المستخدمين" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" -msgstr "سحب أذونات العرض من هذه المجموعات" +msgstr "سحب صلاحيات العرض من هذه المجموعات" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "سحب أذونات التغيير من هؤلاء المستخدمين" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "سحب أذونات التغيير من هذه المجموعات" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "سحب كل الأذونات" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "حذف هذه الحقول المخصصة" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "حذف كل الحقول المخصصة" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "إجراء في سير العمل" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "إجراءات سير العمل" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "الطلب" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "قادحات triggers" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "إجراءات" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "مفعل" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "التعبير النظامي خاطىء: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "لون خاطئ." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "نوع الملف %(type)s غير مدعوم" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "اكتشاف متغير خاطئ." @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "إعدادات التطبيق paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "الإنجليزية (الولايات المتحدة)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "العربية" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "اللغة الأفريقانية" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "البيلاروسية" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "البلغارية" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "اللغة الكتالونية" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "التشيكية" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "الدانماركية" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "الألمانية" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "اليونانية" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "الإنجليزية (المملكة المتحدة)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "الإسبانية" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "الفنلندية" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "الفرنسية" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "المجرية" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "الإيطالية" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "اليابانية" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "اللوكسمبرجية" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "النرويجية" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "الهولندية" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "البولندية" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "البرتغالية (البرازيل)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "البرتغالية" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "الرومانية" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "الروسية" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "السلوفاكية" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "السلوفانية" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "الصربية" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "السويدية" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "التركية" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "الأوكرانية" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "الصينية المبسطة" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx الإدارة" diff --git a/src/locale/be_BY/LC_MESSAGES/django.po b/src/locale/be_BY/LC_MESSAGES/django.po index b72260d76..f285701af 100644 --- a/src/locale/be_BY/LC_MESSAGES/django.po +++ b/src/locale/be_BY/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Belarusian\n" "Language: be_BY\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Дакументы" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "уладальнік" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Нiчога" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Любое слова" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Усе словы" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Дакладнае супадзенне" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Рэгулярны выраз" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "назва" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "супадзенне" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "алгарытм супастаўлення" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "без уліку рэгістра" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "карэспандэнт" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "карэспандэнты" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "колер" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "гэта ўваходны тэг" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Пазначыць гэты тэг як тэг папкі \"Уваходныя\": Усе нядаўна спажытыя дакументы будуць пазначаны тэгамі \"Уваходныя\"." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "тэг" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "тэгі" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "тып дакумента" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "тыпы дакументаў" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "шлях" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "шлях захоўвання" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "шляхі захоўвання" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Незашыфраваны" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Зашыфравана з дапамогай GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "назва" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "змест" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Неапрацаваныя тэкставыя даныя дакумента. Гэта поле ў асноўным выкарыстоўваецца для пошуку." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "тып MIME" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "кантрольная сума" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Кантрольная сума зыходнага дакумента." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "кантрольная сума архіва" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Кантрольная сума архіўнага дакумента." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "створаны" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "мадыфікаваны" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "тып захоўвання" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "дададзена" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "імя файла" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Цяперашняе імя файла ў сховішчы" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "імя файла архіва" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Цяперашняе імя файла архіва ў сховішчы" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "арыгінальная назва файла" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "парадкавы нумар архіва" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Пазіцыя гэтага дакумента ў вашым фізічным архіве дакументаў." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "дакумент" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "дакументы" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "паказаць на панэлі" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "паказаць у бакавой панэлі" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "поле сартавання" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "сартаваць у адваротным парадку" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "захаваны выгляд" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "захаваныя выгляды" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "назва змяшчае" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "змест змяшчае" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "карэспандэнт" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "тып дакумента" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "ва ўваходных" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "мае тэг" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "мае любы тэг" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "створана перад" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "створана пасля" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "год стварэння" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "месяц стварэння" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "дзень стварэння" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "даданы перад" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "даданы пасля" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "зменены перад" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "зменены пасля" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "не мае тэга" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "не мае ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "назва або змест смяшчае" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "поўнатэкставы запыт" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "мае тэгі ў" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "тып правіла" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "значэнне" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "правіла фільтрацыі" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "правілы фільтрацыі" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "карыстальнік" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Апрацоўваць толькі дакументы, якія цалкам супадаюць з імем файла (калі яно пазначана). Маскі, напрыклад *.pdf ці *рахунак*, дазволеныя. Без уліку рэгістра." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "прызначыць гэты тэг" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "прызначыць гэты тып дакумента" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "прызначыць гэтага карэспандэнта" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "парадак" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Няправільны рэгулярны выраз: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Няправільны колер." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Тып файла %(type)s не падтрымліваецца" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Выяўлена няправільная зменная." @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Англійская (ЗША)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Беларуская" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Чэшская" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Дацкая" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Нямецкая" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Англійская (Вялікабрытанія)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Іспанская" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Французская" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Італьянская" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Люксембургская" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Нідэрландская" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Польская" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Партугальская (Бразілія)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Партугальская" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Румынская" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Руская" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Славенская" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Сербская" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Шведская" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Турэцкая" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Кітайская спрошчаная" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Адміністраванне Paperless-ngx" diff --git a/src/locale/bg_BG/LC_MESSAGES/django.po b/src/locale/bg_BG/LC_MESSAGES/django.po index fc3efad30..c545035a2 100644 --- a/src/locale/bg_BG/LC_MESSAGES/django.po +++ b/src/locale/bg_BG/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Bulgarian\n" "Language: bg_BG\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Документи" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Стойността трябва да е валидна JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Невалидна заявка на персонализираното полето" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Списък с невалиден израз. Не може да е празно." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Невалиден логически оператор {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Надвишен е максимален брой за заявки." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} не е валидно персонализирано поле." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} не поддържа заявка expr {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Надвишена е максималната дълбочина на вмъкване." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Персонализирано поле не е намерено" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "собственик" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Няма" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Всяка дума" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Всички думи" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Точно съвпадение" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Регулярен израз" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Неясна дума" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Автоматично" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "име" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "съвпадение" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "алгоритъм за съвпадение" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "без значение от големината на буквите" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "кореспондент" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "кореспонденти" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "цвят" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "етикет за входяща поща" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Маркира този етикет като етикет за входяща кутия: Всички новопостъпили документи ще бъдат маркирани с етикети за входяща кутия." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "етикет" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "етикети" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "вид на документа" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "видове документи" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "път" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "път към хранилище" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "пътища към хранилища" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Нешифрован" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Шифровано с GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "заглавие" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "съдържание" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Необработените, само текстови данни на документа. Това поле се използва предимно за търсене." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime тип" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "контролна сума" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Контролната сума на оригиналния документ." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "архивна контролна сума" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Контролната сума на архивирания документ." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "брой на страниците" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Броят на страниците на документа." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "създадено" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "променено" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "вид на съхранение" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "добавено" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "име на файл" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Текущо име на файла в хранилището" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "име на архивен файл" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Текущо име на архивен файл в хранилище" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "оригинално име на файла" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Оригиналното име на файла, когато е бил качен" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "сериен номер на архива" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Мястото на този документ във вашия физически документален архив." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "документ" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "документи" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Таблица" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Малки картинки" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Големи картинки" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Име" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Създаден" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Добавен" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Тагове" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Кореспондент" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Вид документ" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Директории за съхранение" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Бележка" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Собственик" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Споделени" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "Архивен номер" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Страници" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "показване в таблото за управление" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "показване в страничната лента" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "поле за сортиране" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "обратно сортиране" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Големина на страница" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Режим на изгледа" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Полета за показване на документи" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "запазен изглед" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "запазени изгледи" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "заглавието съдържа" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "съдържанието съдържа" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN е" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "кореспондент е" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "тип на документа е" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "е във входящата кутия" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "има етикет" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "има някакъв етикет" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "създаден преди" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "създадена след" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "годината на създаване е" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "месецът на създаване е" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "ден на създаване е" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "добавено преди" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "добавено след" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "променено преди" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "променено след" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "няма етикет" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "не притежава Архивен номер" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "заглавието или съдържанието съдържа" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "пълнотекстова заявка" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "повече като този" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "има етикети в" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "Архивен номер, по-голям от" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "Архивен номер, по-малък от" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "път към хранилище" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "има кореспондент в" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "няма кореспондент в" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "има тип документ в" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "няма тип документ в" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "има път към хранилище в" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "няма път към хранилище в" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "собственик е" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "има собственик в" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "няма собственик" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "няма собственик в" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "има стойност в ръчно зададеното поле" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "е споделено от мен" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "има персонализирани полета" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "има персонализирано поле в" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "няма персонализирано поле в" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "няма персонализирано поле" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "персонализирана заявка за полета" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "създаден до" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "създаден от" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "добавен към" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "добавен от" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "mime тип е" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "тип правило" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "стойност" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "правило за филтриране" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "правила за филтриране" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Автоматична задача" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Планирана задача" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Ръчна задача" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Използвайте файл" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Обучение на класификатора" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Проверете здравия разум" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Оптимизиране на индекса" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID на задача" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Идентификатор на Celery за изпълнената задача" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Прието" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Ако задачата е потвърдена чрез интерфейса или API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Име на файл на задачата" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Име на файла, за който е изпълнена задачата" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Име на задача" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Име на задачата, която се изпълняваше" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Състояние на задачата" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Текущо състояние на изпълняваната задача" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Дата и час на създаване" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Поле за дата и час, когато резултатът от задачата е създаден в UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Стартова дата и час" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Поле за дата и час, когато задачата е стартирана в UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Дата и час на завършване" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Поле за дата и час, когато задачата е завършена в UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Данни за резултат" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Данните, върнати от задачата" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Тип задача" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Типът задача, която се изпълняваше" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Бележка за документа" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "потребител" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "бележка" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "бележки" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Архив" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Оригинал" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "валидност" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "връзка за споделяне" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "връзки за споделяне" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Низ" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Дата" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Булева" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Цяло число" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Плаваща запетая" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Пари" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Връзка към документ" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Избери" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "тип данни" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "допълнителни данни" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Допълнителни данни за персонализираното поле, като например опции за избор" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "персонализирано поле" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "персонализирани полета" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "инстанция на персонализирано поле" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "инстанции на персонализирани полета" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Стартирана обработка" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Документът е добавен" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Документът е обновен" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Планиран" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Папка за консумация" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Качване на API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Извличане на поща" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Уеб потребителски интерфейс" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Редактирано" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Персонализирано поле" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Тип на тръгъра на работния процес" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "филтриране на път" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Да се консумират само документи с път, който съответства на този, ако е зададен. Позволени са заместващи символи, посочени като *. Нечувствителен към големината на буквите." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "филтриране по файлово име" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Да се консумират само документи, които изцяло съответстват на това файлово име, ако е посочено. Разрешени са заместващи символи като *.pdf или *invoice*. Нечувствителност към големи и малки букви." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "филтриране на документи по това правило за поща" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "има този/тези етикет/и" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "има този тип на документа" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "има този кореспондент" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "график на компенсиране на дните" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Броят дни за компенсиране на задействащия график от." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "графикът се повтаря" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Ако графикът трябва да се повтаря." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "повтарящ се график за забавяне в дните" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Броят на дните между повтарящите се графици се активира." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "график на дата на полето" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Полето което проверява дали графика е активен." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "график на датите на персонализирано поле" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "тръгър на работния процес" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "тръгъри на работния процес" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "тема по имейл" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Темата на имейла може да включва някои заместители, вижте документация." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "имейл съобщение" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Съобщението (message) от имейла може да включва някои заместители, вижте документация." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "имейли до" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Имейл адресите за изпращане да са разделени със запетаи." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "добави документа в имейла" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "url адрес на известяване" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "URL адресът на местоназначението за известието." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "използвайте параметрите" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "изпратете като JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "известяване параметри" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Параметрите за изпращане с URL адреса на известяване, ако тялото не е използвано." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "webhook тяло" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Тялото, което да изпращате с URL адреса на известяване, ако параметрите не се използват." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "заглавия на известяване" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Заглавията, които да изпратите с URL адреса на известяване." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "включете документ в известяване" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Задача" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Премахване" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Имейл" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Известяване" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Тип на действието на работния процес" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "задаване на заглавие" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "задайте този етикет" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "задайте този тип документ" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "задайте този кореспондент" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "задайте този път за хранилище" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "задайте този собственик" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "предоставяне на права за преглед на тези потребители" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "предоставяне на права за преглед на тези групи" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "предоставяне на права за промяна на тези потребители" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "предоставяне на права за промяна на тези групи" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "присвояване на тези персонализирани полета" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "персонализирани стойности на полето" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Незадължителни стойности за присвояване на персонализираните полета." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "премахни този/тези етикект/и" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "премахни всички етикети" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "премахни този/тези тип/ове на документ" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "премахви всички типове на документ" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "премахни тези кореспонденти" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "прехахни всички кореспонденти" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "изтрий тези директории" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "изтрий всички директории" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "премахни всички тези собственици" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "премахни всички собственици" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "премахни всички права за прелед на тези потребители" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "премахни всички права за прелед на тези групи" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "премахни всички права за промяна на тези потребители" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "премахни всички права за прояна на тези групи" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "премахнете всички права" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "премахни тези потребителски полета" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "премахни всички потребителски полета" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "имейл" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "известяване" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "действие по работния процес" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "действия по работния процес" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "ред" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "тригъри" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "действия" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "активирано" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "работен процес" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "вид активиране на работния процес" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "изпълнение на дата" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "стартиране на работния процес" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "стартиране на работните процеси" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Невалиден регулярен израз: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Невалиден цвят." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Файловия тип %(type)s не се поддържа" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Засечена е невалидна променлива." @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "настройки на софтуера" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Английски (САЩ)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Арабски" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Африканс" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Беларуски" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Български" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Каталунски" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Чешки" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Датски" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Немски" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Гръцки" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Английски (Великобритания)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Испански" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Финландски" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Френски" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Унгарски" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Италиански" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Японски" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Корейски" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Люксембургски" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Норвежки" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Холандски" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Полски" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Португалски (Бразилия)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Португалски" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Румънски" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Руски" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Словашки" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Словенски" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Сръбски" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Шведски" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Турски" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Украински" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Китайски опростен" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Китайски традиционен" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx администрация" diff --git a/src/locale/ca_ES/LC_MESSAGES/django.po b/src/locale/ca_ES/LC_MESSAGES/django.po index 63296e2aa..744ee9c78 100644 --- a/src/locale/ca_ES/LC_MESSAGES/django.po +++ b/src/locale/ca_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Catalan\n" "Language: ca_ES\n" @@ -19,1174 +19,1223 @@ msgstr "" #: documents/apps.py:8 msgid "Documents" -msgstr "documents" +msgstr "Documents " -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Valor ha de ser un JSON valid." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Expressió de camp de consulta invàlid" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Expressió de llista invàlida. No ha d'estar buida." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Invàlid operand lògic {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Condicions de consulta excedits." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} no és un camp personalitzat vàlid." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} no suporta expressió de consulta {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Màxima profunditat anidada excedida." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Camp personalitzat no trobat" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "propietari" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Cap" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Qualsevol paraula" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Totes les paraules" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Coincidència exacte" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Expressió Regular" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Paraula Difusa" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automàtic" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nom" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "coincidència" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritme coincident" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "no distingeix entre majúscules i minúscules" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "corresponsal" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "corresponsals" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "color" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "és etiqueta entrada" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Marca aquesta etiqueta com a etiqueta de safata d'entrada: tots els documents consumits s'etiquetaran amb etiquetes d'entrada." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etiqueta" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etiquetes" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "No es pot marcar ell mateix com a pare." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Nno es pot marcar pare a descendent." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "tipus de document" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "tipus de documents" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "camí" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "ruta emmagatzematge" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "rutes emmagatzematge" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "No Encriptat" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Xifrat amb GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "títol" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "contingut" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Les dades en brut del document només és text. Aquest camp s'utilitza principalment per a la cerca." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "topus mimètic" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "checksum" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Checksum del document original." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arxiva checksum" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "El checksum del document arxivat." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "pàgines" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "El nombre de pàgines del document." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "creat" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "modificat" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tipus emmagatzematge" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "afegit" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nom arxiu" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Nom arxiu a emmagatzematge" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "nom arxiu arxivat" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Nom arxiu arxivat a emmagatzematge" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "nom arxiu original" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "El nom original del fitxer quan es va pujar" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "número de sèrie de l'arxiu" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Posició d'aquest document al vostre arxiu físic de documents." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "document" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "documents" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Taula" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Targeta Petita" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Targeta Gran" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Títol" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Creat" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Afegit" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Etiquetes" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Corresponsal" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Tipus Document" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Rutes Emmagatzematge" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Nota" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Propietari" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Compartit" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Pàgines" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "mostra al panell" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "mostra barra lateral" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "camp ordenació" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "ordre invers" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Veure mida pàgina" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Veure mode visualització" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Visualització camps document" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "vista guardada" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "vistes guardades" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "títol conté" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "contingut conté" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN és" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "corresponsal és" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "tipus document és" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "està a safata entrada" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "té etiqueta" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "conté qualsevol etiqueta" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "creat abans" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "creat després" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "any creació és" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "mes creació és" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "dia creació és" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "afegit abans" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "afegit després" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "modificat abans" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "modificat després" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "no té etiqueta" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "no té ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "títol o contingut conté" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "consulta de text complet" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "més com aquest" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "té etiquetes a" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN més gran que" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN menor que" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "emmagatzematge és" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "té corresponsal a" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "no té corresponsal a" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "té tipus de document a" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "no té tipus de document a" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "té emmagatzematge a" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "no té emmagatzematge a" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "propietari és" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "té propietari a" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "no té propietari" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "no té propietari a" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "té camp personalitzat" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "compartit per mi" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "té camps personalitzats" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "té camp personalitzat" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "no té camp personalitzat" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "no té camp personalitzat" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "consulta de camps personalitzats" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "creat per" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "creat desde" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "afegit per" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "afegit desde" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "mime type es" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "tipus de regla" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "valor" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "filtra regla" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "filtra regles" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Auto Tasca" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Tasca programada" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Tasca Manual" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Arxiu Consumit" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Classificador" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Comprovació" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Optimitza index" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID Tasca" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID per la tasca que es va executar" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Reconegut" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Si la tasca es reconeix mitjançant la interfície o l'API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Nom Arxiu tasca" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Nom del fitxer per al qual s'ha executat la tasca" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Nom tasca" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Nom de la tasca executada" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Estat de tasca" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Estat actual de la tasca que s'està executant" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Data Hora Creació" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Camp data i hora en què es va iniciar la tasca UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Data Hora Creació" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Camp data i hora en què es va iniciar la tasca UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Data Hora completada" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Camp data i hora en què es va completar la tasca UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Dades del resultat" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Dades retornades per la tasca" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Tipus Tasca" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Tipus de Tasca executada" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Nota pel document" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "usuari" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "nota" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notes" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arxiu" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Original" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "venciment" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "fitxa" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "comparteix enllaç" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "comparteix enllaços" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Cadena" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Data" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Booleà" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Enter" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Flotant" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monetari" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Enllaç Document" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Selecciona" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Text Llarg" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "tipus dada" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "dades addicionals" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Dades addicionals per al camp personalitzat, com a opció seleccionada" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "camp personalitzat" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "camps personalitzats" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "instància de camp personalitzat" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "instàncies de camps personalitzats" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Consumició Començada" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Document Afegit" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Document Actualitzat" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Programat" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Directori Consumició" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Pujada Api" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Recollida Correu" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Web UI" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Modificat" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Camp personalitzat" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Tipus Activador de Flux" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtra camins" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Consumeix documents amb la ruta que coincideixi si està especificada. Wilcards especificats amb * estan permessos, no sensitiu." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtra nom arxiu" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Consumiu només documents que coincideixin completament amb aquest nom de fitxer si s'especifica. Es permeten els comodins com ara *.pdf o *factura*. Cas insensible." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtra documents d'aquesta regla de correu" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "té aquestes etiquete(s)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "té totes aquestes etiquetes" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "no té aquestes etiquetes" + +#: documents/models.py:1087 msgid "has this document type" msgstr "té aquest tipus de document" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "no té aquest tipus de documents" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "té aquest corresponsal" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "no té aquests corresponsals" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "té aquesta ruta emmagatzematge" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "no té aquestes rutes d'emmagatzematge" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "consulta de camp personalitzat de filtratge" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "Expressió de consulta de camp personalitzat codificada en JSON." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "programar dies de compensació" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "El nombre de dies per compensar l'activació de la programació." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "peogramació recurrent" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Si la programació ha de ser recurrent." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "programa el retard recurrent en dies" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "El nombre de dies entre els activadors de la programació recurrent." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "camp de data de programació" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "El camp per comprovar si hi ha un activador de programació." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "camp personalitzat de data de programació" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "disparador de flux" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "disparadors de fluxos" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "assumpte del Email" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "L'assumpte del correu, pot incloure alguns marcadors de posició, vegeu documentació." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "cos de l'Email" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "El cos (missatge) del correu electrònic, pot incloure alguns marcadors de posició, vegeu documentació." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "emails a" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Les adreces de correu de destinació, separades per comes." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "incloure document al correu" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "webhook url" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "L'URL de destinació de la notificació." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "empra paràmetres" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "enviar com a JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "paràmetres del webhook" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Els paràmetres que cal enviar amb l'URL del webhook si no s'utilitza el cos." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "webhook body" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "El cos que cal enviar amb l'URL del webhook si no s'utilitzen els paràmetres." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "webhook headers" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Les capçaleres a enviar amb l'URL del webhook." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "incloure el document al webhook" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Assignació" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Elimina" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Email" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Tipus d'acció de disparador" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "assigna títol" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Asigna títol de doculent, ha de ser plantilla Jinja2, veure documentació." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "assigna aquesta etiqueta" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "assigna aquest tipus de document" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "assigna aquest corresponsal" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "assigna aquesta ruta d'emmagatzematge" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "assigna aquest propietari" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "dona permisos de visualització a aquests usuaris" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "dona permisos de visionat a aquests grups" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "dona permisos d'edició a aquests usuaris" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "dona permisos d'edició a aquests grups" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "assigna aquests camps personalitzats" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "valors del camp personalitzat" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Valors opcionals per assignar a camps personalitzats." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "elimina aquesta etiqueta(es)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "elimina totes les etiquetes" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "elimina aquest(s) tipus de document" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "elimina tots els tipus de document" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "suprimeix aquest(s) corresponsal(s)" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "elimina tots els corresponsals" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "elimina aquesta(es) ruta(es) d'emmagatzematge" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "elimina totes les rutes d'emmagatzemament" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "elimina aquesta(es) ruta(es) d'emmagatzematge" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "elimina tots els propietaris" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "treu permisos de visualització a aquests usuaris" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "treu permisos de visualització a aquests grups" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "treu permisos d'edició a aquests usuaris" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "treu permisos d'edició a aquests grups" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "treu tots els permisos" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "elimina aquests camps personalitzats" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "elimina tots els camps personalitzats" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "email" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "acció disparador" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "accions disparadors" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "ordena" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "disparadors" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "accions" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "habilitat" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "flux de treball" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "disparador de flux" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "data execució" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "data del flux" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "flux corrents" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Expressió regular invàlida: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Color Invàlid." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Tipus arxiu %(type)s no suportat" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "ID de camp personalizat ha de ser enter: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Camp personalitzat amb ID %(id)s no existeix" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Camps personalitzats han de ser una llista d'enters o un objecte que mapegi els identificadors amb els valors." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Alguns camps personalitzats no existeixen o s'han especificat dues vegades." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Variable detectada invàlida." @@ -1627,151 +1676,151 @@ msgstr "Defineix el mapatge de l'etiqueta del codi de barres" msgid "paperless application settings" msgstr "configuració de l'aplicació paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Anglès (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Àrab" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Africà" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Bielorús" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Búlgar" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Català" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Txec" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Danès" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Alemany" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grec" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Anglès (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Espanyol" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Persa" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finès" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francès" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Hongarès" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italià" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japonès" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Coreà" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburguès" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Noruec" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Holandès" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polonès" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portuguès (Brasil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portuguès" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Romanès" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Rus" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Eslovac" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Eslovè" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbi" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Suec" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turc" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ucranià" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vietnamita" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Xinès Simplificat" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Xinès tradicional" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administració Paperless-ngx" diff --git a/src/locale/cs_CZ/LC_MESSAGES/django.po b/src/locale/cs_CZ/LC_MESSAGES/django.po index a6fa4a173..5e59dde32 100644 --- a/src/locale/cs_CZ/LC_MESSAGES/django.po +++ b/src/locale/cs_CZ/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumenty" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Hodnota musí být platný JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Neplatný výraz dotazu na vlastní pole" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Neplatný seznam výrazů. Nesmí být prázdný." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Neplatný logický operátor {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Překročen maximální počet podmínek dotazu." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} není platné vlastní pole." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} nepodporuje výraz dotazu {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Překročena maximální hloubka větvení." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Vlastní pole nebylo nalezeno" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "vlastník" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Žádný" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Jakékoliv slovo" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Všechna slova" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Přesná shoda" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regulární výraz" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Nejasné slovo" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automaticky" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "název" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "shoda" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritmus pro shodu" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "je ignorováno" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korespondenti" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "barva" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "je štítek doručené pošty" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Označí tento štítek jako štítek doručené pošty: Všechny nově zpracované dokumenty budou označeny štítky doručené pošty." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "štítek" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "štítky" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Nelze nastavit sebe sama jako nadřazeného." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Nelze nastavit nadřazeného na podřízeného." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "typ dokumentu" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "typy dokumentů" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "cesta" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "cesta k úložišti" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "cesty k úložišti" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Nešifrované" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Šifrované pomocí GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "název" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "obsah" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Nezpracovaná, pouze textová data dokumentu. Toto pole je používáno především pro vyhledávání." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime typ" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrolní součet" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Kontrolní součet původního dokumentu" -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "kontrolní součet archivu" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Kontrolní součet archivovaného dokumentu." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "počet stránek" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Počet stránek dokumentu." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "vytvořeno" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "upraveno" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "typ úložiště" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "přidáno" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "název souboru" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Aktuální název souboru v úložišti" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "Název archivovaného souboru" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Aktuální název souboru archivu v úložišti" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "původní název souboru" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Původní název souboru při jeho nahrání" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "sériové číslo archivu" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Pozice tohoto dokumentu ve vašem fyzickém archivu dokumentů." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumenty" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabulka" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Malé karty" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Velké karty" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Název" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Vytvořeno" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Přidáno" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Štítky" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korespondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Typ dokumentu" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Cesta k úložišti" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Poznámka" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Vlastník" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Sdíleno" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "SČA" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Stránky" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "zobrazit na nástěnce" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "zobrazit v postranním panelu" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "seřadit pole" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "třídit opačně" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Zobrazit velikost stránky" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Zobrazit režim zobrazení" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Pole zobrazení dokumentu" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "uložený pohled" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "uložené pohledy" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "název obsahuje" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "obsah obsahuje" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN je" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "korespondent je" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "typ dokumentu je" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "je v doručené poště" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "má štítek" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "má libovolný štítek" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "vytvořeno před" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "vytvořeno po" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "rok vytvoření je" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "měsíc vytvoření je" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "den vytvoření je" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "přidáno před" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "přidáno po" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "upraveno před" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "upraveno po" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "nemá štítek" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "Nemá ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "název nebo obsah obsahuje" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "fulltextový dotaz" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "podobné" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "má štítky v" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "SČA větší než" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "SČA menší než" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "cesta k úložišti je" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "má korespondenta v" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "nemá korespondenta v" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "má typ dokumentu v" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "nemá typ dokumentu v" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "má cestu k úložišti v" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "nemá cestu k úložišti v" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "vlastník je" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "má vlastníka v" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "nemá vlastníka" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "nemá vlastníka v" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "má vlastní hodnotu pole" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "je sdílen mnou" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "má vlastní pole" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "má vlastní pole v" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "nemá vlastní pole v" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "nemá vlastní pole" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "dotazy na vlastní pole" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "vytvořeno do" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "vytvořeno z" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "přidáno do" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "přidáno z" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "typ mime je" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "typ pravidla" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "hodnota" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "filtrovací pravidlo" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "filtrovací pravidla" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Automatická úloha" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Plánovaná úloha" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Ruční úloha" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Soubor zpracování" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Trénovací klasifikátor" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Zkontrolovat zdraví" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Optimalizace indexu" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID úlohy" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID pro úlohu, která byla spuštěna" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Potvrzeno" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Pokud je úloha potvrzena prostřednictvím webu nebo API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Název souboru úlohy" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Název souboru, pro který byla úloha spuštěna" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Název úlohy" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Název úlohy, která byla spuštěna" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Stav úlohy" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Aktuální stav spuštěné úlohy" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Datum a čas vytvoření" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Datum a čas, kdy byl výsledek úlohy vytvořen v UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Datum a čas zahájení" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Datum a čas, kdy byla úloha spuštěna v UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Datum a čas dokončení" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Datum a čas, kdy byla úloha dokončena v UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Data výsledku" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Data vrácena úlohou" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Typ úlohy" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Typ úlohy, která byla spuštěna" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Poznámka k dokumentu" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "uživatel" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "poznámka" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "poznámky" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Archiv" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Původní" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "vypršení" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "odkaz ke sdílení" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "odkazy ke sdílení" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Řetězec" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "Adresa URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Datum" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Logická hodnota" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Celé číslo" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Plovoucí" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Peněžní" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Odkaz na dokument" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Vybrat" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Dlouhý text" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "datový typ" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "dodatečná data" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Dodatečná data pro vlastní pole, jako jsou možnosti výběru" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "vlastní pole" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "vlastní pole" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "instance vlastního pole" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "instance vlastních polí" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Spuštěno zpracování" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokument přidán" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokument aktualizován" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Naplánováno" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Složka zpracování" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Nahrání pomocí API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Načíst poštu" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Webové rozhraní" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Upraveno" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Vlastní pole" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Typ spouštěče pracovního postupu" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtr cesty" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Zpracovávat pouze dokumenty s cestou, která odpovídá tomuto, pokud je zadáno. Jsou povoleny zástupné znaky zadané jako *. Nerozlišuje malá a velká písmena." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtr názvu souboru" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Zpracovávat pouze dokumenty, které zcela odpovídají tomuto názvu souboru, pokud je zadán. Jsou povoleny zástupné znaky jako *.pdf nebo *faktura*. Nerozlišuje malá a velká písmena." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtrovat dokumenty z tohoto pravidla pošty" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "má tyto štítky" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "má všechny tyto štítky" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "nemá tyto štítky" + +#: documents/models.py:1087 msgid "has this document type" msgstr "má tento typ dokumentu" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "nemá tyto typy dokumentů" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "má tohoto korespondenta" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "nemá tyto korespondenty" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "má tuto cestu k úložišti" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "nemá tyto cesty k úložišti" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "filtrovat dotazem na vlastní pole" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "Dotaz na vlastní pole zakódovaný ve formátu JSON." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "počet dní posunu plánu" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Počet dní, o které se má spouštěč plánu posunout." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "plán se opakuje" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Jestli by se měl plán opakovat." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "zpoždění opakování plánu ve dnech" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Počet dní mezi opakovanými spouštěči plánu." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "pole data plánu" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Pole pro kontrolu spouštěče plánu." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "vlastní pole data plánu" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "spouštěč pracovního postupu" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "spouštěče pracovního postupu" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "předmět e-mailu" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Předmět e-mailu, může obsahovat některé zástupné znaky, viz dokumentace." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "tělo e-mailu" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Tělo (zpráva) e-mailu, může obsahovat některé zástupné znaky, viz dokumentace." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "e-maily komu" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Cílové e-mailové adresy, oddělené čárkou." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "zahrnout dokument v e-mailu" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "url webhooku" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "Cílová URL pro oznámení." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "použít parametry" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "poslat jako JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "parametry webhooku" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Parametry pro odeslání s URL webhooku, pokud není použito tělo." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "tělo webhooku" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Tělo pro odeslání s URL webhooku, pokud nejsou použity parametry." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "hlavičky webhooku" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Záhlaví pro odeslání s URL webhooku." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "zahrnout dokument ve webhooku" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Přiřazení" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Odstranění" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-mail" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Typ akce pracovního postupu" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "přiřadit název" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Přiřadit název dokumentu, musí být šablona Jinja2, viz dokumentace." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "přiřadit tento tag" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "přiřadit tento typ dokumentu" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "přiřadit tohoto korespondenta" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "přiřadit tuto cestu k úložišti" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "přiřadit tohoto vlastníka" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "udělit oprávnění k zobrazení těmto uživatelům" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "udělit oprávnění k zobrazení těmto skupinám" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "udělit oprávnění ke změně těmto uživatelům" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "udělit oprávnění ke změně těmto skupinám" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "přiřadit tato vlastní pole" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "vlastní hodnoty polí" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Volitelné hodnoty k přiřazení k vlastním polím." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "odstranit tyto štítky" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "odstranit všechny štítky" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "odstranit tyto typy dokumentů" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "odstranit všechny typy dokumentů" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "odstranit tyto korespondenty" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "odstranit všechny korespondenty" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "odstranit tyto cesty k úložišti" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "odstranit všechny cesty k úložišti" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "odstranit tyto vlastníky" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "odstranit všechny vlastníky" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "odstranit oprávnění k zobrazení pro tyto uživatele" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "odstranit oprávnění k zobrazení pro tyto skupiny" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "odstranit oprávnění ke změně pro tyto uživatele" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "odstranit oprávnění ke změně pro tyto skupiny" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "odstranit všechna oprávnění" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "odstranit tato vlastní pole" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "odstranit všechna vlastní pole" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "e-mail" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "akce pracovního postupu" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "akce pracovního postupu" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "pořadí" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "spouštěče" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "akce" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "povoleno" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "pracovní postup" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "typ spouštěče pracovního postupu" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "spouštění data" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "spuštění pracovního postupu" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "spuštění pracovních postupů" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Neplatný regulární výraz: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Neplatná barva." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Typ souboru %(type)s není podporován" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "Vlastní ID pole musí být celé číslo: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Vlastní pole s ID %(id)s neexistuje" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Vlastní pole musí být seznam celých čísel nebo ID pro mapování objektů na hodnoty." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Některá vlastní pole neexistují nebo byla zadána dvakrát." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Zjištěna neplatná proměnná." @@ -1628,151 +1677,151 @@ msgstr "Nastaví mapování čárových kódů na štítky" msgid "paperless application settings" msgstr "nastavení aplikace paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Angličtina (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabština" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikánština" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Běloruština" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bulharština" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalánština" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Čeština" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dánština" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Němčina" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Řečtina" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Angličtina (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Španělština" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Perština" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finština" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francouzština" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Maďarština" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italština" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japonština" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Korejština" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Lucemburština" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norština" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Holandština" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polština" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugalština (Brazílie)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugalština" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumunština" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Ruština" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovenština" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovinština" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Srbština" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Švédština" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turečtina" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukrajinština" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vietnamština" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Čínština (zjednodušená)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Čínština (tradiční)" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administrace Paperless-ngx" diff --git a/src/locale/da_DK/LC_MESSAGES/django.po b/src/locale/da_DK/LC_MESSAGES/django.po index e1a61992e..efc28661b 100644 --- a/src/locale/da_DK/LC_MESSAGES/django.po +++ b/src/locale/da_DK/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Danish\n" "Language: da_DK\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumenter" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Værdien skal være gyldig JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Ugyldigt tilpasset feltforespørgselsudtryk" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Ugyldig udtryksliste. Må ikke være tom." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Ugyldig logisk operatør {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Maksimalt antal forespørgselsbetingelser overskredet." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} er ikke et gyldigt tilpasset felt." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} understøtter ikke forespørgsel expr {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Maksimal indlejringsdybde overskredet." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Tilpasset felt ikke fundet" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "ejer" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Ingen" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Ethvert ord" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Alle ord" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Præcis match" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regulært udtryk" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Fuzzy-ord" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatisk" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "navn" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "match" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "matchende algoritme" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "er ufølsom" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korrespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korrespondenter" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "farve" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "er indbakkeetiket" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Markerer denne etiket som en indbakkeetiket: Alle nyligt importerede dokumenter markeres med indbakkeetiketter." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etiket" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etiketter" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "dokumenttype" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "dokumenttyper" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "sti" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "lagersti" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "lagerstier" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Ukrypteret" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Krypteret med GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "titel" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "indhold" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Dokumentets rå tekstdata. Dette felt bruges primært til søgning." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME-type" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrolsum" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Kontrolsummen af det oprindelige dokument." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arkiv kontrolsum" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Kontrolsummen af det arkiverede dokument." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "sideantal" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Antallet af sider i dokumentet." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "oprettet" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "ændret" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "lagringstype" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "tilføjet" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "filnavn" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Nuværende filnavn lagret" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "arkiv filnavn" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Nuværende arkivfilnavn lagret" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "oprindeligt filnavn" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Det oprindelige filnavn ved upload" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "arkivserienummer" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Placeringen af dette dokument i dit fysiske dokumentarkiv." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumenter" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabel" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Små kort" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Store kort" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Titel" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Oprettet" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Tilføjet" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Etiketter" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korrespondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Dokumenttype" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Lagersti" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Notat" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Ejer" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Delt" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Sider" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "vis på betjeningspanel" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "vis i sidepanelet" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "sortér felt" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "sortér omvendt" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Vis sidestørrelse" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Vis visningstilstand" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Dokumentvisningsfelter" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "gemt visning" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "gemte visninger" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "titel indeholder" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "indhold indeholder" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN er" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "korrespondent er" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "dokumenttype er" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "er i indbakke" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "har etiket" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "har en etiket" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "oprettet før" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "oprettet efter" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "oprettelsesår er" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "oprettelsesmåned er" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "oprettelsesdag er" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "tilføjet før" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "tilføjet efter" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "ændret før" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "ændret efter" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "har ikke nogen etiket" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "har intet ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "titel eller indhold indeholder" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "fuldtekst forespørgsel" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "mere som dette" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "har etiketter i" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN større end" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN mindre end" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "lagersti er" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "har korrespondent i" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "har ikke korrespondent i" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "har dokumenttype i" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "har ikke dokumenttype i" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "har lagersti i" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "har ikke lagersti i" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "ejer er" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "har ejer i" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "har ikke ejer" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "har ikke ejer i" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "har tilpasset feltværdi" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "deles af mig" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "har tilpassede felter" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "har tilpasset felt i" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "har ikke tilpasset felt i" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "har ikke tilpasset felt" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "tilpasset felt-forespørgsel" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "regeltype" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "værdi" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "filtreringsregel" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "filtreringsregler" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Opgave-ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery-ID for opgaven, der blev afviklet" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Bekræftet" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Om opgaven er bekræftet via frontend eller API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Opgavefilnavn" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Navn på filen, for hvilken opgaven blev afviklet" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Opgavenavn" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Opgavetilstand" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Aktuel tilstand på opgaven, der afvikles" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Oprettelsestidspunkt" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Datotidsfelt, når opgaveresultatet er oprettet i UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Starttidspunkt" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Datotidsfelt, når opgaven er startet i UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Færdiggørelsestidspunkt" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Datotidsfelt, når opgaven er færdiggjort i UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Resultatdata" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Data returneret af opgaven" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Notat til dokumentet" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "bruger" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "notat" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notater" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arkiv" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Oprindelig" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "udløb" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "delingslink" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "delingslinks" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Streng" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Dato" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Boolsk" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Heltal (integer)" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Flydende" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monetær" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Dokumentlink" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Vælg" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "datatype" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "ekstra data" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Ekstra data til det tilpassede felt, såsom valgmuligheder" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "tilpasset felt" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "tilpassede felter" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "tilpasset feltinstans" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "tilpassede feltinstanser" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Behandling startet" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokument tilføjet" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokument opdateret" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Planlagt" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Behandlingsmappe" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "API-upload" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Mailhentning" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Ændret" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Tilpasset felt" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Workflow-udløsningstype" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtrér sti" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Behandl kun dokumenter med en sti matchende denne, hvis angivet. Jokertegn angivet som * er tilladt. Minuskel-/majuskelufølsom." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtrér filnavn" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Bearbejd kun dokumenter, der helt matcher dette filnavn, hvis angivet. Wildcards såsom *.pdf eller *faktura * er tilladt." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtrér dokumenter fra denne postregel" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "har denne(/disse) etiket(ter)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "har denne dokumenttype" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "har denne korrespondent" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "tidsplan forskydningsdage" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Antal dage tidsplan-udløseren skal forskydes." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "tidsplan er tilbagevendende" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Hvorvidt tidsplanen skal være tilbagevendende." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "planlæg tilbagevendende forsinkelse i dage" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Antal dage mellem tilbagevendende tidsplan-udløsere." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "tidsplan-datofelt" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Feltet, der skal tjekkes for en tidsplan-udløser." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "tilpasset tidsplan-datofelt" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "workflow-udløser" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "workflow-udløsere" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "e-mailemne" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Emnet for e-mailen, kan indeholde visse pladsholdere, se dokumentation." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "e-mail brødtekst" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Brødteksten i e-mailen, kan indeholde visse pladsholdere, se dokumentation." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "e-mails til" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Destinations e-mailadresser, kommasepareret." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "medtag dokument i e-mail" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "webhook-URL" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "Destinations-URL'en for notifikationen." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "anvend parametre" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "send som JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "webhook-parametre" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Parametrene, som skal medsendes webhook-URL'en, hvis brødtekst ikke bruges." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "webhook-brødtekst" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Brødteksten, der skal medsendes webhook-URL'en, hvis parametre ikke bruges." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "webhook-overskrifter" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Overskrifterne, som skal medsendes webhook-URL'en." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "medtag dokument i webhook" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Tildeling" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Fjernelse" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-mail" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Workflow-handlingstype" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "tildel titel" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "tildel denne etiket" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "tildel denne dokumenttype" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "tildel denne korrespondent" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "tildel denne lagersti" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "tildel denne ejer" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "tildel visningstilladelser til disse brugere" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "tildel visningstilladelser til disse grupper" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "tildel ændringstilladelser til disse brugere" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "tildel ændringstilladelser til disse grupper" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "tildel disse tilpassede felter" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "fjern denne(/disse) etiket(ter)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "fjern alle etiketter" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "fjern denne(/disse) dokumenttype(r)" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "fjern alle dokumenttyper" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "fjern denne(/disse) korrespondent(er)" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "fjern alle korrespondenter" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "fjern denne(/disse) lagersti(er)" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "fjern alle lagringsstier" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "fjern denne(/disse) ejer(e)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "fjern alle ejere" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "fjern visningstilladelser for disse brugere" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "fjern visningstilladelser for disse grupper" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "fjern ændringstilladelser for disse brugere" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "fjern ændringstilladelser for disse grupper" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "fjern alle tilladelser" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "fjern disse tilpassede felter" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "fjern alle tilpassede felter" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "e-mail" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "workflow-handling" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "workflow-handlinger" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "rækkefølge" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "udløsere" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "handlinger" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "aktiveret" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "workflow" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "workflow-udløsningstype" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "kørselsdato" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "workflow-kørsel" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "workflow-kørsler" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Ugyldigt regulært udtryk: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Ugyldig farve." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Filtype %(type)s understøttes ikke" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Ugyldig variabel fundet." @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "paperless-applikationsindstillinger" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Engelsk (USA)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikaans" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Hviderussisk" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bulgarsk" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalansk" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tjekkisk" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dansk" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Tysk" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Græsk" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Engelsk (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spansk" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finsk" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Fransk" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Ungarsk" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italiensk" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japansk" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Koreansk" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburgsk" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norsk" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Hollandsk" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polsk" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugisisk (Brasilien)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugisisk" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Romansk" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russisk" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovakisk" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovensk" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbisk" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Svensk" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Tyrkisk" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukrainsk" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Kinesisk, forenklet" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Kinesisk, traditionelt" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx håndtering" diff --git a/src/locale/de_DE/LC_MESSAGES/django.po b/src/locale/de_DE/LC_MESSAGES/django.po index 1381c163f..6862d6c67 100644 --- a/src/locale/de_DE/LC_MESSAGES/django.po +++ b/src/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumente" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Wert muss gültiges JSON sein." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Ungültiger benutzerdefinierter Feldabfrageausdruck" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Ungültige Ausdrucksliste. Darf nicht leer sein." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Ungültiger logischer Operator {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Maximale Anzahl an Abfragebedingungen überschritten." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} ist kein gültiges benutzerdefiniertes Feld." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} unterstützt den Abfrageausdruck {expr!r} nicht." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Maximale Verschachtelungstiefe überschritten." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Benutzerdefiniertes Feld nicht gefunden" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "Eigentümer" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" -msgstr "Keiner" +msgstr "Keine" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Irgendein Wort" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Alle Wörter" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Exakte Übereinstimmung" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regulärer Ausdruck" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Ungenaues Wort" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatisch" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "Name" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "Zuweisungsmuster" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "Zuweisungsalgorithmus" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "Groß-/Kleinschreibung irrelevant" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "Korrespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "Korrespondenten" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "Farbe" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "Posteingangs-Tag" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Markiert das Tag als Posteingangs-Tag. Neue Dokumente werden immer mit diesem Tag versehen." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "Tag" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "Tags" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Kann sich nicht selbst als übergeordnetes Element festlegen." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Kann das übergeordnete Element nicht auf ein Nachfolgeelement setzen." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "Dokumenttyp" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "Dokumenttypen" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "Pfad" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "Speicherpfad" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "Speicherpfade" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Nicht verschlüsselt" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Durch GNU Privacy Guard verschlüsselt" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "Titel" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "Inhalt" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Der Inhalt des Dokuments in Textform. Dieses Feld wird primär für die Suche verwendet." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME-Typ" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "Prüfsumme" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Die Prüfsumme des originalen Dokuments." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "Archiv-Prüfsumme" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Die Prüfsumme des archivierten Dokuments." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "Seitenzahl" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Die Anzahl der Seiten des Dokuments." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "Ausgestellt" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "Geändert" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "Speichertyp" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "Hinzugefügt" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "Dateiname" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Aktueller Dateiname im Datenspeicher" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "Archiv-Dateiname" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Aktueller Dateiname im Archiv" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "Ursprünglicher Dateiname" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Ursprünglicher Dateiname beim Hochladen" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "Archiv-Seriennummer" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Die Position dieses Dokuments in Ihrem physischen Dokumentenarchiv." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "Dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "Dokumente" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabelle" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Kleine Karten" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Große Karten" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Titel" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Ausgestellt" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Hinzugefügt" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Tags" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korrespondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Dokumenttyp" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Speicherpfad" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Notiz" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Eigentümer" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Freigegeben" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Seiten" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "Auf Startseite zeigen" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "In Seitenleiste zeigen" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "Sortierfeld" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "Umgekehrte Sortierung" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Ansichts-Seitengröße" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Ansichts-Anzeigemodus" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Angezeigte Dokumentenfelder" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "Gespeicherte Ansicht" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "Gespeicherte Ansichten" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "Titel enthält" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "Inhalt enthält" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN ist" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "Korrespondent ist" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "Dokumenttyp ist" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "Ist im Posteingang" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "Hat Tag" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "Hat irgendein Tag" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "Ausgestellt vor" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "Ausgestellt nach" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "Ausgestellt im Jahr" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "Ausgestellt im Monat" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "Ausstellungstag ist" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "Hinzugefügt vor" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "Hinzugefügt nach" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "Geändert vor" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "Geändert nach" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "Hat nicht folgendes Tag" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "Dokument hat keine ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "Titel oder Inhalt enthält" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "Volltextsuche" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "Ähnliche Dokumente" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "hat Tags in" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN größer als" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN kleiner als" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "Speicherpfad ist" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "hat Korrespondenten in" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "hat keinen Korrespondenten in" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "hat Dokumenttyp in" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "hat keinen Dokumenttyp in" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "hat Speicherpfad in" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "hat keinen Speicherpfad in" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "Eigentümer ist" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "hat Eigentümer in" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "hat keinen Eigentümer" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "hat keinen Eigentümer in" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "Hat benutzerdefinierten Feld-Wert" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "Ist von mir freigegeben" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "hat benutzerdefinierte Felder" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "hat die benutzerdefinierten Felder" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "hat nicht die benutzerdefinierten Felder" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "hat nicht das benutzerdefinierte Feld" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "benutzerdefinierte Feldabfrage" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "erstellt zu" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "erstellt von" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "hinzugefügt zu" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "hinzugefügt von" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "MIME-Typ ist" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "Regeltyp" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "Wert" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "Filterregel" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "Filterregeln" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Automatische Aufgabe" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Geplante Aufgabe" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Manuelle Aufgabe" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Datei verarbeiten" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Klassifikator trainieren" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Plausibilität prüfen" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Indexoptimierung" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Aufgaben-ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery-ID für die ausgeführte Aufgabe" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Bestätigt" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Wenn die Aufgabe über die Benutzeroberfläche oder die API bestätigt wird" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Aufgaben-Dateiname" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Name der Datei, für die die Aufgabe ausgeführt wurde" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Aufgabenname" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Name der ausgeführten Aufgabe" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Aufgabenstatus" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Aktueller Status der laufenden Aufgabe" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Erstellungsdatum/-zeit" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Zeitpunkt, an dem das Ergebnis der Aufgabe erstellt wurde (in UTC)" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Startdatum/-zeit" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Zeitpunkt, an dem die Aufgabe erstellt wurde (in UTC)" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Abschlussdatum/-zeit" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Zeitpunkt, an dem die Aufgabe abgeschlossen wurde (in UTC)" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Ergebnisdaten" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Die von der Aufgabe zurückgegebenen Daten" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Aufgabentyp" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Art der ausgeführten Aufgabe" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Notiz für das Dokument" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "Benutzer" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "Notiz" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "Notizen" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Archiv" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Original" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "Ablauf" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "Slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "Freigabelink" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "Freigabelinks" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Zeichenkette" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Datum" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Wahrheitswert" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Ganzzahl" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Gleitkommazahl" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Währung" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Dokumentenverknüpfung" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Auswahl" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Langer Text" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "Datentyp" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "Zusätzliche Daten" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Zusätzliche Daten für das benutzerdefinierte Feld, z. B. Auswahloptionen" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "Benutzerdefiniertes Feld" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "Benutzerdefinierte Felder" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "Benutzerdefinierte Feld-Instanz" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "Benutzerdefinierte Feld-Instanzen" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Verarbeitung gestartet" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokument hinzugefügt" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokument aktualisiert" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Geplant" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Importordner" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "API-Upload" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "E-Mail-Abruf" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Weboberfläche" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Geändert" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Benutzerdefiniertes Feld" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" -msgstr "Workflow-Auslösertyp" +msgstr "Arbeitsablauf-Auslösertyp" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "Pfad filtern" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Nur Dokumente, die mit diesem Pfad (falls angegeben) übereinstimmen, verarbeiten. Platzhalter wie * sind erlaubt. Groß- und Kleinschreibung wird nicht beachtet." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "Dateinamen filtern" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Nur Dokumente, die vollständig mit diesem Dateinamen (falls angegeben) übereinstimmen, verarbeiten. Platzhalter wie *.pdf oder *rechnung* sind erlaubt. Groß- und Kleinschreibung wird nicht beachtet." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "Dokumente aus dieser E-Mail-Regel filtern" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "hat diese(n) Tag(s)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "hat alle diese Tags" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "hat diese Tags nicht" + +#: documents/models.py:1087 msgid "has this document type" msgstr "hat diesen Dokumenttyp" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "hat diese Dokumenttypen nicht" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "hat diesen Korrespondenten" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "Hat diesen Speicherpfad" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "hat diese Korrespondenten nicht" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "hat diesen Speicherpfad" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "hat diese Speicherpfade nicht" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "Filtern Benutzerdefinierte Feldabfrage" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "JSON-kodierte Abfrage eines benutzerdefinierten Felds." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "Zeitplanversatz (Tage)" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Die Anzahl der Tage, um die der Zeitplanauslöser verschoben werden soll." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "Zeitplan wiederholt sich" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Ob der Zeitplan wiederholt werden soll." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "Zeitplan-Wiederholungsverzögerung in Tagen" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Die Anzahl der Tage zwischen wiederkehrenden Zeitplanauslösern." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "Zeitplan-Datumsfeld" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Das zu prüfende Feld für einen Zeitplanauslöser." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "Benutzerdefiniertes Zeitplan-Datumsfeld" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "Arbeitsablauf-Auslöser" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "Arbeitsablauf-Auslöser" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "E-Mail-Betreff" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Der Betreff der E-Mail kann Platzhalter beinhalten, siehe Dokumentation." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "E-Mail-Inhalt" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Der Text der E-Mail kann Platzhalter beinhalten, siehe Dokumentation." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "E-Mails an" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Die Empfänger-E-Mail-Adressen, kommagetrennt." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "Dokument in E-Mail einbeziehen" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "Webhook-URL" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "Die Ziel-URL für die Benachrichtigung." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "verwende Parameter" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "als JSON senden" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "Webhook-Parameter" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Die Parameter, die mit der Webhook-URL gesendet werden sollen, wenn kein Inhalt verwendet wird." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "Webhook-Inhalt" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Der Inhalt, der mit der Webhook-URL gesendet werden soll, wenn Parameter nicht verwendet werden." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "Webhook-Kopfzeilen" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Die Kopfzeilen, die mit der Webhook-URL gesendet werden sollen." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "Dokument in Webhook einbeziehen" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Zuordnung" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Entfernung" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-Mail" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Arbeitsablauf-Aktionstyp" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "Titel zuweisen" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "Dokumen-Titel zuweisen (muss eine Jinja2-Vorlage sein, siehe Dokumentation)." +msgstr "Dokumenttitel zuweisen (muss eine Jinja2-Vorlage sein, siehe Dokumentation)." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "Dieses Tag zuweisen" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "Diesen Dokumenttyp zuweisen" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "Diesen Korrespondenten zuweisen" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "Diesen Speicherpfad zuweisen" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "Diesen Eigentümer zuordnen" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "Diesen Benutzern Anzeigeberechtigungen erteilen" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "Diesen Gruppen Anzeigeberechtigungen erteilen" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "Diesen Benutzern Bearbeitungsberechtigungen erteilen" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "Diesen Gruppen Bearbeitungsberechtigungen erteilen" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "Diese benutzerdefinierten Felder zuweisen" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "Benutzerdefinierte Feldwerte" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Optionale Werte, die den benutzerdefinierten Feldern zugewiesen werden." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "Diese(n) Tag(s) entfernen" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "Alle Tags entfernen" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "Diese(n) Dokumenttyp(en) entfernen" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "Alle Dokumenttypen entfernen" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "Diese(n) Korrespondenten entfernen" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "Alle Korrespondenten entfernen" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "Diese(n) Speicherpfad(e) entfernen" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "Alle Speicherpfade entfernen" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "Diese(n) Eigentümer entfernen" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "Alle Eigentümer entfernen" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "Anzeigeberechtigungen für diese Benutzer entfernen" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "Anzeigeberechtigungen für diese Gruppen entfernen" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "Bearbeitungsberechtigungen für diese Benutzer entfernen" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "Bearbeitungsberechtigungen für diese Gruppen entfernen" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "Alle Berechtigungen entfernen" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "Diese benutzerdefinierten Felder entfernen" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "Alle benutzerdefinierten Felder entfernen" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "E-Mail" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "Webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" -msgstr "Workflow-Aktion" +msgstr "Arbeitsablauf-Aktion" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" -msgstr "Workflow-Aktionen" +msgstr "Arbeitsablauf-Aktionen" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "Reihenfolge" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "Auslöser" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "Aktionen" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "aktiviert" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "Arbeitsablauf" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "Arbeitsablauf-Auslösertyp" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "Ausführungsdatum" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "Arbeitsablauf-Ausführung" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "Arbeitsablauf wird ausgeführt" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Ungültiger regulärer Ausdruck: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Ungültige Farbe." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Dateityp %(type)s nicht unterstützt" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "id eines benutzerdefinierten Felds muss eine Ganzzahl sein: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Benutzerdefiniertes Feld mit ID %(id)s existiert nicht" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Benutzerdefinierte Felder müssen eine Liste von Ganzzahlen oder ein Objekt mit Zuordnung von IDs zu Werten sein." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Einige benutzerdefinierte Felder existieren nicht oder wurden zweimal angegeben." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Ungültige Variable erkannt." @@ -1627,151 +1676,151 @@ msgstr "Legt die Tag-Barcode-Zuweisung fest" msgid "paperless application settings" msgstr "Paperless-ngx-Anwendungseinstellungen" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Englisch (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabisch" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikanisch" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Belarussisch" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bulgarisch" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalanisch" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tschechisch" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dänisch" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Deutsch" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Griechisch" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Englisch (UK)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spanisch" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Persisch" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finnisch" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Französisch" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Ungarisch" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italienisch" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japanisch" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Koreanisch" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburgisch" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norwegisch" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Niederländisch" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polnisch" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugiesisch (Brasilien)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugiesisch" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumänisch" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russisch" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slowakisch" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slowenisch" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbisch" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Schwedisch" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Türkisch" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukrainisch" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vietnamesisch" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Chinesisch (vereinfacht)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Chinesisch (traditionell)" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx Administration" diff --git a/src/locale/el_GR/LC_MESSAGES/django.po b/src/locale/el_GR/LC_MESSAGES/django.po index 7d28d7416..45ba6e69f 100644 --- a/src/locale/el_GR/LC_MESSAGES/django.po +++ b/src/locale/el_GR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Έγγραφα" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Η τιμή πρέπει να είναι σε έγκυρη μορφή JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Μη έγκυρη έκφραση προσαρμοσμένου ερωτήματος πεδίου" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Μη έγκυρη λίστα έκφρασης. Πρέπει να είναι μη κενή." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Μη έγκυρος λογικός τελεστής {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Υπέρβαση μέγιστου αριθμού συνθηκών ερωτήματος." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "Το προσαρμοσμένο πεδίο {name!r} δεν είναι ένα έγκυρο." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "Το {data_type} δεν υποστηρίζει το ερώτημα expr {expr!r}s." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Υπέρβαση μέγιστου βάθους εμφώλευσης." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Το προσαρμοσμένο πεδίο δε βρέθηκε" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "ιδιοκτήτης" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Τίποτα" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Οποιαδήποτε λέξη" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Όλες οι λέξεις" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Ακριβής ταύτιση" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Κανονική έκφραση" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Ασαφής λέξη" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Αυτόματο" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "όνομα" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "αντιστοίχιση" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "αλγόριθμος αντιστοίχισης" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "χωρίς διάκριση πεζών - κεφαλαίων" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "ανταποκριτής" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "ανταποκριτές" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "χρώμα" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "είναι ετικέτα εισερχόμενων" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Μαρκάρει αυτή την ετικέτα ως ετικέτα εισερχόμενων: Όλα τα πρόσφατα καταναλωθέντα έγγραφα θα επισημαίνονται με ετικέτες εισερχόμενων." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "ετικέτα" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "ετικέτες" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "τύπος εγγράφου" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "τύποι εγγράφων" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "διαδρομή" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "διαδρομή αποθήκευσης" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "διαδρομές αποθήκευσης" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Μη Κρυπτογραφημένο" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Κρυπτογραφημένο με GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "τίτλος" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "περιεχόμενο" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Τα ωμά δεδομένα μόνο κειμένου του εγγράφου. Αυτό το πεδίο χρησιμοποιείται κυρίως για αναζήτηση." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "τύπος Mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "checksum" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Το checksum του αρχικού εγγράφου." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "checksum αρχειοθέτησης" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Το checksum του αρχειοθετημένου εγγράφου." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "αριθμός σελίδων" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Ο αριθμός σελίδων του εγγράφου." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "δημιουργήθηκε" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "τροποποιήθηκε" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "τύπος αποθήκευσης" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "προστέθηκε" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "όνομα αρχείου" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Τρέχον όνομα αρχείου στον αποθηκευτικό χώρο" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "όνομα αρχείου αρχειοθήκης" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Τρέχον όνομα αρχείου αρχειοθήκης στον αποθηκευτικό χώρο" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "πρωτότυπο όνομα αρχείου" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Το αρχικό όνομα του αρχείου όταν μεταφορτώθηκε" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "σειριακός αριθμός αρχειοθέτησης" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Η θέση αυτού του εγγράφου στο αρχείο φυσικών εγγράφων σας." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "αρχείο" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "αρχεία" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Πίνακας" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Μικρές Κάρτες" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Μεγάλες Κάρτες" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Τίτλος" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Δημιουργήθηκε" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Προστέθηκε" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Ετικέτες" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Αντίστοιχος" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Τύπος εγγράφου" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Χώρος αποθήκευσης" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Σημείωση" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Κάτοχος" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Κοινοποιήθηκε" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Σελίδες" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "εμφάνιση στο Ταμπλό" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "προβολή στην πλευρική στήλη" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "πεδίο ταξινόμησης" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "αντίστροφη ταξινόμηση" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Προβολή μεγέθους σελίδας" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Λειτουργία προβολής" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Εμφάνιση πεδίων του εγγράφου" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "αποθηκευμένη προβολή" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "αποθηκευμένες προβολές" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "ο τίτλος περιέχει" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "το περιεχόμενο περιέχει" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "Το ASN είναι" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "ο ανταποκριτής είναι" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "ο τύπος εγγράφου είναι" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "είναι στα εισερχόμενα" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "έχει ετικέτα" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "έχει οποιαδήποτε ετικέτα" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "δημιουργήθηκε πριν από" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "δημιουργήθηκε μετά από" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "το έτος δημιουργίας είναι" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "ο μήνας δημιουργίας είναι" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "η ημέρα δημιουργίας είναι" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "προστέθηκε πριν" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "προστέθηκε μετά" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "τροποποιήθηκε πριν" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "τροποποιήθηκε μετά" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "δεν έχει ετικέτα" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "δεν έχει ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "ο τίτλος ή το περιεχόμενο περιέχει" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "ερώτημα πλήρους κειμένου" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "περισσότερα σαν αυτό" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "έχει ετικέτες σε" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN μεγαλύτερο από" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN μικρότερο από" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "η διαδρομή αποθήκευσης είναι" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "έχει ανταποκριτή σε" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "δεν έχει ανταποκριτή σε" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "έχει τύπο εγγράφου σε" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "δεν έχει τύπο εγγράφου σε" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "έχει διαδρομή αποθήκευσης σε" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "δεν έχει διαδρομή αποθήκευσης σε" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "ο ιδιοκτήτης είναι" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "έχει ιδιοκτήτη σε" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "δεν έχει ιδιοκτήτη" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "δεν έχει ιδιοκτήτη σε" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "έχει προσαρμοσμένη τιμή πεδίου" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "μοιράζεται από μένα" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "έχει προσαρμοσμένα πεδία" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "έχει προσαρμοσμένα πεδία στο" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "δεν έχει προσαρμοσμένο πεδίο στο" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "δεν έχει προσαρμοσμένο πεδίο" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "ερώτημα προσαρμοσμένων πεδίων" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "δημιουργήθηκε στο" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "δημιουργήθηκαν από" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "προστέθηκε στο" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "προστέθηκε από" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "ο τύπος mime είναι" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "τύπος κανόνα" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "τιμή" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "κανόνας φίλτρου" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "κανόνες φίλτρων" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Αυτόματη Εργασία" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Προγραμματισμένες Εργασίες" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Χειροκίνητη Εργασία" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Κατανάλωση Αρχείου" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Εκπαίδευση Ταξινομητή" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Έλεγχος Υγείας" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Βελτιστοποίηση Ευρετηρίου" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Task ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID για την εργασία που εκτελέστηκε" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Αναγνωρίστηκε" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Εάν η εργασία αναγνωρίζεται μέσω του frontend ή του API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Όνομα Αρχείου Εργασίας" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Όνομα του αρχείου για το οποίο εκτελέστηκε η εργασία" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Όνομα Εργασίας" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Όνομα της εργασίας που εκτελέστηκε" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Κατάσταση Εργασίας" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Τρέχουσα κατάσταση εκτέλεσης της εργασίας" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Ημερομηνία/Ώρα Δημιουργίας" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Πεδίο ημερομηνίας/ώρας κατά τη δημιουργία της εργασίας σε UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Ημερομηνία/Ώρα Έναρξης" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Πεδίο ημερομηνίας/ώρας κατά την έναρξη της εργασίας σε UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Ημερομηνία/Ώρα Ολοκλήρωσης" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Πεδίο ημερομηνίας/ώρας κατά την ολοκλήρωση της εργασίας σε UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Αποτέλεσμα Δεδομένων" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Τα δεδομένα που επιστράφηκαν από την εργασία" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Τύπος Εργασίας" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Ο τύπος εργασίας που εκτελέστηκε" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Σημείωση για το έγγραφο" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "χρήστης" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "σημείωση" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "σημειώσεις" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Αρχειοθέτηση" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Πρωτότυπο" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "λήξη" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "κοινοποίηση συνδέσμου" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "κοινοποίηση συνδέσμων" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Συμβολοσειρά" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Ημερομηνία" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Δυαδικές τιμές" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Ακέραιος" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Δεκαδικός" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Νομισματικό" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Σύνδεσμος Εγγράφου" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Επιλογή" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "τύπος δεδομένων" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "περισσότερα δεδομένα" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Επιπλέον δεδομένα για το προσαρμοσμένο πεδίο, όπως επιλογή περιπτώσεων" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "προσαρμοσμένο πεδίο" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "προσαρμοσμένα πεδία" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "στιγμιότυπο προσαρμοσμένου πεδίου" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "στιγμιότυπα προσαρμοσμένων πεδίων" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Η Κατανάλωση Ξεκίνησε" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Το έγγραφο προστέθηκε" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Το έγγραφο ενημερώθηκε" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Προγραμματισμένα" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Φάκελος Κατανάλωσης" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Μεταφόρτωση μέσω API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Λήψη Αλληλογραφίας" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Περιβάλλον Web" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Τροποποιήθηκε" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Προσαρμοσμένα πεδία" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Τύπος Ενεργοποίησης Ροής Εργασιών" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "διαδρομή φίλτρου" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Μόνο κατανάλωση εγγράφων με μια διαδρομή που ταιριάζει με αυτό αν έχει καθοριστεί. Επιτρέπεται η χρήση μπαλαντέρ που ορίζεται ως *. Χωρίς διάκριση πεζών-κεφαλαίων." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "φιλτράρισμα ονόματος αρχείου" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Μόνο κατανάλωση αρχείων που ταιριάζουν απόλυτα με το όνομα αρχείου, εάν καθοριστεί. Επιτρέπεται η χρήση μπαλαντέρ όπως *.pdf ή *invoice*. Δεν υπάρχει έλεγχος πεζών/κεφαλαίων." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "φιλτράρισμα εγγράφων από αυτόν τον κανόνα αλληλογραφίας" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "έχει αυτές τις ετικέτες(α)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "έχει αυτόν τον τύπο εγγράφου" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "έχει αυτόν τον ανταποκριτή" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "προγραμματισμός μετατόπισης ημερών του χρονοδιαγράμματος" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Ο αριθμός των ημερών για την αντιστάθμιση της ενεργοποίησης του χρονοδιαγράμματος." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "το χρονοδιάγραμμα είναι επαναλαμβανόμενο" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Εάν το χρονοδιάγραμμα πρέπει να επαναληφθεί." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "προγραμματισμός επαναλαμβανόμενης καθυστέρησης σε ημέρες" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Ο αριθμός των ημερών μεταξύ των επαναλαμβανόμενων εναυσμάτων χρονοδιαγράμματος." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "πεδίο ημερομηνίας προγράμματος" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Το πεδίο για έλεγχο για ένα χρονοδιάγραμμα ενεργοποίησης." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "προσαρμοσμένο πεδίο ημερομηνίας προγράμματος" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "ενεργοποίηση ροής εργασιών" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "εναύσματα ροής εργασιών" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "θέμα email" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Το θέμα του email, μπορεί να περιλαμβάνει ορισμένα placeholders, δείτε την τεκμηρίωση." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "σώμα email" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Το σώμα (μήνυμα) του ηλεκτρονικού ταχυδρομείου, μπορεί να περιλαμβάνει ορισμένα placeholders, δείτε την τεκμηρίωση." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "emails προς" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Οι διευθύνσεις email προορισμού, χωρισμένες με κόμμα." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "συμπεριλάβετε έγγραφο στο email" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "webhook url" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "Το URL προορισμού για την ειδοποίηση." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "χρήση παραμέτρων" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "αποστολή ως JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "παράμετροι του webhook" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Οι παράμετροι για αποστολή με τη διεύθυνση URL αν δε χρησιμοποιηθεί το σώμα του webhook." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "σώμα webhook" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Το σώμα του webhook που θα στείλει με το URL αν δε χρησιμοποιηθούν παράμετροι." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "κεφαλίδες webhook" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Οι κεφαλίδες που θα αποσταλούν με το URL του webhook." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "συμπεριλάβετε το έγγραφο στο webhook" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Ανάθεση" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Απομάκρυνση" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-mail" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Τύπος Ενέργειας Ροής Εργασίας" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "ανάθεση τίτλου" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "ανάθεση αυτής της ετικέτας" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "ανάθεση αυτού του τύπου εγγράφου" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "ανάθεση αυτού του ανταποκριτή" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "ανάθεση αυτής της διαδρομής αποθήκευσης" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "ανάθεση αυτού του ιδιοκτήτη" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "εκχώρηση δικαιωμάτων προβολής σε αυτούς τους χρήστες" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "εκχώρηση δικαιωμάτων προβολής σε αυτές τις ομάδες" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "εκχώρηση δικαιωμάτων μεταβολής σε αυτές τις ομάδες" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "εκχώρηση δικαιωμάτων μεταβολής σε αυτές τις ομάδες" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "αντιστοιχίστε αυτά τα προσαρμοσμένα πεδία" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "προσαρμοσμένες τιμές πεδίου" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Προαιρετικές τιμές για να εκχωρήσετε στα προσαρμοσμένα πεδία." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "αφαίρεσε αυτή την ετικέτα(ες)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "αφαίρεση όλων των ετικετών" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "αφαίρεσε αυτούς τους τύπους εγγράφων" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "κατάργηση όλων των τύπων εγγράφων" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "αφαίρεσε αυτούς τους ανταποκριτές(ές)" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "αφαίρεση όλων των παραληπτών" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "αφαίρεσε αυτή τη διαδρομή(ες) αποθήκευσης" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "κατάργηση όλων των διαδρομών αποθήκευσης" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "αφαίρεσε αυτόν τον ιδιοκτήτη(ες)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "αφαίρεση όλων των κατόχων" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "αφαιρέστε τα δικαιώματα προβολής για αυτούς τους χρήστες" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "αφαιρέστε τα δικαιώματα προβολής για αυτούς τις ομάδες" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "αφαιρέστε τα δικαιώματα αλλαγής για αυτούς τους χρήστες" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "αφαιρέστε τα δικαιώματα αλλαγής από αυτές τις ομάδες" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "κατάργηση όλων των δικαιωμάτων" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "αφαίρεσε αυτά τα προσαρμοσμένα πεδία" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "αφαίρεση όλων των προσαρμοσμένων πεδίων" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "ενέργεια ροής εργασίας" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "ενέργειες ροής εργασίας" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "σειρά" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "εναύσματα" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "ενέργειες" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "ενεργοποιημένο" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "ροή εργασίας" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "τύπος εναύσματος ροής εργασίας" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "εκτέλεση με ημερομηνία" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "εκτέλεση ροής εργασίας" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "εκτελέσεις ροής εργασίας" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Άκυρη έκφραση: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Άκυρο χρώμα." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Ο τύπος αρχείου %(type)s δεν υποστηρίζεται" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Εντοπίστηκε μη έγκυρη μεταβλητή." @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "ρυθμίσεις εφαρμογής paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Αγγλικά (ΗΠΑ)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Αραβικά" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Αφρικανικά" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Λευκορωσικά" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Βουλγαρικά" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Καταλανικά" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Τσέχικα" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Δανέζικα" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Γερμανικά" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Ελληνικά" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Αγγλικά (Ηνωμένο Βασίλειο)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Ισπανικά" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Φινλανδικά" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Γαλλικά" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Ουγγρικά" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Ιταλικά" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Ιαπωνικά" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Κορεάτικα" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Λουξεμβουργικά" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Νορβηγικά" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Ολλανδικά" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Πολωνικά" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Πορτογαλικά (Βραζιλίας)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Πορτογαλικά" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Ρουμάνικα" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Ρωσικά" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Σλοβακικά" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Σλοβενικά" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Σερβικά" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Σουηδικά" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Τούρκικα" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ουκρανικά" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Κινέζικα Απλοποιημένα" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Κινεζικά Παραδοσιακά" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Διαχείριση Paperless-ngx" diff --git a/src/locale/en_US/LC_MESSAGES/django.po b/src/locale/en_US/LC_MESSAGES/django.po index 1b3bc6d06..1641f1ef2 100644 --- a/src/locale/en_US/LC_MESSAGES/django.po +++ b/src/locale/en_US/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-17 22:44+0000\n" +"POT-Creation-Date: 2026-02-03 20:10+0000\n" "PO-Revision-Date: 2022-02-17 04:17\n" "Last-Translator: \n" "Language-Team: English\n" @@ -21,1217 +21,1313 @@ msgstr "" msgid "Documents" msgstr "" -#: documents/filters.py:386 +#: documents/filters.py:396 msgid "Value must be valid JSON." msgstr "" -#: documents/filters.py:405 +#: documents/filters.py:415 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:425 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:446 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:460 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:525 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:562 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 documents/models.py:135 +#: documents/filters.py:670 documents/models.py:137 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:878 msgid "Custom field not found" msgstr "" -#: documents/models.py:38 documents/models.py:768 +#: documents/models.py:40 documents/models.py:757 documents/models.py:805 msgid "owner" msgstr "" -#: documents/models.py:55 documents/models.py:983 +#: documents/models.py:57 documents/models.py:1080 msgid "None" msgstr "" -#: documents/models.py:56 documents/models.py:984 +#: documents/models.py:58 documents/models.py:1081 msgid "Any word" msgstr "" -#: documents/models.py:57 documents/models.py:985 +#: documents/models.py:59 documents/models.py:1082 msgid "All words" msgstr "" -#: documents/models.py:58 documents/models.py:986 +#: documents/models.py:60 documents/models.py:1083 msgid "Exact match" msgstr "" -#: documents/models.py:59 documents/models.py:987 +#: documents/models.py:61 documents/models.py:1084 msgid "Regular expression" msgstr "" -#: documents/models.py:60 documents/models.py:988 +#: documents/models.py:62 documents/models.py:1085 msgid "Fuzzy word" msgstr "" -#: documents/models.py:61 +#: documents/models.py:63 msgid "Automatic" msgstr "" -#: documents/models.py:64 documents/models.py:456 documents/models.py:1484 +#: documents/models.py:66 documents/models.py:444 documents/models.py:1659 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "" -#: documents/models.py:66 documents/models.py:1052 +#: documents/models.py:68 documents/models.py:1149 msgid "match" msgstr "" -#: documents/models.py:69 documents/models.py:1055 +#: documents/models.py:71 documents/models.py:1152 msgid "matching algorithm" msgstr "" -#: documents/models.py:74 documents/models.py:1060 +#: documents/models.py:76 documents/models.py:1157 msgid "is insensitive" msgstr "" -#: documents/models.py:97 documents/models.py:170 +#: documents/models.py:99 documents/models.py:165 msgid "correspondent" msgstr "" -#: documents/models.py:98 +#: documents/models.py:100 msgid "correspondents" msgstr "" -#: documents/models.py:102 +#: documents/models.py:104 msgid "color" msgstr "" -#: documents/models.py:107 +#: documents/models.py:109 msgid "is inbox tag" msgstr "" -#: documents/models.py:110 +#: documents/models.py:112 msgid "" "Marks this tag as an inbox tag: All newly consumed documents will be tagged " "with inbox tags." msgstr "" -#: documents/models.py:116 +#: documents/models.py:118 msgid "tag" msgstr "" -#: documents/models.py:117 documents/models.py:208 +#: documents/models.py:119 documents/models.py:212 msgid "tags" msgstr "" -#: documents/models.py:123 +#: documents/models.py:125 msgid "Cannot set itself as parent." msgstr "" -#: documents/models.py:125 +#: documents/models.py:127 msgid "Cannot set parent to a descendant." msgstr "" -#: documents/models.py:142 documents/models.py:190 +#: documents/models.py:144 documents/models.py:185 msgid "document type" msgstr "" -#: documents/models.py:143 +#: documents/models.py:145 msgid "document types" msgstr "" -#: documents/models.py:148 +#: documents/models.py:150 msgid "path" msgstr "" -#: documents/models.py:152 documents/models.py:179 +#: documents/models.py:154 documents/models.py:174 msgid "storage path" msgstr "" -#: documents/models.py:153 +#: documents/models.py:155 msgid "storage paths" msgstr "" -#: documents/models.py:160 -msgid "Unencrypted" -msgstr "" - -#: documents/models.py:161 -msgid "Encrypted with GNU Privacy Guard" -msgstr "" - -#: documents/models.py:182 +#: documents/models.py:177 msgid "title" msgstr "" -#: documents/models.py:194 documents/models.py:682 +#: documents/models.py:189 documents/models.py:671 msgid "content" msgstr "" -#: documents/models.py:197 +#: documents/models.py:192 msgid "" "The raw, text-only data of the document. This field is primarily used for " "searching." msgstr "" -#: documents/models.py:202 +#: documents/models.py:206 msgid "mime type" msgstr "" -#: documents/models.py:212 +#: documents/models.py:216 msgid "checksum" msgstr "" -#: documents/models.py:216 +#: documents/models.py:219 msgid "The checksum of the original document." msgstr "" -#: documents/models.py:220 +#: documents/models.py:223 msgid "archive checksum" msgstr "" -#: documents/models.py:225 +#: documents/models.py:228 msgid "The checksum of the archived document." msgstr "" -#: documents/models.py:229 +#: documents/models.py:232 msgid "page count" msgstr "" -#: documents/models.py:236 +#: documents/models.py:239 msgid "The number of pages of the document." msgstr "" -#: documents/models.py:241 documents/models.py:688 documents/models.py:726 -#: documents/models.py:798 documents/models.py:857 +#: documents/models.py:244 documents/models.py:677 documents/models.py:715 +#: documents/models.py:777 documents/models.py:895 documents/models.py:954 msgid "created" msgstr "" -#: documents/models.py:247 +#: documents/models.py:250 msgid "modified" msgstr "" -#: documents/models.py:254 -msgid "storage type" -msgstr "" - -#: documents/models.py:262 +#: documents/models.py:257 msgid "added" msgstr "" -#: documents/models.py:269 +#: documents/models.py:264 msgid "filename" msgstr "" -#: documents/models.py:275 +#: documents/models.py:270 msgid "Current filename in storage" msgstr "" -#: documents/models.py:279 +#: documents/models.py:274 msgid "archive filename" msgstr "" -#: documents/models.py:285 +#: documents/models.py:280 msgid "Current archive filename in storage" msgstr "" -#: documents/models.py:289 +#: documents/models.py:284 msgid "original filename" msgstr "" -#: documents/models.py:295 +#: documents/models.py:290 msgid "The original name of the file when it was uploaded" msgstr "" -#: documents/models.py:302 +#: documents/models.py:297 msgid "archive serial number" msgstr "" -#: documents/models.py:312 +#: documents/models.py:307 msgid "The position of this document in your physical document archive." msgstr "" -#: documents/models.py:318 documents/models.py:699 documents/models.py:753 -#: documents/models.py:1527 +#: documents/models.py:313 documents/models.py:688 documents/models.py:742 +#: documents/models.py:1702 msgid "document" msgstr "" -#: documents/models.py:319 +#: documents/models.py:314 documents/models.py:848 msgid "documents" msgstr "" -#: documents/models.py:437 +#: documents/models.py:425 msgid "Table" msgstr "" -#: documents/models.py:438 +#: documents/models.py:426 msgid "Small Cards" msgstr "" -#: documents/models.py:439 +#: documents/models.py:427 msgid "Large Cards" msgstr "" -#: documents/models.py:442 +#: documents/models.py:430 msgid "Title" msgstr "" -#: documents/models.py:443 documents/models.py:1004 +#: documents/models.py:431 documents/models.py:1101 msgid "Created" msgstr "" -#: documents/models.py:444 documents/models.py:1003 +#: documents/models.py:432 documents/models.py:1100 msgid "Added" msgstr "" -#: documents/models.py:445 +#: documents/models.py:433 msgid "Tags" msgstr "" -#: documents/models.py:446 +#: documents/models.py:434 msgid "Correspondent" msgstr "" -#: documents/models.py:447 +#: documents/models.py:435 msgid "Document Type" msgstr "" -#: documents/models.py:448 +#: documents/models.py:436 msgid "Storage Path" msgstr "" -#: documents/models.py:449 +#: documents/models.py:437 msgid "Note" msgstr "" -#: documents/models.py:450 +#: documents/models.py:438 msgid "Owner" msgstr "" -#: documents/models.py:451 +#: documents/models.py:439 msgid "Shared" msgstr "" -#: documents/models.py:452 +#: documents/models.py:440 msgid "ASN" msgstr "" -#: documents/models.py:453 +#: documents/models.py:441 msgid "Pages" msgstr "" -#: documents/models.py:459 +#: documents/models.py:447 msgid "show on dashboard" msgstr "" -#: documents/models.py:462 +#: documents/models.py:450 msgid "show in sidebar" msgstr "" -#: documents/models.py:466 +#: documents/models.py:454 msgid "sort field" msgstr "" -#: documents/models.py:471 +#: documents/models.py:459 msgid "sort reverse" msgstr "" -#: documents/models.py:474 +#: documents/models.py:462 msgid "View page size" msgstr "" -#: documents/models.py:482 +#: documents/models.py:470 msgid "View display mode" msgstr "" -#: documents/models.py:489 +#: documents/models.py:477 msgid "Document display fields" msgstr "" -#: documents/models.py:496 documents/models.py:559 +#: documents/models.py:484 documents/models.py:547 msgid "saved view" msgstr "" -#: documents/models.py:497 +#: documents/models.py:485 msgid "saved views" msgstr "" -#: documents/models.py:505 +#: documents/models.py:493 msgid "title contains" msgstr "" -#: documents/models.py:506 +#: documents/models.py:494 msgid "content contains" msgstr "" -#: documents/models.py:507 +#: documents/models.py:495 msgid "ASN is" msgstr "" -#: documents/models.py:508 +#: documents/models.py:496 msgid "correspondent is" msgstr "" -#: documents/models.py:509 +#: documents/models.py:497 msgid "document type is" msgstr "" -#: documents/models.py:510 +#: documents/models.py:498 msgid "is in inbox" msgstr "" -#: documents/models.py:511 +#: documents/models.py:499 msgid "has tag" msgstr "" -#: documents/models.py:512 +#: documents/models.py:500 msgid "has any tag" msgstr "" -#: documents/models.py:513 +#: documents/models.py:501 msgid "created before" msgstr "" -#: documents/models.py:514 +#: documents/models.py:502 msgid "created after" msgstr "" -#: documents/models.py:515 +#: documents/models.py:503 msgid "created year is" msgstr "" -#: documents/models.py:516 +#: documents/models.py:504 msgid "created month is" msgstr "" -#: documents/models.py:517 +#: documents/models.py:505 msgid "created day is" msgstr "" -#: documents/models.py:518 +#: documents/models.py:506 msgid "added before" msgstr "" -#: documents/models.py:519 +#: documents/models.py:507 msgid "added after" msgstr "" -#: documents/models.py:520 +#: documents/models.py:508 msgid "modified before" msgstr "" -#: documents/models.py:521 +#: documents/models.py:509 msgid "modified after" msgstr "" -#: documents/models.py:522 +#: documents/models.py:510 msgid "does not have tag" msgstr "" -#: documents/models.py:523 +#: documents/models.py:511 msgid "does not have ASN" msgstr "" -#: documents/models.py:524 +#: documents/models.py:512 msgid "title or content contains" msgstr "" -#: documents/models.py:525 +#: documents/models.py:513 msgid "fulltext query" msgstr "" -#: documents/models.py:526 +#: documents/models.py:514 msgid "more like this" msgstr "" -#: documents/models.py:527 +#: documents/models.py:515 msgid "has tags in" msgstr "" -#: documents/models.py:528 +#: documents/models.py:516 msgid "ASN greater than" msgstr "" -#: documents/models.py:529 +#: documents/models.py:517 msgid "ASN less than" msgstr "" -#: documents/models.py:530 +#: documents/models.py:518 msgid "storage path is" msgstr "" -#: documents/models.py:531 +#: documents/models.py:519 msgid "has correspondent in" msgstr "" -#: documents/models.py:532 +#: documents/models.py:520 msgid "does not have correspondent in" msgstr "" -#: documents/models.py:533 +#: documents/models.py:521 msgid "has document type in" msgstr "" -#: documents/models.py:534 +#: documents/models.py:522 msgid "does not have document type in" msgstr "" -#: documents/models.py:535 +#: documents/models.py:523 msgid "has storage path in" msgstr "" -#: documents/models.py:536 +#: documents/models.py:524 msgid "does not have storage path in" msgstr "" -#: documents/models.py:537 +#: documents/models.py:525 msgid "owner is" msgstr "" -#: documents/models.py:538 +#: documents/models.py:526 msgid "has owner in" msgstr "" -#: documents/models.py:539 +#: documents/models.py:527 msgid "does not have owner" msgstr "" -#: documents/models.py:540 +#: documents/models.py:528 msgid "does not have owner in" msgstr "" -#: documents/models.py:541 +#: documents/models.py:529 msgid "has custom field value" msgstr "" -#: documents/models.py:542 +#: documents/models.py:530 msgid "is shared by me" msgstr "" -#: documents/models.py:543 +#: documents/models.py:531 msgid "has custom fields" msgstr "" -#: documents/models.py:544 +#: documents/models.py:532 msgid "has custom field in" msgstr "" -#: documents/models.py:545 +#: documents/models.py:533 msgid "does not have custom field in" msgstr "" -#: documents/models.py:546 +#: documents/models.py:534 msgid "does not have custom field" msgstr "" -#: documents/models.py:547 +#: documents/models.py:535 msgid "custom fields query" msgstr "" -#: documents/models.py:548 +#: documents/models.py:536 msgid "created to" msgstr "" -#: documents/models.py:549 +#: documents/models.py:537 msgid "created from" msgstr "" -#: documents/models.py:550 +#: documents/models.py:538 msgid "added to" msgstr "" -#: documents/models.py:551 +#: documents/models.py:539 msgid "added from" msgstr "" -#: documents/models.py:552 +#: documents/models.py:540 msgid "mime type is" msgstr "" -#: documents/models.py:562 +#: documents/models.py:550 msgid "rule type" msgstr "" -#: documents/models.py:564 +#: documents/models.py:552 msgid "value" msgstr "" -#: documents/models.py:567 +#: documents/models.py:555 msgid "filter rule" msgstr "" -#: documents/models.py:568 +#: documents/models.py:556 msgid "filter rules" msgstr "" -#: documents/models.py:592 +#: documents/models.py:580 msgid "Auto Task" msgstr "" -#: documents/models.py:593 +#: documents/models.py:581 msgid "Scheduled Task" msgstr "" -#: documents/models.py:594 +#: documents/models.py:582 msgid "Manual Task" msgstr "" -#: documents/models.py:597 +#: documents/models.py:585 msgid "Consume File" msgstr "" -#: documents/models.py:598 +#: documents/models.py:586 msgid "Train Classifier" msgstr "" -#: documents/models.py:599 +#: documents/models.py:587 msgid "Check Sanity" msgstr "" -#: documents/models.py:600 +#: documents/models.py:588 msgid "Index Optimize" msgstr "" -#: documents/models.py:605 +#: documents/models.py:589 +msgid "LLM Index Update" +msgstr "" + +#: documents/models.py:594 msgid "Task ID" msgstr "" -#: documents/models.py:606 +#: documents/models.py:595 msgid "Celery ID for the Task that was run" msgstr "" -#: documents/models.py:611 +#: documents/models.py:600 msgid "Acknowledged" msgstr "" -#: documents/models.py:612 +#: documents/models.py:601 msgid "If the task is acknowledged via the frontend or API" msgstr "" -#: documents/models.py:618 +#: documents/models.py:607 msgid "Task Filename" msgstr "" -#: documents/models.py:619 +#: documents/models.py:608 msgid "Name of the file which the Task was run for" msgstr "" -#: documents/models.py:626 +#: documents/models.py:615 msgid "Task Name" msgstr "" -#: documents/models.py:627 +#: documents/models.py:616 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:634 +#: documents/models.py:623 msgid "Task State" msgstr "" -#: documents/models.py:635 +#: documents/models.py:624 msgid "Current state of the task being run" msgstr "" -#: documents/models.py:641 +#: documents/models.py:630 msgid "Created DateTime" msgstr "" -#: documents/models.py:642 +#: documents/models.py:631 msgid "Datetime field when the task result was created in UTC" msgstr "" -#: documents/models.py:648 +#: documents/models.py:637 msgid "Started DateTime" msgstr "" -#: documents/models.py:649 +#: documents/models.py:638 msgid "Datetime field when the task was started in UTC" msgstr "" -#: documents/models.py:655 +#: documents/models.py:644 msgid "Completed DateTime" msgstr "" -#: documents/models.py:656 +#: documents/models.py:645 msgid "Datetime field when the task was completed in UTC" msgstr "" -#: documents/models.py:662 +#: documents/models.py:651 msgid "Result Data" msgstr "" -#: documents/models.py:664 +#: documents/models.py:653 msgid "The data returned by the task" msgstr "" -#: documents/models.py:672 +#: documents/models.py:661 msgid "Task Type" msgstr "" -#: documents/models.py:673 +#: documents/models.py:662 msgid "The type of task that was run" msgstr "" -#: documents/models.py:684 +#: documents/models.py:673 msgid "Note for the document" msgstr "" -#: documents/models.py:708 +#: documents/models.py:697 msgid "user" msgstr "" -#: documents/models.py:713 +#: documents/models.py:702 msgid "note" msgstr "" -#: documents/models.py:714 +#: documents/models.py:703 msgid "notes" msgstr "" -#: documents/models.py:722 +#: documents/models.py:711 msgid "Archive" msgstr "" -#: documents/models.py:723 +#: documents/models.py:712 msgid "Original" msgstr "" -#: documents/models.py:734 paperless_mail/models.py:75 +#: documents/models.py:723 documents/models.py:785 paperless_mail/models.py:75 msgid "expiration" msgstr "" -#: documents/models.py:741 +#: documents/models.py:730 documents/models.py:792 msgid "slug" msgstr "" -#: documents/models.py:773 +#: documents/models.py:762 msgid "share link" msgstr "" -#: documents/models.py:774 +#: documents/models.py:763 msgid "share links" msgstr "" -#: documents/models.py:786 +#: documents/models.py:771 +msgid "Pending" +msgstr "" + +#: documents/models.py:772 +msgid "Processing" +msgstr "" + +#: documents/models.py:773 +msgid "Ready" +msgstr "" + +#: documents/models.py:774 +msgid "Failed" +msgstr "" + +#: documents/models.py:821 +msgid "size (bytes)" +msgstr "" + +#: documents/models.py:827 +msgid "last error" +msgstr "" + +#: documents/models.py:834 +msgid "file path" +msgstr "" + +#: documents/models.py:840 +msgid "built at" +msgstr "" + +#: documents/models.py:853 +msgid "share link bundle" +msgstr "" + +#: documents/models.py:854 +msgid "share link bundles" +msgstr "" + +#: documents/models.py:857 +#, python-format +msgid "Share link bundle %(slug)s" +msgstr "" + +#: documents/models.py:883 msgid "String" msgstr "" -#: documents/models.py:787 +#: documents/models.py:884 msgid "URL" msgstr "" -#: documents/models.py:788 +#: documents/models.py:885 msgid "Date" msgstr "" -#: documents/models.py:789 +#: documents/models.py:886 msgid "Boolean" msgstr "" -#: documents/models.py:790 +#: documents/models.py:887 msgid "Integer" msgstr "" -#: documents/models.py:791 +#: documents/models.py:888 msgid "Float" msgstr "" -#: documents/models.py:792 +#: documents/models.py:889 msgid "Monetary" msgstr "" -#: documents/models.py:793 +#: documents/models.py:890 msgid "Document Link" msgstr "" -#: documents/models.py:794 +#: documents/models.py:891 msgid "Select" msgstr "" -#: documents/models.py:795 +#: documents/models.py:892 msgid "Long Text" msgstr "" -#: documents/models.py:807 +#: documents/models.py:904 msgid "data type" msgstr "" -#: documents/models.py:814 +#: documents/models.py:911 msgid "extra data" msgstr "" -#: documents/models.py:818 +#: documents/models.py:915 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:824 +#: documents/models.py:921 msgid "custom field" msgstr "" -#: documents/models.py:825 +#: documents/models.py:922 msgid "custom fields" msgstr "" -#: documents/models.py:925 +#: documents/models.py:1022 msgid "custom field instance" msgstr "" -#: documents/models.py:926 +#: documents/models.py:1023 msgid "custom field instances" msgstr "" -#: documents/models.py:991 +#: documents/models.py:1088 msgid "Consumption Started" msgstr "" -#: documents/models.py:992 +#: documents/models.py:1089 msgid "Document Added" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1090 msgid "Document Updated" msgstr "" -#: documents/models.py:994 +#: documents/models.py:1091 msgid "Scheduled" msgstr "" -#: documents/models.py:997 +#: documents/models.py:1094 msgid "Consume Folder" msgstr "" -#: documents/models.py:998 +#: documents/models.py:1095 msgid "Api Upload" msgstr "" -#: documents/models.py:999 +#: documents/models.py:1096 msgid "Mail Fetch" msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1097 msgid "Web UI" msgstr "" -#: documents/models.py:1005 +#: documents/models.py:1102 msgid "Modified" msgstr "" -#: documents/models.py:1006 +#: documents/models.py:1103 msgid "Custom Field" msgstr "" -#: documents/models.py:1009 +#: documents/models.py:1106 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:1021 +#: documents/models.py:1118 msgid "filter path" msgstr "" -#: documents/models.py:1026 +#: documents/models.py:1123 msgid "" "Only consume documents with a path that matches this if specified. Wildcards " "specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1033 +#: documents/models.py:1130 msgid "filter filename" msgstr "" -#: documents/models.py:1038 paperless_mail/models.py:200 +#: documents/models.py:1135 paperless_mail/models.py:200 msgid "" "Only consume documents which entirely match this filename if specified. " "Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "" -#: documents/models.py:1049 +#: documents/models.py:1146 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1065 +#: documents/models.py:1162 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1073 +#: documents/models.py:1169 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1176 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1184 msgid "has this document type" msgstr "" -#: documents/models.py:1081 +#: documents/models.py:1191 +msgid "has one of these document types" +msgstr "" + +#: documents/models.py:1198 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1206 msgid "has this correspondent" msgstr "" -#: documents/models.py:1089 +#: documents/models.py:1213 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1220 +msgid "has one of these correspondents" +msgstr "" + +#: documents/models.py:1228 msgid "has this storage path" msgstr "" -#: documents/models.py:1093 +#: documents/models.py:1235 +msgid "has one of these storage paths" +msgstr "" + +#: documents/models.py:1242 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1246 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1249 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1253 msgid "schedule offset days" msgstr "" -#: documents/models.py:1096 +#: documents/models.py:1256 msgid "The number of days to offset the schedule trigger by." msgstr "" -#: documents/models.py:1101 +#: documents/models.py:1261 msgid "schedule is recurring" msgstr "" -#: documents/models.py:1104 +#: documents/models.py:1264 msgid "If the schedule should be recurring." msgstr "" -#: documents/models.py:1109 +#: documents/models.py:1269 msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1113 +#: documents/models.py:1273 msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1118 +#: documents/models.py:1278 msgid "schedule date field" msgstr "" -#: documents/models.py:1123 +#: documents/models.py:1283 msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1132 +#: documents/models.py:1292 msgid "schedule date custom field" msgstr "" -#: documents/models.py:1136 +#: documents/models.py:1296 msgid "workflow trigger" msgstr "" -#: documents/models.py:1137 +#: documents/models.py:1297 msgid "workflow triggers" msgstr "" -#: documents/models.py:1145 +#: documents/models.py:1305 msgid "email subject" msgstr "" -#: documents/models.py:1149 +#: documents/models.py:1309 msgid "" "The subject of the email, can include some placeholders, see documentation." msgstr "" -#: documents/models.py:1155 +#: documents/models.py:1315 msgid "email body" msgstr "" -#: documents/models.py:1158 +#: documents/models.py:1318 msgid "" "The body (message) of the email, can include some placeholders, see " "documentation." msgstr "" -#: documents/models.py:1164 +#: documents/models.py:1324 msgid "emails to" msgstr "" -#: documents/models.py:1167 +#: documents/models.py:1327 msgid "The destination email addresses, comma separated." msgstr "" -#: documents/models.py:1173 +#: documents/models.py:1333 msgid "include document in email" msgstr "" -#: documents/models.py:1184 +#: documents/models.py:1344 msgid "webhook url" msgstr "" -#: documents/models.py:1187 +#: documents/models.py:1347 msgid "The destination URL for the notification." msgstr "" -#: documents/models.py:1192 +#: documents/models.py:1352 msgid "use parameters" msgstr "" -#: documents/models.py:1197 +#: documents/models.py:1357 msgid "send as JSON" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1361 msgid "webhook parameters" msgstr "" -#: documents/models.py:1204 +#: documents/models.py:1364 msgid "The parameters to send with the webhook URL if body not used." msgstr "" -#: documents/models.py:1208 +#: documents/models.py:1368 msgid "webhook body" msgstr "" -#: documents/models.py:1211 +#: documents/models.py:1371 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1215 +#: documents/models.py:1375 msgid "webhook headers" msgstr "" -#: documents/models.py:1218 +#: documents/models.py:1378 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1383 msgid "include document in webhook" msgstr "" -#: documents/models.py:1234 +#: documents/models.py:1394 msgid "Assignment" msgstr "" -#: documents/models.py:1238 +#: documents/models.py:1398 msgid "Removal" msgstr "" -#: documents/models.py:1242 documents/templates/account/password_reset.html:15 +#: documents/models.py:1402 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "" -#: documents/models.py:1246 +#: documents/models.py:1406 msgid "Webhook" msgstr "" -#: documents/models.py:1250 +#: documents/models.py:1410 +msgid "Password removal" +msgstr "" + +#: documents/models.py:1414 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1256 -msgid "assign title" -msgstr "" - -#: documents/models.py:1260 -msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" - -#: documents/models.py:1268 paperless_mail/models.py:274 -msgid "assign this tag" -msgstr "" - -#: documents/models.py:1277 paperless_mail/models.py:282 -msgid "assign this document type" -msgstr "" - -#: documents/models.py:1286 paperless_mail/models.py:296 -msgid "assign this correspondent" -msgstr "" - -#: documents/models.py:1295 -msgid "assign this storage path" -msgstr "" - -#: documents/models.py:1304 -msgid "assign this owner" -msgstr "" - -#: documents/models.py:1311 -msgid "grant view permissions to these users" -msgstr "" - -#: documents/models.py:1318 -msgid "grant view permissions to these groups" -msgstr "" - -#: documents/models.py:1325 -msgid "grant change permissions to these users" -msgstr "" - -#: documents/models.py:1332 -msgid "grant change permissions to these groups" -msgstr "" - -#: documents/models.py:1339 -msgid "assign these custom fields" -msgstr "" - -#: documents/models.py:1343 -msgid "custom field values" -msgstr "" - -#: documents/models.py:1347 -msgid "Optional values to assign to the custom fields." -msgstr "" - -#: documents/models.py:1356 -msgid "remove these tag(s)" -msgstr "" - -#: documents/models.py:1361 -msgid "remove all tags" -msgstr "" - -#: documents/models.py:1368 -msgid "remove these document type(s)" -msgstr "" - -#: documents/models.py:1373 -msgid "remove all document types" -msgstr "" - -#: documents/models.py:1380 -msgid "remove these correspondent(s)" -msgstr "" - -#: documents/models.py:1385 -msgid "remove all correspondents" -msgstr "" - -#: documents/models.py:1392 -msgid "remove these storage path(s)" -msgstr "" - -#: documents/models.py:1397 -msgid "remove all storage paths" -msgstr "" - -#: documents/models.py:1404 -msgid "remove these owner(s)" -msgstr "" - -#: documents/models.py:1409 -msgid "remove all owners" -msgstr "" - -#: documents/models.py:1416 -msgid "remove view permissions for these users" -msgstr "" - -#: documents/models.py:1423 -msgid "remove view permissions for these groups" -msgstr "" - -#: documents/models.py:1430 -msgid "remove change permissions for these users" -msgstr "" - -#: documents/models.py:1437 -msgid "remove change permissions for these groups" -msgstr "" - -#: documents/models.py:1442 -msgid "remove all permissions" -msgstr "" - -#: documents/models.py:1449 -msgid "remove these custom fields" -msgstr "" - -#: documents/models.py:1454 -msgid "remove all custom fields" -msgstr "" - -#: documents/models.py:1463 -msgid "email" -msgstr "" - -#: documents/models.py:1472 -msgid "webhook" -msgstr "" - -#: documents/models.py:1476 -msgid "workflow action" -msgstr "" - -#: documents/models.py:1477 -msgid "workflow actions" -msgstr "" - -#: documents/models.py:1486 paperless_mail/models.py:145 +#: documents/models.py:1419 documents/models.py:1661 +#: paperless_mail/models.py:145 msgid "order" msgstr "" -#: documents/models.py:1492 -msgid "triggers" +#: documents/models.py:1422 +msgid "assign title" msgstr "" -#: documents/models.py:1499 -msgid "actions" +#: documents/models.py:1426 +msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1502 paperless_mail/models.py:154 -msgid "enabled" +#: documents/models.py:1434 paperless_mail/models.py:274 +msgid "assign this tag" +msgstr "" + +#: documents/models.py:1443 paperless_mail/models.py:282 +msgid "assign this document type" +msgstr "" + +#: documents/models.py:1452 paperless_mail/models.py:296 +msgid "assign this correspondent" +msgstr "" + +#: documents/models.py:1461 +msgid "assign this storage path" +msgstr "" + +#: documents/models.py:1470 +msgid "assign this owner" +msgstr "" + +#: documents/models.py:1477 +msgid "grant view permissions to these users" +msgstr "" + +#: documents/models.py:1484 +msgid "grant view permissions to these groups" +msgstr "" + +#: documents/models.py:1491 +msgid "grant change permissions to these users" +msgstr "" + +#: documents/models.py:1498 +msgid "grant change permissions to these groups" +msgstr "" + +#: documents/models.py:1505 +msgid "assign these custom fields" +msgstr "" + +#: documents/models.py:1509 +msgid "custom field values" msgstr "" #: documents/models.py:1513 +msgid "Optional values to assign to the custom fields." +msgstr "" + +#: documents/models.py:1522 +msgid "remove these tag(s)" +msgstr "" + +#: documents/models.py:1527 +msgid "remove all tags" +msgstr "" + +#: documents/models.py:1534 +msgid "remove these document type(s)" +msgstr "" + +#: documents/models.py:1539 +msgid "remove all document types" +msgstr "" + +#: documents/models.py:1546 +msgid "remove these correspondent(s)" +msgstr "" + +#: documents/models.py:1551 +msgid "remove all correspondents" +msgstr "" + +#: documents/models.py:1558 +msgid "remove these storage path(s)" +msgstr "" + +#: documents/models.py:1563 +msgid "remove all storage paths" +msgstr "" + +#: documents/models.py:1570 +msgid "remove these owner(s)" +msgstr "" + +#: documents/models.py:1575 +msgid "remove all owners" +msgstr "" + +#: documents/models.py:1582 +msgid "remove view permissions for these users" +msgstr "" + +#: documents/models.py:1589 +msgid "remove view permissions for these groups" +msgstr "" + +#: documents/models.py:1596 +msgid "remove change permissions for these users" +msgstr "" + +#: documents/models.py:1603 +msgid "remove change permissions for these groups" +msgstr "" + +#: documents/models.py:1608 +msgid "remove all permissions" +msgstr "" + +#: documents/models.py:1615 +msgid "remove these custom fields" +msgstr "" + +#: documents/models.py:1620 +msgid "remove all custom fields" +msgstr "" + +#: documents/models.py:1629 +msgid "email" +msgstr "" + +#: documents/models.py:1638 +msgid "webhook" +msgstr "" + +#: documents/models.py:1642 +msgid "passwords" +msgstr "" + +#: documents/models.py:1646 +msgid "" +"Passwords to try when removing PDF protection. Separate with commas or new " +"lines." +msgstr "" + +#: documents/models.py:1651 +msgid "workflow action" +msgstr "" + +#: documents/models.py:1652 +msgid "workflow actions" +msgstr "" + +#: documents/models.py:1667 +msgid "triggers" +msgstr "" + +#: documents/models.py:1674 +msgid "actions" +msgstr "" + +#: documents/models.py:1677 paperless_mail/models.py:154 +msgid "enabled" +msgstr "" + +#: documents/models.py:1688 msgid "workflow" msgstr "" -#: documents/models.py:1517 +#: documents/models.py:1692 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1531 +#: documents/models.py:1706 msgid "date run" msgstr "" -#: documents/models.py:1537 +#: documents/models.py:1712 msgid "workflow run" msgstr "" -#: documents/models.py:1538 +#: documents/models.py:1713 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:140 -#, python-format -msgid "Invalid regular expression: %(error)s" +#: documents/serialisers.py:458 +msgid "Insufficient permissions." msgstr "" -#: documents/serialisers.py:594 +#: documents/serialisers.py:668 msgid "Invalid color." msgstr "" -#: documents/serialisers.py:623 -msgid "Invalid parent tag." -msgstr "" - -#: documents/serialisers.py:1780 +#: documents/serialisers.py:1910 #, python-format msgid "File type %(type)s not supported" msgstr "" -#: documents/serialisers.py:1824 +#: documents/serialisers.py:1954 #, python-format msgid "Custom field id must be an integer: %(id)s" msgstr "" -#: documents/serialisers.py:1831 +#: documents/serialisers.py:1961 #, python-format msgid "Custom field with id %(id)s does not exist" msgstr "" -#: documents/serialisers.py:1848 documents/serialisers.py:1858 +#: documents/serialisers.py:1978 documents/serialisers.py:1988 msgid "" "Custom fields must be a list of integers or an object mapping ids to values." msgstr "" -#: documents/serialisers.py:1853 +#: documents/serialisers.py:1983 msgid "Some custom fields don't exist or were specified twice." msgstr "" -#: documents/serialisers.py:1923 +#: documents/serialisers.py:2098 msgid "Invalid variable detected." msgstr "" +#: documents/serialisers.py:2300 +msgid "Duplicate document identifiers are not allowed." +msgstr "" + +#: documents/serialisers.py:2330 documents/views.py:2839 +#, python-format +msgid "Documents not found: %(ids)s" +msgstr "" + #: documents/templates/account/account_inactive.html:5 msgid "Paperless-ngx account inactive" msgstr "" @@ -1491,6 +1587,23 @@ msgstr "" msgid "Unable to parse URI {value}" msgstr "" +#: documents/views.py:2851 +#, python-format +msgid "Insufficient permissions to share document %(id)s." +msgstr "" + +#: documents/views.py:2894 +msgid "Bundle is already being processed." +msgstr "" + +#: documents/views.py:2951 +msgid "The share link bundle is still being prepared. Please try again later." +msgstr "" + +#: documents/views.py:2961 +msgid "The share link bundle is unavailable." +msgstr "" + #: paperless/apps.py:11 msgid "Paperless" msgstr "" @@ -1575,259 +1688,307 @@ msgstr "" msgid "CMYK" msgstr "" -#: paperless/models.py:83 +#: paperless/models.py:78 paperless/models.py:87 +msgid "OpenAI" +msgstr "" + +#: paperless/models.py:79 +msgid "Huggingface" +msgstr "" + +#: paperless/models.py:88 +msgid "Ollama" +msgstr "" + +#: paperless/models.py:97 msgid "Sets the output PDF type" msgstr "" -#: paperless/models.py:95 +#: paperless/models.py:109 msgid "Do OCR from page 1 to this value" msgstr "" -#: paperless/models.py:101 +#: paperless/models.py:115 msgid "Do OCR using these languages" msgstr "" -#: paperless/models.py:108 +#: paperless/models.py:122 msgid "Sets the OCR mode" msgstr "" -#: paperless/models.py:116 +#: paperless/models.py:130 msgid "Controls the generation of an archive file" msgstr "" -#: paperless/models.py:124 +#: paperless/models.py:138 msgid "Sets image DPI fallback value" msgstr "" -#: paperless/models.py:131 +#: paperless/models.py:145 msgid "Controls the unpaper cleaning" msgstr "" -#: paperless/models.py:138 +#: paperless/models.py:152 msgid "Enables deskew" msgstr "" -#: paperless/models.py:141 +#: paperless/models.py:155 msgid "Enables page rotation" msgstr "" -#: paperless/models.py:146 +#: paperless/models.py:160 msgid "Sets the threshold for rotation of pages" msgstr "" -#: paperless/models.py:152 +#: paperless/models.py:166 msgid "Sets the maximum image size for decompression" msgstr "" -#: paperless/models.py:158 +#: paperless/models.py:172 msgid "Sets the Ghostscript color conversion strategy" msgstr "" -#: paperless/models.py:166 +#: paperless/models.py:180 msgid "Adds additional user arguments for OCRMyPDF" msgstr "" -#: paperless/models.py:175 +#: paperless/models.py:189 msgid "Application title" msgstr "" -#: paperless/models.py:182 +#: paperless/models.py:196 msgid "Application logo" msgstr "" -#: paperless/models.py:197 +#: paperless/models.py:211 msgid "Enables barcode scanning" msgstr "" -#: paperless/models.py:203 +#: paperless/models.py:217 msgid "Enables barcode TIFF support" msgstr "" -#: paperless/models.py:209 +#: paperless/models.py:223 msgid "Sets the barcode string" msgstr "" -#: paperless/models.py:217 +#: paperless/models.py:231 msgid "Retains split pages" msgstr "" -#: paperless/models.py:223 +#: paperless/models.py:237 msgid "Enables ASN barcode" msgstr "" -#: paperless/models.py:229 +#: paperless/models.py:243 msgid "Sets the ASN barcode prefix" msgstr "" -#: paperless/models.py:237 +#: paperless/models.py:251 msgid "Sets the barcode upscale factor" msgstr "" -#: paperless/models.py:244 +#: paperless/models.py:258 msgid "Sets the barcode DPI" msgstr "" -#: paperless/models.py:251 +#: paperless/models.py:265 msgid "Sets the maximum pages for barcode" msgstr "" -#: paperless/models.py:258 +#: paperless/models.py:272 msgid "Enables tag barcode" msgstr "" -#: paperless/models.py:264 +#: paperless/models.py:278 msgid "Sets the tag barcode mapping" msgstr "" -#: paperless/models.py:269 +#: paperless/models.py:284 +msgid "Enables splitting on tag barcodes" +msgstr "" + +#: paperless/models.py:293 +msgid "Enables AI features" +msgstr "" + +#: paperless/models.py:299 +msgid "Sets the LLM embedding backend" +msgstr "" + +#: paperless/models.py:307 +msgid "Sets the LLM embedding model" +msgstr "" + +#: paperless/models.py:314 +msgid "Sets the LLM backend" +msgstr "" + +#: paperless/models.py:322 +msgid "Sets the LLM model" +msgstr "" + +#: paperless/models.py:329 +msgid "Sets the LLM API key" +msgstr "" + +#: paperless/models.py:336 +msgid "Sets the LLM endpoint, optional" +msgstr "" + +#: paperless/models.py:343 msgid "paperless application settings" msgstr "" -#: paperless/settings.py:773 +#: paperless/settings.py:819 msgid "English (US)" msgstr "" -#: paperless/settings.py:774 +#: paperless/settings.py:820 msgid "Arabic" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:821 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:776 +#: paperless/settings.py:822 msgid "Belarusian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:823 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:778 +#: paperless/settings.py:824 msgid "Catalan" msgstr "" -#: paperless/settings.py:779 +#: paperless/settings.py:825 msgid "Czech" msgstr "" -#: paperless/settings.py:780 +#: paperless/settings.py:826 msgid "Danish" msgstr "" -#: paperless/settings.py:781 +#: paperless/settings.py:827 msgid "German" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:828 msgid "Greek" msgstr "" -#: paperless/settings.py:783 +#: paperless/settings.py:829 msgid "English (GB)" msgstr "" -#: paperless/settings.py:784 +#: paperless/settings.py:830 msgid "Spanish" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:831 msgid "Persian" msgstr "" -#: paperless/settings.py:786 +#: paperless/settings.py:832 msgid "Finnish" msgstr "" -#: paperless/settings.py:787 +#: paperless/settings.py:833 msgid "French" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:834 msgid "Hungarian" msgstr "" -#: paperless/settings.py:789 +#: paperless/settings.py:835 +msgid "Indonesian" +msgstr "" + +#: paperless/settings.py:836 msgid "Italian" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:837 msgid "Japanese" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:838 msgid "Korean" msgstr "" -#: paperless/settings.py:792 +#: paperless/settings.py:839 msgid "Luxembourgish" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:840 msgid "Norwegian" msgstr "" -#: paperless/settings.py:794 +#: paperless/settings.py:841 msgid "Dutch" msgstr "" -#: paperless/settings.py:795 +#: paperless/settings.py:842 msgid "Polish" msgstr "" -#: paperless/settings.py:796 +#: paperless/settings.py:843 msgid "Portuguese (Brazil)" msgstr "" -#: paperless/settings.py:797 +#: paperless/settings.py:844 msgid "Portuguese" msgstr "" -#: paperless/settings.py:798 +#: paperless/settings.py:845 msgid "Romanian" msgstr "" -#: paperless/settings.py:799 +#: paperless/settings.py:846 msgid "Russian" msgstr "" -#: paperless/settings.py:800 +#: paperless/settings.py:847 msgid "Slovak" msgstr "" -#: paperless/settings.py:801 +#: paperless/settings.py:848 msgid "Slovenian" msgstr "" -#: paperless/settings.py:802 +#: paperless/settings.py:849 msgid "Serbian" msgstr "" -#: paperless/settings.py:803 +#: paperless/settings.py:850 msgid "Swedish" msgstr "" -#: paperless/settings.py:804 +#: paperless/settings.py:851 msgid "Turkish" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:852 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:853 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:807 +#: paperless/settings.py:854 msgid "Chinese Simplified" msgstr "" -#: paperless/settings.py:808 +#: paperless/settings.py:855 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:379 msgid "Paperless-ngx administration" msgstr "" diff --git a/src/locale/es_ES/LC_MESSAGES/django.po b/src/locale/es_ES/LC_MESSAGES/django.po index 8673bb7df..c66a884eb 100644 --- a/src/locale/es_ES/LC_MESSAGES/django.po +++ b/src/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Documentos" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "El valor debe ser JSON válido." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Expresión de consulta de campo personalizado no válida" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Lista de expresiones no válida. No debe estar vacía." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Operador lógico inválido {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Se ha superado el número máximo de condiciones de consulta." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{nombre!r} no es un campo personalizado válido." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} no admite la consulta expr {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Profundidad máxima de nidificación superada." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Campo personalizado no encontrado" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "propietario" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Nada" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Cualquier palabra" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Todas las palabras" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Coincidencia exacta" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Expresión regular" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Palabra borrosa" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automático" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nombre" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "coincidencia" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "Algoritmo de coincidencia" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "es insensible" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "interlocutor" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "interlocutores" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "color" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "es etiqueta de bandeja" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Marca esta etiqueta como una etiqueta de bandeja: todos los documentos recién consumidos serán etiquetados con las etiquetas de bandeja." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etiqueta" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etiquetas" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "No se puede establecer a sí mismo como padre." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "No se puede establecer el padre a un descendiente." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "tipo de documento" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "tipos de documento" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "ruta" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "ruta de almacenamiento" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "rutas de almacenamiento" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Sin cifrar" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Cifrado con GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "título" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "contenido" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Los datos de texto en bruto del documento. Este campo se utiliza principalmente para las búsquedas." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "tipo MIME" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "Cadena de verificación" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "La cadena de verificación del documento original." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "cadena de comprobación del archivo" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "La cadena de verificación del documento archivado." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "número de páginas" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "El número de páginas del documento." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "creado" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "modificado" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tipo de almacenamiento" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "añadido" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nombre del archivo" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Nombre de archivo actual en disco" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "nombre de archivo" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Nombre de archivo actual en disco" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "nombre del archivo original" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "El nombre que tenía el archivo cuando fue cargado" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "número de serie del archivo" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Posición de este documento en tu archivo físico de documentos." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "documento" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "documentos" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabla" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Tarjetas Pequeñas" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Tarjetas Grandes" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Título" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Creado" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Agregado" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Etiquetas" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Corresponsal" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Tipo de Documento" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Ruta de Almacenamiento" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Nota" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Propietario" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Compartido" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Páginas" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "mostrar en el panel de control" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "mostrar en barra lateral" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "campo de ordenación" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "ordenar al revés" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Ver tamaño de página" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Ver modo de visualización" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Campos de visualización de documentos" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "vista guardada" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "vistas guardadas" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "el título contiene" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "el contenido contiene" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN es" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "interlocutor es" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "el tipo de documento es" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "está en la bandeja de entrada" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "tiene la etiqueta" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "tiene cualquier etiqueta" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "creado antes" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "creado después" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "el año de creación es" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "el mes de creación es" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "creado el día" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "agregado antes de" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "agregado después de" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "modificado después de" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "modificado antes de" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "no tiene la etiqueta" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "no tiene ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "el título o cuerpo contiene" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "consulta de texto completo" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "más como esto" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "tiene etiquetas en" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN mayor que" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN menor que" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "la ruta de almacenamiento es" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "tiene interlocutor en" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "no tiene interlocutor en" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "tiene el tipo de documento en" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "no tiene el tipo de documento en" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "tiene ruta de almacenamiento en" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "no tiene ruta de almacenamiento en" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "dueño es" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "tiene dueño en" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "no tiene dueño" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "no tiene dueño en" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "tiene un valor de campo personalizado" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "compartido por mí" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "tiene campos personalizados" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "tiene campo personalizado en" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "no tiene campo personalizado en" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "no tiene campo personalizado" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "consulta de campos personalizados" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "creado para" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "creado desde" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "añadido a" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "añadido desde" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "tipo mime es" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "tipo de regla" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "valor" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "regla de filtrado" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "reglas de filtrado" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Tarea Automática" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Tarea Programada" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Tarea Manual" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Procesar Archivo" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Entrenar Clasificador" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Comprobar validez" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Optimizar índices" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID de la tarea" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "ID de Celery de la tarea ejecutada" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Reconocido" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Si la tarea es reconocida a través del frontend o API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Nombre del archivo de la tarea" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Nombre del archivo para el que se ejecutó la tarea" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Nombre de la tarea" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Nombre de la tarea que fue ejecutada" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Estado de la tarea" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Estado de la tarea actualmente en ejecución" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Fecha y hora de creación" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Campo de fecha cuando el resultado de la tarea fue creado en UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Fecha y hora de inicio" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Campo de fecha cuando la tarea fue iniciada en UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Fecha de finalización" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Fecha-hora cuando la tarea se completó en UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Datos de resultado" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Datos devueltos por la tarea" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Tipo de tarea" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "El tipo de tarea que se ejecutó" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Nota para el documento" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "usuario" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "nota" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notas" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Archivo" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Original" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "expiración" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "compartir enlace" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "compartir enlaces" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Cadena de texto" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Fecha" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Booleano" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Número entero" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Número flotante" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monetario" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Enlace al documento" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Selecciona" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Texto largo" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "tipo de dato" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "datos extra" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Datos adicionales para el campo personalizado, como opciones de selección" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "campo personalizado" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "campos personalizados" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "instancia de campo personalizado" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "instancias de campos personalizados" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Inicio de Análisis" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Documento añadido" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Documento Actualizado" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Programado" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Consumir carpeta" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Carga de Api" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Buscar correo" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Interfaz de usuario web" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Modificado" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Campo personalizado" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Tipo de disparador de flujo de trabajo" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtrar ruta" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Sólo consumir documentos con una ruta que coincida con esta si se especifica. Los comodines especificados como * están permitidos. No permiten mayúsculas." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtrar nombre del archivo" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Sólo consumirá documentos que coincidan completamente con este nombre de archivo si se especifica. Se permiten comodines como *.pdf o *factura*. No diferencia mayúsculas." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtrar documentos de esta regla de correo" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "tiene estas etiqueta(s)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "tiene todas estas etiqueta(s)" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "no tiene estas etiqueta(s)" + +#: documents/models.py:1087 msgid "has this document type" msgstr "tiene este tipo de documento" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "no tiene estos tipos de documento (s)" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "tiene este interlocutor" -#: documents/models.py:1056 -msgid "has this storage path" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "tiene esta ruta de almacenamiento" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "no tiene esta(s) ruta(s) de almacenamiento" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "filtrar consulta de campo personalizado" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "Expresión de consulta de campo personalizado codificado en JSON." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "programar días de compensación" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "El número de días para compensar la activación del horario." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "la programación es recurrente" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Si la programación debe ser recurrente." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "programar el retraso recurrente en días" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "El número de días entre los activadores de programación recurrentes." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "programar campo de fecha" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "El campo a comprobar para un activador de programación." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "programar campo de fecha personalizado" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "activador del flujo de trabajo" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "activadores de flujo de trabajo" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "asunto del correo electrónico" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "El asunto del correo electrónico, puede incluir algunos marcadores de posición, consulte la documentación." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "cuerpo del correo electrónico" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "El cuerpo (mensaje) del correo electrónico, puede incluir algunos marcadores de posición, consulte la documentación." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "correos electrónicos a" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Las direcciones de correo electrónico de destino, separadas por comas." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "incluir documento en correo electrónico" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "url del webhook" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "La URL de destino de la notificación." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "utilizar parámetros" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "enviar como JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "parámetros del webhook" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Los parámetros a enviar con la URL del webhook si no se utiliza el cuerpo." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "cuerpo del webhook" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "El cuerpo a enviar con la URL del webhook si no se utilizan parámetros." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "cabeceras webhook" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Las cabeceras a enviar con la URL del webhook." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "incluir documento en webhook" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Tarea" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Eliminar" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-mail" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Tipo de acción del flujo de trabajo" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "asignar título" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Asignar un título de documento, debe ser una plantilla de Jinja2, ver documentación." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "asignar esta etiqueta" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "asignar este tipo de documento" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "asignar este interlocutor" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "asignar esta ruta de almacenamiento" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "asignar dueño" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "conceder permisos de vista a estos usuarios" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "conceder permisos de vista a estos grupos" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "conceder permisos de cambio a estos usuarios" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "conceder permisos de cambio a estos grupos" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "asignar estos campos personalizados" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "Valores de campos personalizados" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Valores opcionales para asignar a los campos personalizados." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "eliminar estas etiqueta(s)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "elimina todas las etiquetas" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "eliminar este tipo de documento (s)" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "eliminar todos los tipos de documentos" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "eliminar estos corresponsales" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "eliminar a todos los corresponsales" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "eliminar estas rutas de almacenamiento" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "eliminar todas las rutas de almacenamiento" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "eliminar estos propietarios" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "eliminar todos los propietarios" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "elimina permisos de visualización para estos usuarios" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "elimina permisos de visualización para estos grupos" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "eliminar permisos de cambio para estos usuarios" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "elimina permisos de cambio para estos grupos" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "elimina todos los permisos" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "elimina estos campos personalizados" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "elimina todos los campos personalizados" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "correo-e" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "acción de Flujo de Trabajo" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "acciones de flujo de trabajo" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "orden" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "disparador" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "acciones" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "habilitado" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "flujo de trabajo" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "tipo de activador de flujo de trabajo" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "fecha de ejecución" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "ejecución del flujo de trabajo" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "ejecuciones de flujo de trabajo" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Expresión irregular inválida: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Color inválido." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Tipo de fichero %(type)s no suportado" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "El id del campo personalizado debe ser un entero: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "El campo personalizado con identificador %(id)s no existe" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Los campos personalizados deben ser una lista de enteros o un identificador de mapeo de objetos a valores." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Algunos campos personalizados no existen o fueron especificados dos veces." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Variable inválida." @@ -1419,21 +1468,21 @@ msgstr "Como último paso, por favor complete el siguiente formulario:" #: documents/validators.py:24 #, python-brace-format msgid "Unable to parse URI {value}, missing scheme" -msgstr "" +msgstr "No se puede analizar la URI {value}, falta el esquema" #: documents/validators.py:29 #, python-brace-format msgid "Unable to parse URI {value}, missing net location or path" -msgstr "" +msgstr "No se puede analizar la URI {value}, falta la ubicación de la red o la ruta" #: documents/validators.py:36 msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}" -msgstr "" +msgstr "El esquema URI '{parts.scheme}' no está permitido. Esquemas permitidos: {', '.join(allowed_schemes)}" #: documents/validators.py:45 #, python-brace-format msgid "Unable to parse URI {value}" -msgstr "" +msgstr "No se puede analizar la URI {value}" #: paperless/apps.py:11 msgid "Paperless" @@ -1627,151 +1676,151 @@ msgstr "Establece el mapeo de códigos de barras de etiquetas" msgid "paperless application settings" msgstr "Ajustes de la aplicación paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Inglés (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Árabe" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Africano" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Bielorruso" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Búlgaro" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Catalán" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Checo" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Danés" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Alemán" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Griego" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Inglés (Gran Bretaña)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Español" -#: paperless/settings.py:784 -msgid "Persian" -msgstr "" - #: paperless/settings.py:785 +msgid "Persian" +msgstr "Persa" + +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finlandés" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francés" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Húngaro" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italiano" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japonés" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Coreano" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburgués" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Noruego" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Alemán" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polaco" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugués (Brasil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugués" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumano" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Ruso" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Eslovaco" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Esloveno" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbio" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Sueco" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turco" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ucraniano" -#: paperless/settings.py:805 -msgid "Vietnamese" -msgstr "" - #: paperless/settings.py:806 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Chino simplificado" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Chino tradicional" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administración de Paperless-ngx" diff --git a/src/locale/et_EE/LC_MESSAGES/django.po b/src/locale/et_EE/LC_MESSAGES/django.po index 118d78a68..e978564f1 100644 --- a/src/locale/et_EE/LC_MESSAGES/django.po +++ b/src/locale/et_EE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Estonian\n" "Language: et_EE\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumendid" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Väärtus peab olema lubatav JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Vigane kohandatud välja päringu avaldis" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Vigane avaldiste loend. Peab olema mittetühi." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Vigane loogikaoperaator {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Päringutingimuste suurim hulk on ületatud." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} ei ole lubatud kohandatud väli." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} ei toeta päringu avaldist {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Suurim pesastamis sügavus ületatud." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Kohandatud välja ei leitud" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "omanik" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Ei midagi" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Mis tahes sõna" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Kõik sõnad" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Täpne vaste" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regulaaravaldis" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Hägussõna" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automaatne" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nimi" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "vaste" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "sobitusalgoritm" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "pole tundlik" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "kontakt" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "kontaktid" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "värv" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "on sisendkasti silt" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Märgib selle sildi sisendkasti sildiks: Kõik värskelt lisatud dokumendid tähistatakse antud sildiga." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "silt" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "sildid" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "dokumendi liik" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "dokumendi liigid" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "tee" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "salvestustee" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "salvestusteed" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Krüpteerimata" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "GNU Privacy Guard krüpteering" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "pealkiri" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "sisu" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Dokumendi töötlemata tekstandmed. Seda välja kasutatakse peamiselt otsinguks." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME liik" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrollkood" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Originaal dokumendi kontrollkood." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arhiivi kontrollkood" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Arhiveeritud dokumendi kontrollkood." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "lehekülgede arv" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Dokumendi lehekülgede arv." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "loodud" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "muudetud" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "salvestus liik" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "lisatud" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "failinimi" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "" -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Dokumendi Liik" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "" -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "" @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "" diff --git a/src/locale/fa_IR/LC_MESSAGES/django.po b/src/locale/fa_IR/LC_MESSAGES/django.po index c3113a6bb..dcfb4472a 100644 --- a/src/locale/fa_IR/LC_MESSAGES/django.po +++ b/src/locale/fa_IR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Persian\n" "Language: fa_IR\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "اسناد و مدارک" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "مقدار باید JSON معتبر باشد." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Invalid custom field query expression" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." -msgstr "" +msgstr "لیست عبارت‌ها نامعتبر است. نباید خالی باشد." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "حداکثر تعداد شرایط پرس و جو از آن فراتر رفته است." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{نام! R} یک زمینه سفارشی معتبر نیست." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." -msgstr "" +msgstr "حداکثر عمق تودرتویی بیش از حد مجاز است." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "زمینه سفارشی یافت نشد" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "مالک" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "هیچ کدام" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "هر کلمه ایی" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "همه کلمات" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "مطابقت دقیق" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" -msgstr "" +msgstr "عبارت باقاعده" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "کلمه مبهم" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "خودکار" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "اسم" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "مطابقت" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "الگوریتم تطبیق" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "غیر حساس است" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "مکاتبه کننده" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "مکاتبه کننده ها" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "رنگ" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "برچسب ورودی است" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "این برچسب را به عنوان یک برچسب ورودی علامت گذاری می کند: تمام اسناد تازه مصرف شده با برچسب های صندوق ورودی برچسب گذاری می شوند." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "نشان" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "برچسب ها" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "نمی‌تواند خودش را به عنوان والد تنظیم کند." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "نمی‌توان والد را به یک فرزند یا عضو پایین‌تر در سلسله‌مراتب تنظیم کرد." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "نوع سند" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "انواع اسناد" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "مسیر" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "مسیر ذخیره ساز" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "مسیرهای ذخیره ساز" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "عود" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "رمزگذاری شده با گارد حریم خصوصی GNU" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "عنوان" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "محتوا" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "داده های خام و فقط متن سند. این قسمت در درجه اول برای جستجو استفاده می شود." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "نوع تقلید" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "چک" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "چک سند اصلی." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "بررسی بایگانی" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "چک سند بایگانی شده." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "شمارش صفحه" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "تعداد صفحات سند." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "ایجاد شده" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "اصلاح شده" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "نوع ذخیره ساز" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "اضافه شده" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "نام فایل" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Current filename in storage" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "نام پرونده بایگانی" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "نام پرونده بایگانی فعلی در انبار" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "نام اصلی" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "نام اصلی پرونده هنگام بارگذاری" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "شماره سریال بایگانی" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "موقعیت این سند در بایگانی سند فیزیکی شما." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "مدرک" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "اسناد" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "جدول" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "کارتهای کوچک" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "کارتهای بزرگ" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "عنوان" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "ایجاد شده" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "اضافه شده" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "برچسب ها" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "مکاتبه کننده" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "نوع سند" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "مسیر ذخیره ساز" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "یادداشت" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "صاحب" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "مشترک" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "صفحات" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "نمایش در داشبورد" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "نمایش در نوار کناری" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "میدان مرتب" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "مرتب کردن برعکس" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "مشاهده اندازه صفحه" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "مشاهده حالت نمایش" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "زمینه های نمایش سند" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "نمای ذخیره شده" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "نماهای ذخیره شده" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "عنوان شامل" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "محتوای موجود" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN است" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "مکاتبه کننده است" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "نوع سند است" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "در صندوق ورودی است" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "دارای برچسب" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "هر برچسب دارد" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "قبل آفریده شده" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "پس از" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "سال ایجاد شده است" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "ماه ایجاد شده است" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "روز ایجاد شده است" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "قبل اضافه شده" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "بعد" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "قبل از" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "اصلاح شده پس از" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "برچسب ندارد" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "ASN ندارد" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "عنوان یا محتوا شامل" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "پرس و جو متن کامل" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "بیشتر شبیه این است" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "دارای برچسب در" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN بزرگتر از" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN کمتر از" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "مسیر ذخیره ساز است" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "مکاتبه کننده دارد در" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "خبرنگار در" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "دارای نوع سند در" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "نوع سند در آن وجود ندارد" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "دارای مسیر ذخیره سازی در" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "مسیر ذخیره سازی ندارد" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "مالک است" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "مالک در" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "مالک ندارد" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "مالک نیست" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "دارای مقدار فیلد سفارشی است" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "توسط من به اشتراک گذاشته شده است" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "زمینه های سفارشی دارد" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "دارای زمینه سفارشی در" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "زمینه سفارشی در" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "زمینه سفارشی ندارد" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "پرس و جو زمینه های سفارشی" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "ایجاد شده به" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "ایجاد شده از" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "اضافه شده به" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "اضافه شده از" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "نوع تقلید است" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "نوع قانون" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "ارزش" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "قانون" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "قوانین فیلتر" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "وظیفه خودکار" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "وظیفه برنامه ریزی شده" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "وظیفه دستی" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "پرونده مصرف کنید" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "طبقه بندی کننده قطار" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "عقل را بررسی کنید" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "بهینه سازی فهرست" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "شناسه کار" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "شناسه کرفس برای کاری که اجرا شد" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "تصدیق شده" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "اگر این کار از طریق جبهه یا API تأیید شود" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "نام کارنامه" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "نام پرونده ای که کار برای آن اجرا شده است" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "نام کار" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "نام کاری که اجرا شد" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "حالت کار" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "وضعیت فعلی کار در حال اجرا" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "dateTime ایجاد شده است" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "قسمت DateTime هنگامی که نتیجه کار در UTC ایجاد شد" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "DateTime را شروع کرد" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "قسمت DateTime هنگام شروع کار در UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "DateTime تکمیل شده" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "قسمت DateTime هنگام انجام کار در UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "داده های نتیجه" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "داده های برگشتی توسط کار" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "نوع کار" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "نوع کارهایی که انجام شد" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "توجه برای سند" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "کاربر" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "یادداشت" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "یادداشت ها" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "بایگانی" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "اصلی" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "انقضاء" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "لگد زدن" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "لینک مشترک" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "پیوندهای به اشتراک بگذارید" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "رشته" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "url" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "تاریخ" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "بولی" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "عدد صحیح" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "شناور" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "پولی" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "لینک مستند" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "انتخاب کردن" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "متن طولانی" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "نوع داده" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "داده های اضافی" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "داده های اضافی برای قسمت سفارشی ، مانند گزینه های انتخاب" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "قسمت سفارشی" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "زمینه های سفارشی" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "نمونه زمینه سفارشی" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "نمونه های میدانی سفارشی" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "مصرف آغاز شد" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "سند اضافه شده است" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "سند به روز شده" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "برنامه ریزی شده" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "پوشه مصرف کنید" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "بارگذاری API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "نامه واکشی" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "UI وب" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "اصلاح شده" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "قسمت سفارشی" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "نوع ماشه گردش کار" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "مسیر فیلتر" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "فقط اسناد را با مسیری مصرف کنید که در صورت مشخص شدن با این مطابقت داشته باشد. کارتهای وحشی مشخص شده به عنوان * مجاز هستند. مورد غیر حساس" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "نام پرونده فیلتر" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "فقط اسنادی را مصرف کنید که در صورت مشخص شدن کاملاً با این پرونده مطابقت داشته باشد. کارتهای وحشی مانند *.pdf یا *فاکتور *مجاز است. مورد غیر حساس" -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "اسناد را از این قانون نامه فیلتر کنید" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "این برچسب (ها)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "آیا این نوع سند است" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "این خبرنگار است" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "روزهای افست را برنامه ریزی کنید" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "تعداد روزهای جبران برنامه توسط." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "برنامه در حال تکرار است" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "اگر برنامه باید تکرار شود." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "تأخیر مکرر را در روزها برنامه ریزی کنید" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "تعداد روزهای بین برنامه مکرر باعث می شود." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "قسمت تاریخ برنامه" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "قسمت برای بررسی یک ماشه برنامه." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "قسمت برنامه سفارشی تاریخ" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "محرک گردش کار" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "گردش کار باعث می شود" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "موضوع ایمیل" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "موضوع ایمیل می تواند شامل برخی از متغیرها باشد ، به اسناد مراجعه کنید." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "بدنه ایمیل" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "بدنه (پیام) ایمیل می تواند شامل برخی از متغیرها باشد ، به مستندات مراجعه کنید." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "ایمیل به" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "آدرس های ایمیل مقصد ، کاما از هم جدا شده است." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "سند را در ایمیل وارد کنید" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "URL Webhook" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "URL مقصد برای اعلان." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "از پارامترها استفاده کنید" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "ارسال به عنوان JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "پارامترهای Webhook" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "در صورت عدم استفاده از بدنه ، پارامترهای ارسال شده با URL Webhook." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "بدنه وب" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "در صورت عدم استفاده از پارامترها ، بدنه ای برای ارسال با URL Webhook." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "هدرهای Webhook" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "هدرها برای ارسال با URL Webhook." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "سند را در وب وب قرار دهید" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "تخصیص" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "حذف" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "ایمیل" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "شبکه وب" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "نوع عمل گردش کار" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "عنوان اختصاص دادن" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "این برچسب را اختصاص دهید" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "این نوع سند را اختصاص دهید" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "این خبرنگار را اختصاص دهید" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "این مسیر ذخیره سازی را اختصاص دهید" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "این مالک را اختصاص دهید" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "اعطای مجوزها به این کاربران" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "اعطای مجوزها به این گروه ها" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "اعطای مجوزهای تغییر به این کاربران" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "اعطای مجوزها به این گروه ها" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "این زمینه های سفارشی را اختصاص دهید" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "مقادیر فیلد سفارشی" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "مقادیر اختیاری برای اختصاص به قسمتهای سفارشی." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "حذف این برچسب (ها)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "حذف همه برچسب ها" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "حذف این نوع سند (ها)" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "حذف همه انواع سند" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "همه خبرنگاران را حذف کنید" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "این مسیر (های) ذخیره سازی را حذف کنید" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "تمام مسیرهای ذخیره سازی را حذف کنید" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "این صاحب (ها) را حذف کنید" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "همه صاحبان را حذف کنید" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "مجوزهای نمایش را برای این کاربران حذف کنید" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "مجوزهای نمایش را برای این گروه ها حذف کنید" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "مجوزهای تغییر را برای این کاربران حذف کنید" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "مجوزهای تغییر را برای این گروه ها حذف کنید" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "تمام مجوزها را حذف کنید" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "این زمینه های سفارشی را حذف کنید" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "همه زمینه های سفارشی را حذف کنید" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "ایمیل" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "شبکه وب" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "عمل گردش کار" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "اقدامات گردش کار" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "ترتیب" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "محرک" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "اقدامات" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "فعال" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "گردش کار" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "نوع ماشه گردش کار" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "تاریخ اجرا" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "گردش کار" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "گردش کار اجرا می شود" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "رنگ نامعتبر" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "متغیر نامعتبر شناسایی شده است." @@ -1626,151 +1675,151 @@ msgstr "نقشه بارکد برچسب را تنظیم می کند" msgid "paperless application settings" msgstr "تنظیمات برنامه بدون کاغذ" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "انگلیسی (ایالات متحده)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "عربی" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "افریکان" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "وابسته به بلروس" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "وابسته به بلغاری" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "کاتالان" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "وابسته به چک" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "وابسته به دانمارکی" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "آلمانی" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "یونانی" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "انگلیسی (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "اسپانیایی" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "فارسی" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "فنلاندی" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "فرانسوی" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "مجارستانی" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "ایتالیایی" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "وابسته به ژاپنی" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "کره ای" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "وابسته به لوکس" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "نروژی" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "هلندی" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "صیقل دادن" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "پرتغالی (برزیل)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "وابسته به پرتغالی" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "وابسته به رومانی" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "روسی" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "لگن" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "وابسته به اسلوونی" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "صرب" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "سوئدی" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "ترکی" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "وابسته به اوکراینی" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "چینی ساده شد" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "چینی سنتی" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "مدیریت بدون مقاله NGX" diff --git a/src/locale/fi_FI/LC_MESSAGES/django.po b/src/locale/fi_FI/LC_MESSAGES/django.po index f87b3d35c..8c51f1615 100644 --- a/src/locale/fi_FI/LC_MESSAGES/django.po +++ b/src/locale/fi_FI/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Finnish\n" "Language: fi_FI\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Asiakirjat" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Arvon on oltava kelvollista JSON:ia." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "omistaja" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Ei mitään" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Mikä tahansa sana" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Kaikki sanat" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Tarkka osuma" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Säännöllinen lauseke (regex)" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Sumea sana" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automaattinen" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nimi" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "osuma" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "tunnistusalgoritmi" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "ei ole herkkä" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "yhteyshenkilö" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "yhteyshenkilöt" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "väri" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "on uusien tunniste" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Merkitsee tämän tunnisteen uusien tunnisteeksi: Kaikille vastasyötetyille tiedostoille annetaan tämä tunniste." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "tunniste" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "tunnisteet" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "asiakirjatyyppi" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "asiakirjatyypit" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "polku" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "tallennustilan polku" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "tallennustilan polut" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Salaamaton" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "GNU Privacy Guard -salattu" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "otsikko" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "sisältö" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Raaka vain teksti -muotoinen dokumentin sisältö. Kenttää käytetään pääasiassa hakutoiminnossa." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime-tyyppi" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "tarkistussumma" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Alkuperäisen dokumentin tarkistussumma." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arkistotarkastussumma" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Arkistoidun dokumentin tarkistussumma." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "sivumäärä" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Asiakirjan sivujen lukumäärä." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "luotu" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "muokattu" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tallennustilan tyyppi" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "lisätty" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "tiedostonimi" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Tiedostonimi tallennustilassa" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "arkistointitiedostonimi" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Tämänhetkinen arkistointitiedostoimi tallennustilassa" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "alkuperäinen tiedostonimi" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Tiedoston alkuperäinen nimi, kun se oli ladattu" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "arkistointisarjanumero" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Asiakirjan sijainti fyysisessä arkistossa." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "asiakirja" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "asiakirjat" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Pienet kortit" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Suuret kortit" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Luotu" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Lisätty" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Tunnisteet" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Asiakirjan tyyppi" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Tallennustilan polku" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Omistaja" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Jaettu" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "näytä koontinäytöllä" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "näytä sivupaneelissa" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "lajittelukenttä" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "lajittele käänteisesti" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Näytä sivun koko" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "tallennettu näkymä" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "tallennetut näkymät" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "otsikko sisältää" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "sisältö sisältää" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN on" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "yhteyshenkilö on" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "asiakirjatyyppi on" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "on uusi" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "on tagattu" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "on mikä tahansa tagi" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "luotu ennen" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "luotu jälkeen" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "luotu vuonna" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "luotu kuukautena" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "luomispäivä on" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "lisätty ennen" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "lisätty jälkeen" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "muokattu ennen" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "muokattu jälkeen" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "ei ole tagia" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "ei ole ASN-numeroa" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "otsikko tai sisältö sisältää" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "fulltext-kysely" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "sisältää tagit" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN suurempi kuin" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN pienempi kuin" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "tallennustilan polku on" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "omistaja on" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "sisältää mukautetun kentän arvon" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "on minun jakamani" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "sääntötyyppi" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "arvo" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "suodatussääntö" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "suodatussäännöt" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Tehtävä-ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID tehtävälle, joka oli käynnissä" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Vahvistettu" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Jos tehtävä on vahvistettu frontendin tai API:n kautta" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Tehtävän tiedostonimi" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Tiedoston nimi, jolle tehtävä on suoritettu" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Tehtävänimi" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Tehtävän tila" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Suoritettavan tehtävän tämänhetkinen tila" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Luotu" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Päivämäärä, kun tehtävä valmistui (UTC)" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Aloitettu" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Päivämäärä, kun tehtävä käynnistyi (UTC)" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Valmistui" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Päivämäärä, kun tehtävä valmistui (UTC)" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Tulokset" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Tehtävän palauttamat tiedot" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "käyttäjä" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "muistiinpanot" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Alkuperäinen" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Kokonaisluku" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Asiakirjan linkki" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "datatyyppi" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "mukautettu kenttä" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "mukautetut kentät" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Asiakirja lisätty" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Asiakirja päivitetty" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "API-lähetys" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Muokattu" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Mukautettu kenttä" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Tuo vain dokumentit jotka täsmäävät täysin tiedostonimen suhteen. Jokerimerkit kuten *.pdf tai *lasku* ovat sallittuja. Kirjainkoko ei merkitse." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Sähköposti" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "määritä tämä tunniste" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "määritä tämä asiakirjatyyppi" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "määritä tämä kirjeenvaihtaja" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "poista kaikki tunnisteet" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "poista nämä asiakirjatyypit" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "poista kaikki asiakirjatyypit" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "poista kaikki omistajat" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "poista kaikki käyttöoikeudet" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "poista nämä mukautetut kentät" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "poista kaikki mukautetut kentät" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "työnkulun toiminto" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "työnkulun toiminnot" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "järjestys" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "toiminnot" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "käytössä" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Virheellinen regex-lauseke: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Virheellinen väri." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Tiedostotyyppiä %(type)s ei tueta" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Virheellinen muuttuja havaittu." @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Englanti (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabialainen" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "valkovenäjä" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalaani" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tšekki" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Tanska" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Saksa" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Kreikka" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Englanti (US)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Espanja" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Suomi" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Ranska" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italia" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburg" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norja" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Hollanti" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "puola" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "portugali (Brasilia)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "portugali" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "romania" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "venäjä" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovakia" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovenia" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbia" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "ruotsi" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turkki" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukraina" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Kiina (yksinkertaistettu)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx:n ylläpito" diff --git a/src/locale/fr_FR/LC_MESSAGES/django.po b/src/locale/fr_FR/LC_MESSAGES/django.po index d01bba3a5..234a8fd0b 100644 --- a/src/locale/fr_FR/LC_MESSAGES/django.po +++ b/src/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Documents" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "La valeur doit être un JSON valide." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" -msgstr "Expression de requête personnalisée invalide" +msgstr "Requête de champ personnalisé invalide" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Liste d’expressions invalide. Doit être non vide." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Opérateur logique {op!r} invalide" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Nombre maximum de conditions de requête dépassé." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} n'est pas un champ personnalisé valide." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} ne supporte pas l'expression {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Profondeur de récursion maximale dépassée." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Champ personnalisé non trouvé" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "propriétaire" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Aucun élément" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Un des mots" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Tous les mots" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Concordance exacte" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Expression régulière" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Mot approximatif" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatique" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nom" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "rapprochement" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algorithme de rapprochement" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "est insensible à la casse" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "correspondant" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "correspondants" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "couleur" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "est une étiquette de boîte de réception" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Marque cette étiquette comme étiquette de boîte de réception : ces étiquettes sont affectées à tous les documents nouvellement traités." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "étiquette" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "étiquettes" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Impossible de se définir comme parent." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Impossible de défini un parent comme descendant." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "type de document" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "types de document" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "chemin" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "chemin de stockage" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "chemins de stockage" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Non chiffré" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Chiffré avec GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "titre" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "contenu" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Les données brutes du document, en format texte uniquement. Ce champ est principalement utilisé pour la recherche." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "type mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "somme de contrôle" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "La somme de contrôle du document original." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "somme de contrôle de l'archive" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "La somme de contrôle du document archivé." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "nombre de pages" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Le nombre de pages du document." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "créé le" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "modifié" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "forme d'enregistrement :" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "date d'ajout" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nom du fichier" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Nom du fichier courant en base de données" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "nom de fichier de l'archive" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Nom du fichier d'archive courant en base de données" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "nom de fichier d'origine" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Le nom original du fichier quand il a été envoyé" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "numéro de série d'archivage" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Le classement de ce document dans votre archive de documents physiques." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "document" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "documents" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tableau" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Petites cartes" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Grandes cartes" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Titre" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Date de création" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Date d'ajout" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Étiquettes" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Correspondant" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Type du document" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Chemins de stockage" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Note" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Propriétaire" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Partagé" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "NSA" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Pages" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "montrer sur le tableau de bord" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "montrer dans la barre latérale" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "champ de tri" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "tri inverse" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Voir la taille de la page" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Voir le mode d'affichage" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Champs d'affichage du document" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "vue enregistrée" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "vues enregistrées" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "le titre contient" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "le contenu contient" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "le NSA est" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "le correspondant est" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "le type de document est" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "est dans la boîte de réception" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "porte l'étiquette" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "porte l'une des étiquettes" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "créé avant" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "créé après" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "l'année de création est" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "le mois de création est" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "le jour de création est" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "ajouté avant" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "ajouté après" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "modifié avant" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "modifié après" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "ne porte pas d'étiquette" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "ne porte pas de NSA" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "le titre ou le contenu contient" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "recherche en texte intégral" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "plus comme cela" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "porte une étiquette parmi" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "NSA supérieur à" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "NSA inférieur à" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "le chemin de stockage est" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "a un correspondant dans" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "n'a pas de correspondant dans" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "a un type de document en" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" -msgstr "N'aie pas de type de document dans" +msgstr "n'a pas de type de document" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" -msgstr "A un chemin de stockage dans" +msgstr "a un chemin de stockage dans" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "n'a pas de chemin de stockage dans" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "le propriétaire est" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" -msgstr "A le propriétaire dans" +msgstr "a le propriétaire dans" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "n'a pas de propriétaire" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" -msgstr "N'aie pas de propriétaire dans" +msgstr "n'a pas de propriétaire dans" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "a une valeur de champ personnalisé" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "est partagé par moi" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" -msgstr "A des champs personnalisés" +msgstr "a des champs personnalisés" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" -msgstr "A un champ personnalisé dans" +msgstr "a un champ personnalisé dans" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "n'a pas de champ personnalisé dans" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "n'a pas de champ personnalisé" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "champs personnalisés de requête" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "créé vers" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "créé depuis" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "ajouté à" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "ajouté depuis" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "le type mime est" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "type de règle" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "valeur" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "règle de filtrage" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "règles de filtrage" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Tâche Automatique" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Tâche Planifiée" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Tâche Manuelle" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Fichier à consommer" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Entrainer le classificateur" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Vérifier l'état de santé" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Optimisation de l'index" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID de tâche" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Identifiant Celery pour la tâche qui a été exécutée" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Confirmé" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Si la tâche est prise en compte via l'interface utilisateur ou l'API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Nom du fichier de tâche" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Nom du fichier pour lequel la tâche a été exécutée" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Nom de la tâche" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Nom de la tâche qui a été exécutée" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "État de la tâche" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "État actuel de la tâche en cours d'exécution" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Date de création" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Champ de date lorsque le résultat de la tâche a été créé en UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Date de début" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Date UTC à laquelle la tâche a été créée" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Date de fin" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Date UTC à laquelle la tâche a été terminée" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Données de résultat" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Les données retournées par la tâche" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Type de tâche" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Le type de tâche qui a été exécutée" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Note pour le document" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "utilisateur" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "note" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notes" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Archive" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Original" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "expiration" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "Identifiant URL" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "lien de partage" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "liens de partage" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Chaîne de caractères" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Date" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Booléen" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Nombre entier" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Nombre décimal" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monétaire" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Lien du document" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Liste déroulante" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Texte long" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "type de données" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "Données supplémentaires" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Données supplémentaires pour le champ personnalisé, comme des options de sélection" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "champ personnalisé" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "champs personnalisés" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "instance de champs personnalisés" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "instances de champs personnalisés" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "La consommation a débuté" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Document ajouté" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Document mis à jour" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Planifié" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Dossier d'Importation" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Téléverser l'Api" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Récupération du courriel" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Web UI" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Modifié" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Champ personnalisé" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Type de déclencheur de workflow" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "Filtrer le chemin" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Ne consomme que les documents dont le chemin d'accès correspond à celui-ci s'il est spécifié. Les caractères génériques (*) sont autorisés. Insensible à la casse." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "Filtrer le nom de fichier" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Ne traiter que les documents correspondant intégralement à ce nom de fichier s'il est spécifié. Les jokers tels que *.pdf ou *facture* sont autorisés. La casse n'est pas prise en compte." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "Filtrer les documents à partir de cette règle de messagerie" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "A cette/ces étiquette(s)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "a toutes ces étiquettes" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "n'a pas ce(s) tag(s)" + +#: documents/models.py:1087 msgid "has this document type" msgstr "A ce type de document" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "n'a pas ce(s) type(s) de document" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "A ce correspondant" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "n'a pas ce(s) correspondant(s)" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "a ce chemin de sauvegarde" -#: documents/models.py:1060 +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "filtrer la requête de champ personnalisé" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "Expression de champ personnalisé encodée en JSON." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "Décalage de jours de planification" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Le nombre de jours pour décaler le déclenchement de l'horaire de" -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "La planification est récurrente" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Si la planification doit être récurrente." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "délai récurrent de planification en jours" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Le nombre de jours entre chaque déclenchement récurrent de planification." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "Champ de date du calendrier" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Champ à vérifier pour un déclencheur d'horaire" -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "Champ personnalisé date de l'horaire" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "Déclencheur workflow" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "Déclencheurs workflow" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "Objet du courriel" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "L'objet de l'e-mail, qui peut inclure des caractères de remplacement, voir la documentation." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "Corps du courriel" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Le corps (message) de l'e-mail, peut inclure des caractères de remplissage, voir la documentation." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "Courriels à" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Les adresses électroniques de destination, séparées par des virgules." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "inclure le document dans le courriel" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "url webhook" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "L’URL de destination pour la notification." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "Utiliser les paramètres" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "Envoyer en JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "paramètres du webhook" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Les paramètres à envoyer avec l'URL du webook si le corps n'est pas utilisé." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "corps du Webhook" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Le corps à envoyer avec l'URL du webhook si les paramètres ne sont pas utilisés." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "en-têtes Webhook" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Les en-têtes à envoyer avec l'URL du webhook." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "inclure le document dans le webhook" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Affectation" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Suppression" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Adresse électronique" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Type d'action de workflow" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "Attribuer un titre" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "Attribuer un titre de document, doit être un modèle Jinja2, voir la documentation." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "affecter cette étiquette" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "affecter ce type de document" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "affecter ce correspondant" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "Assigner ce chemin de stockage" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "Assigner ce propriétaire" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "accorder des autorisations de consultation à ces utilisateurs" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "accorder des autorisations de consultation à ces groupes" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "accorder des droits de modification à ces utilisateurs" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "accorder des droits de modification à ces groupes" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "assigner ces champs personnalisés" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "valeurs de champs personnalisés" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Valeurs facultatives à attribuer aux champs personnalisés." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "supprimer cette/ces étiquette(s)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "supprimer toutes les étiquettes" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "Supprimer ce(s) type(s) de document" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "supprimer tous les types de document" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "Supprimer ce(s) correspondant(s)" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "Supprimer tous les correspondants" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "Supprimer ce(s) chemin(s) de stockage" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "Supprimer tous les chemins de stockage" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "Supprimer ce(s) propriétaire(s)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "Supprimer tous les propriétaires" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "Supprimer les autorisations de consultation pour ces utilisateurs" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "Supprimer les autorisations de consultation pour ces groupes" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "Supprimer l'autorisation de modification pour ces utilisateurs" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "Supprimer l'autorisation de modification pour ces groupes" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "Supprimer toutes les autorisations" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "Supprimer tous ces champs personnalisés" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "Supprimer tous les champs personnalisés" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "courriel" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "action de workflow" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "actions de workflow" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "ordre" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "déclencheurs" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "actions" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "activé" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "workflow" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "Type de déclencheur de flux de travail" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "date d'exécution" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "exécution du workflow" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "le flux de travail s'exécute" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Expression régulière incorrecte : %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Couleur incorrecte." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Type de fichier %(type)s non pris en charge" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "L'id du champ personnalisé doit être un entier : %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Le champ personnalisé avec l'id %(id)s n'existe pas" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Les champs personnalisés doivent être une liste d'entiers ou un mappage d'identifiants à des valeurs." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Certains champs personnalisés n'existent pas ou ont été spécifiés deux fois." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Variable invalide détectée." @@ -1626,151 +1675,151 @@ msgstr "Définit la correspondance des étiquettes de code-barres" msgid "paperless application settings" msgstr "paramètres de l'application paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Anglais (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabe" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikaans" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Biélorusse" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bulgare" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Catalan" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tchèque" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Danois" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Allemand" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grec" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Anglais (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Espagnol" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Persan" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finnois" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Français" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Hongrois" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italien" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japonais" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Coréen" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxembourgeois" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norvégien" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Néerlandais" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polonais" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugais (Brésil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugais" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Roumain" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russe" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Solvaque" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovène" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbe" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Suédois" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turc" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukrainien" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vietnamien" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Chinois simplifié" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Chinois traditionnel" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administration de Paperless-ngx" diff --git a/src/locale/he_IL/LC_MESSAGES/django.po b/src/locale/he_IL/LC_MESSAGES/django.po index 4ff6d2b7f..6cd0d0e68 100644 --- a/src/locale/he_IL/LC_MESSAGES/django.po +++ b/src/locale/he_IL/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -21,1173 +21,1222 @@ msgstr "" msgid "Documents" msgstr "מסמכים" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "ערך מוכרך להיות JSON תקין." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "ביטוי שאילתה לא חוקי של שדה מותאם אישית" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "רשימת ביטויים לא חוקית. מוכרך לכלול ערך." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "סימן פעולה לוגית לא חוקי {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "חריגה ממספר תנאי השאילתה המרבי." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} הוא לא שדה מותאם אישית חוקי." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} לא תומך בביטוי שאילתה {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "חריגה מעומק הקינון המרבי." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "שדה מותאם אישית לא נמצא" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "בעלים" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "ללא" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "מילה כלשהי" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "כל המילים" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "התאמה מדויקת" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "ביטוי רגולרי" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "מילה מעורפלת" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "אוטומטי" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "שם" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "התאמה" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "אלגוריתם התאמה" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "אינו תלוי רישיות" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "מכותב" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "מכותבים" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "צבע" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "תגית דואר נכנס" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "מסמן תגית זו כתגית דואר נכנס: כל המסמכים החדשים שהתקבלו יתויגו עם תגית דואר נכנס." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "תגית" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "תגיות" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "לא ניתן להגדיר את עצמו כהורה." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "סוג מסמך" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "סוגי מסמך" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "נתיב" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "נתיב אכסון" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "נתיבי אכסון" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "לא מוצפן" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "הוצפן באמצעות GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "כותרת" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "תוכן" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "הנתונים הגולמיים של המסמך, המכילים טקסט בלבד. שדה זה משמש בעיקר לצורך חיפוש." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "סוג mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "מחרוזת בדיקה" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "מחרוזת בדיקה של המסמך המקורי." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "מחרוזת בדיקה לארכיון" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "מחרוזת הבדיקה למסמך בארכיון." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "מספר עמודים" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "מספר העמודים במסמך." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "נוצר" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "נערך לאחרונה" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "סוג אחסון" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "התווסף" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "שם קובץ" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "שם קובץ נוכחי באחסון" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "שם קובץ בארכיון" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "שם קובץ ארכיוני נוכחי באחסון" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "שם קובץ מקורי" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "השם המקורי של הקובץ לפני שהוא הועלה" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "מספר סידורי בארכיון" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "מיקומו של מסמך זה בארכיון המסמכים הפיזי שלך." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "מסמך" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "מסמכים" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "טבלה" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "כרטיסיות קטנות" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "כרטיסיות גדולות" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "כותרת" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "נוצר" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "נוסף" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "תגיות" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "מכותב" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "סוג מסמך" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "נתיב אחסון" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "הערה" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "בעלים" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "משותף" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ארכיב" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "עמודים" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "הצג בדשבורד" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "הצג בסרגל צידי" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "שדה המיון" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "מיין הפוך" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "גודל עמוד תצוגה" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "מצב תצוגה" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "שדות תצוגת מסמך" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "תצוגה שמורה" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "תצוגות שמורות" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "כותרת מכילה" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "תוכן מכיל" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "מס\"ד הוא" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "מכותב הוא" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "סוג מסמך הוא" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "בתיבה הנכנסת" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "ישנו תיוג" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "ישנו כל תיוג" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "נוצר לפני" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "נוצר לאחר" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "נוצר בשנת" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "נוצר בחודש" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "נוצר ביום" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "נוסף לפני" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "נוסף אחרי" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "נערך לפני" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "נערך אחרי" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "אינו כולל את התיוג" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "אינו בעל מס\"ד" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "כותרת או תוכן מכילים" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "שאילתת טקסט מלא" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "עוד כמו זה" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "מכיל תגים ב־" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "מערכת אוטונומית גדולה מ" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "מערכת אוטונומית קטן מ" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "מיקום האיחסון" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "קיים מכותב ב" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "ללא מכותב" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "סוג מסמך הוא" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "ללא סיווג סוג מסמך" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "נתיב האחסון" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "ללא נתיב אחסון" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "הבעלים הם" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "יש בעלים תחת" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "אין בעלים" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "אין בעלים תחת" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "עם שדה מותאם אישית" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "משותף" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "קיימים שדות מותאמים אישית" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "קיימים שדות מותאמים אישית ב-" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "לא קיימים שדות מותאמים אישית ב-" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "לא קיימים שדות מותאמים אישית" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "שאילתת שדות מותאמים אישית" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "נוצר ל-" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "נוצר מ-" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "נוסף ל-" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "נוסף מ-" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "סוג הקובץ הוא: " -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "סוג כלל" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "ערך" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "חוק סינון" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "חוקי סינון" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "משימה אוטומטית" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "משימה מתוזמנת" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "משימה ידנית" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "צרוך קובץ" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "אימון הממיין" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "בדיקת התכנות" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "מיטוב אינדקס" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "מספר משימה" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "מזהה סלרי עבור המשימה שהופעלה" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "מודע" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "אם המשימה מאושרת דרך ה-frontend או ה-API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "שם קובץ משימה" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "שם הקובץ שעבורו בוצעה המשימה" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "שם המשימה" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "שם המשימה שרצה" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "מצב המשימה" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "מצב הנוכחי של המשימה אשר רצה" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "יצירת תאריך שעה" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "שדה תאריך שעה כאשר תוצאת המשימה נוצרה ב-UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "תאריך שעה התחילה" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "שדה תאריך שעה כאשר תוצאת המשימה נוצרה ב-UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "תאריך שעה הושלמה" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "שדה תאריך שעה כאשר תוצאת המשימה נוצרה ב-UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "תוצאת מידע" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "המידע מאוחזר ע\"י המשימה" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "סוג משימה" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "סוג המשימה שהופעלה" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "הערה להמסמך" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "משתמש" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "הערה" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "הערות" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "ארכיון" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "מקור" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "תפוגה" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "טוקן" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "שתף קישור" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "שתף קישורים" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "מחרוזת" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "כתובת URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "תאריך" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "בוליאני" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "מספר שלם" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "צף" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "כספי" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "קישור למסמך" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "בחר" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "טקסט ארוך" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "סוג מידע:" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "נתונים נוספים" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "נתונים נוספים לשדה המותאם אישית, כגון אפשרויות בחירה." -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "שדה מותאם אישית" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "שדות מותאמים אישית" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "שדה מותאם אישית" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "שדות מותאמים אישית" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "הצריכה התחילה" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "המסמך התווסף" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "המסמך עודכן" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "תזמון" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "עיבוד תיקיה" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "העלאה באמצעות API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "הורד מייל" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "ממשק משתמש" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "שונה" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "שדה מותאם אישית" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "סוג מפעיל זרימת עבודה" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "נתיב מסנן" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "עבד רק קבצים המצוים בנתיב זה אם מוגדר. " -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "סנן לפי שם קובץ" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "קבל רק מסמכים שתואמים לחלוטין את שם הקובץ הזה אם צוין. תווים כלליים כגון pdf.* או *חשבונית* מותרים. חסר רגישות תווים גדולים/קטנים (אנגלית)." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "סנן מסמכים לפי כלל המייל הזה" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "מכיל את התגית/תגיות הבאות" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "יש את סוג המסמך זה" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "יש את המכותב זה" -#: documents/models.py:1056 -msgid "has this storage path" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "הקצה נתיב אחסון זה" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "קביעת ימי קיזוז" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "מספר הימים לקיזוז על ידי לוח הזמנים." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "לוח זמנים מחזורי" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr ". אם הלו\"ז אמור להיות מחזורי." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "השהיית לוח זמנים מחזורי בימים" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr ". מספר הימים בין הפעלות מחזוריות של לוח הזמנים." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "שדה תאריך ללוח הזמנים" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr ". השדה שיש לבדוק עבור הפעלת לוח הזמנים." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr ". שדה תאריך מותאם אישית ללוח הזמנים" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "טריגר של זרימת עבודה" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "טריגרים של זרימת עבודה" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "נושא אימייל" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "נושא האימייל, ניתן לכלול בו מצייני מיקום — ראו תיעוד." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "גוף אימייל" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "גוף ההודעה (טקסט), ניתן לכלול בו מצייני מיקום — ראו תיעוד." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "כתובות אימייל לנמענים" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr ".כתובות האימייל של הנמענים, מופרדות בפסיקים\n" "." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "כלול מסמך באימייל" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "כתובת יו.אר.אל של וובהוק" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "כתובת יו.אר.אל אליה תשלח ההודעה" -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "השתמש בפרמטרים" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "JSON שליחה כ " -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "weobhook פרמטרים של ה" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr ". הפרמטרים שיש לשלוח עם כתובת הוובהוקאם לא נעשה שימוש בגוף ההודעה." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "גוף ההודעה שתשלח לכתובת הוובהוק" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "webhook כותרות ה" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "הכותרות שיש לשלוח עם כתובת הוובהוק." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "כלול מסמך בוובהוק" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "הקצאה" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "הסרה" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "דוא\"ל" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "וובהוק [קריאה חוזרת]" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "סוג פעולה של זרימת עבודה" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "הקצה כותרת" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "שייך תגית זו" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "שייך סוג מסמך זה" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "שייך מכותב זה" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "הקצה נתיב אחסון זה" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "הקצה בעלים זה" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "אפשר זכויות צפיה בקובץ למשתמשים אלו" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "אפשר זכויות צפיה בקובץ לקבוצות אלו" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "אפשר זכויות שינוי הגדרות צפיה בקובץ למשתמשים אלו" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "אפשר זכויות שינוי הגדרות צפיה בקובץ לקבוצות אלו" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "הקצה שדות מותאמים אישית אלו " -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "ערכי שדה מותאמים אישית" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "ערכים אופציונליים להקצאה לשדות המותאמים אישית" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "הסר את התגים האלה" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "הסרת כל התגיות" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "הסר סוגי מסמכים" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "הסר את כל סוגי מסמכים" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "הסר מכותבים" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "הסר את כל המכותבים" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "הסר נתיבי אחסון אלה" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "הסר את כל נתיבי האכסון" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "הסר את הבעלים האלה" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "הסרת כל הבעלים" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "הסר זכויות צפיה בקובץ למשתמשים אלו" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "הסר זכויות צפיה בקובץ לקבוצות אלו" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "הסר זכויות שינוי הגדרות צפיה בקובץ למשתמשים אלו" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "הסר זכויות שינוי הגדרות שינוי בקובץ לקבוצות האלו" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "הסר את כל ההרשאות" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "הסר שדות מותאמים אישית אלה" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "הסר את כל השדות המותאמים אישית" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "אימייל" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "וובהוק [קריאה חוזרת]" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "פעולת זרימת עבודה" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "פעולות זרימות עבודה" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "סדר" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "גורמים מפעילים" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "פעולות" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "פעיל" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "זרימת עבודה" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "סוג ההפעלה של זרימת העבודה" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "תאריך הרצה" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "הרצת זרימת עבודה" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "הרצות זרימת עבודה" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "ביטוי רגולרי בלתי חוקי: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "צבע לא חוקי." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "סוג קובץ %(type)s לא נתמך" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "משתנה לא חוקי זוהה." @@ -1628,151 +1677,151 @@ msgstr "מגדיר את מיפוי הברקוד" msgid "paperless application settings" msgstr "הגדרות יישום paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "אנגלית (ארה״ב)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "ערבית" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "אפריקאנס" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "בלרוסית" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "בולגרית" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "קטלאנית" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "צ'כית" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "דנית" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "גרמנית" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "יוונית" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "אנגלית (בריטניה)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "ספרדית" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "פרסית" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "פינית" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "צרפתית" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "הונגרית" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "איטלקית" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "יפנית" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "קוריאנית" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "לוקסמבורגית" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "נורווגית" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "הולנדית" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "פולנית" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "פורטוגלית ברזילאית" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "פורטוגלית" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "רומנית" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "רוסית" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "סלובקית" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "סלובנית" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "סרבית" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "שוודית" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "טורקית" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "אוקראינית" -#: paperless/settings.py:805 -msgid "Vietnamese" -msgstr "" - #: paperless/settings.py:806 +msgid "Vietnamese" +msgstr "ווייטנאמית" + +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "סינית מפושטת" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "סינית מסורתית" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "ניהול Paperless-ngx" diff --git a/src/locale/hi_IN/LC_MESSAGES/django.po b/src/locale/hi_IN/LC_MESSAGES/django.po new file mode 100644 index 000000000..c1b1ec199 --- /dev/null +++ b/src/locale/hi_IN/LC_MESSAGES/django.po @@ -0,0 +1,2149 @@ +msgid "" +msgstr "" +"Project-Id-Version: paperless-ngx\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" +"Last-Translator: \n" +"Language-Team: Hindi\n" +"Language: hi_IN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: paperless-ngx\n" +"X-Crowdin-Project-ID: 500308\n" +"X-Crowdin-Language: hi\n" +"X-Crowdin-File: /dev/src/locale/en_US/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 14\n" + +#: documents/apps.py:8 +msgid "Documents" +msgstr "दस्तावेज़" + +#: documents/filters.py:395 +msgid "Value must be valid JSON." +msgstr "" + +#: documents/filters.py:414 +msgid "Invalid custom field query expression" +msgstr "" + +#: documents/filters.py:424 +msgid "Invalid expression list. Must be nonempty." +msgstr "" + +#: documents/filters.py:445 +msgid "Invalid logical operator {op!r}" +msgstr "" + +#: documents/filters.py:459 +msgid "Maximum number of query conditions exceeded." +msgstr "" + +#: documents/filters.py:524 +msgid "{name!r} is not a valid custom field." +msgstr "{name!r} यह एक वैध कस्टम फ़ील्ड नहीं है।" + +#: documents/filters.py:561 +msgid "{data_type} does not support query expr {expr!r}." +msgstr "" + +#: documents/filters.py:669 documents/models.py:135 +msgid "Maximum nesting depth exceeded." +msgstr "" + +#: documents/filters.py:854 +msgid "Custom field not found" +msgstr "कस्टम फ़ील्ड नहीं मिला" + +#: documents/models.py:38 documents/models.py:768 +msgid "owner" +msgstr "मालिक" + +#: documents/models.py:55 documents/models.py:983 +msgid "None" +msgstr "कुछ भी नहीं" + +#: documents/models.py:56 documents/models.py:984 +msgid "Any word" +msgstr "कोई भी शब्द" + +#: documents/models.py:57 documents/models.py:985 +msgid "All words" +msgstr "सभी शब्द" + +#: documents/models.py:58 documents/models.py:986 +msgid "Exact match" +msgstr "सटीक मिलान" + +#: documents/models.py:59 documents/models.py:987 +msgid "Regular expression" +msgstr "नियमित् एक्सप्रेशन" + +#: documents/models.py:60 documents/models.py:988 +msgid "Fuzzy word" +msgstr "" + +#: documents/models.py:61 +msgid "Automatic" +msgstr "स्वचालित" + +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 +#: paperless_mail/models.py:23 paperless_mail/models.py:143 +msgid "name" +msgstr "नाम" + +#: documents/models.py:66 documents/models.py:1052 +msgid "match" +msgstr "मिलान" + +#: documents/models.py:69 documents/models.py:1055 +msgid "matching algorithm" +msgstr "मिलान एल्गोरिथ्म" + +#: documents/models.py:74 documents/models.py:1060 +msgid "is insensitive" +msgstr "असंवेदनशील है" + +#: documents/models.py:97 documents/models.py:170 +msgid "correspondent" +msgstr "संवाददाता" + +#: documents/models.py:98 +msgid "correspondents" +msgstr "संवाददाताओं" + +#: documents/models.py:102 +msgid "color" +msgstr "रंग" + +#: documents/models.py:107 +msgid "is inbox tag" +msgstr "इनबॉक्स टैग है" + +#: documents/models.py:110 +msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." +msgstr "इस टैग को इनबॉक्स टैग के रूप में चिह्नित करता है: सभी नए उपयोग किए गए दस्तावेज़ों को इनबॉक्स टैग के साथ टैग किया जाएगा।" + +#: documents/models.py:116 +msgid "tag" +msgstr "टैग" + +#: documents/models.py:117 documents/models.py:208 +msgid "tags" +msgstr "टैग्स" + +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "स्वयं को अभिभावक के रूप में सेट नहीं किया जा सकता।" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "पैरेंट को डिसेंडेंट पर सेट नहीं किया जा सकता।" + +#: documents/models.py:142 documents/models.py:190 +msgid "document type" +msgstr "दस्तावेज़ प्रकार" + +#: documents/models.py:143 +msgid "document types" +msgstr "दस्तावेज़ प्रकार" + +#: documents/models.py:148 +msgid "path" +msgstr "" + +#: documents/models.py:152 documents/models.py:179 +msgid "storage path" +msgstr "स्टोरेज पाथ" + +#: documents/models.py:153 +msgid "storage paths" +msgstr "स्टोरेज पाथ" + +#: documents/models.py:160 +msgid "Unencrypted" +msgstr "अनएन्क्रिप्टेड" + +#: documents/models.py:161 +msgid "Encrypted with GNU Privacy Guard" +msgstr "" + +#: documents/models.py:182 +msgid "title" +msgstr "शीर्षक" + +#: documents/models.py:194 documents/models.py:682 +msgid "content" +msgstr "" + +#: documents/models.py:197 +msgid "The raw, text-only data of the document. This field is primarily used for searching." +msgstr "" + +#: documents/models.py:202 +msgid "mime type" +msgstr "" + +#: documents/models.py:212 +msgid "checksum" +msgstr "" + +#: documents/models.py:216 +msgid "The checksum of the original document." +msgstr "" + +#: documents/models.py:220 +msgid "archive checksum" +msgstr "" + +#: documents/models.py:225 +msgid "The checksum of the archived document." +msgstr "" + +#: documents/models.py:229 +msgid "page count" +msgstr "पृष्ठ संख्या" + +#: documents/models.py:236 +msgid "The number of pages of the document." +msgstr "दस्तावेज़ के पृष्ठों की संख्या।" + +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 +msgid "created" +msgstr "बनाया था" + +#: documents/models.py:247 +msgid "modified" +msgstr "संशोधित" + +#: documents/models.py:254 +msgid "storage type" +msgstr "भंडारण प्रकार" + +#: documents/models.py:262 +msgid "added" +msgstr "जोड़ा" + +#: documents/models.py:269 +msgid "filename" +msgstr "फ़ाइल का नाम" + +#: documents/models.py:275 +msgid "Current filename in storage" +msgstr "" + +#: documents/models.py:279 +msgid "archive filename" +msgstr "" + +#: documents/models.py:285 +msgid "Current archive filename in storage" +msgstr "" + +#: documents/models.py:289 +msgid "original filename" +msgstr "" + +#: documents/models.py:295 +msgid "The original name of the file when it was uploaded" +msgstr "" + +#: documents/models.py:302 +msgid "archive serial number" +msgstr "" + +#: documents/models.py:312 +msgid "The position of this document in your physical document archive." +msgstr "" + +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 +msgid "document" +msgstr "दस्तावेज़" + +#: documents/models.py:319 +msgid "documents" +msgstr "दस्तावेज़" + +#: documents/models.py:437 +msgid "Table" +msgstr "तालिका" + +#: documents/models.py:438 +msgid "Small Cards" +msgstr "" + +#: documents/models.py:439 +msgid "Large Cards" +msgstr "" + +#: documents/models.py:442 +msgid "Title" +msgstr "शीर्षक" + +#: documents/models.py:443 documents/models.py:1004 +msgid "Created" +msgstr "बनाया था" + +#: documents/models.py:444 documents/models.py:1003 +msgid "Added" +msgstr "जोड़ा" + +#: documents/models.py:445 +msgid "Tags" +msgstr "टैग्स" + +#: documents/models.py:446 +msgid "Correspondent" +msgstr "संवाददाता" + +#: documents/models.py:447 +msgid "Document Type" +msgstr "दस्तावेज़ के प्रकार" + +#: documents/models.py:448 +msgid "Storage Path" +msgstr "स्टोरेज पाथ" + +#: documents/models.py:449 +msgid "Note" +msgstr "ध्यान दें" + +#: documents/models.py:450 +msgid "Owner" +msgstr "मालिक" + +#: documents/models.py:451 +msgid "Shared" +msgstr "साझा" + +#: documents/models.py:452 +msgid "ASN" +msgstr "" + +#: documents/models.py:453 +msgid "Pages" +msgstr "पृष्ठों" + +#: documents/models.py:459 +msgid "show on dashboard" +msgstr "डैशबोर्ड पर दिखाएँ" + +#: documents/models.py:462 +msgid "show in sidebar" +msgstr "साइडबार में दिखाएँ" + +#: documents/models.py:466 +msgid "sort field" +msgstr "क्षेत्र छाँटें" + +#: documents/models.py:471 +msgid "sort reverse" +msgstr "रिवर्स छाँटें" + +#: documents/models.py:474 +msgid "View page size" +msgstr "पृष्ठ आकार देखें" + +#: documents/models.py:482 +msgid "View display mode" +msgstr "प्रदर्शन मोड देखें" + +#: documents/models.py:489 +msgid "Document display fields" +msgstr "दस्तावेज़ प्रदर्शन फ़ील्ड" + +#: documents/models.py:496 documents/models.py:559 +msgid "saved view" +msgstr "सहेजा गया दृश्य" + +#: documents/models.py:497 +msgid "saved views" +msgstr "सहेजा गया दृश्य" + +#: documents/models.py:505 +msgid "title contains" +msgstr "शीर्षक में शामिल है" + +#: documents/models.py:506 +msgid "content contains" +msgstr "" + +#: documents/models.py:507 +msgid "ASN is" +msgstr "" + +#: documents/models.py:508 +msgid "correspondent is" +msgstr "" + +#: documents/models.py:509 +msgid "document type is" +msgstr "" + +#: documents/models.py:510 +msgid "is in inbox" +msgstr "" + +#: documents/models.py:511 +msgid "has tag" +msgstr "" + +#: documents/models.py:512 +msgid "has any tag" +msgstr "" + +#: documents/models.py:513 +msgid "created before" +msgstr "पहले बनाया गया" + +#: documents/models.py:514 +msgid "created after" +msgstr "बाद में बनाया गया" + +#: documents/models.py:515 +msgid "created year is" +msgstr "निर्माण वर्ष है" + +#: documents/models.py:516 +msgid "created month is" +msgstr "निर्माण महीना है" + +#: documents/models.py:517 +msgid "created day is" +msgstr "निर्माण दिन है" + +#: documents/models.py:518 +msgid "added before" +msgstr "पहले जोड़ा गया" + +#: documents/models.py:519 +msgid "added after" +msgstr "बाद में जोड़ा गया" + +#: documents/models.py:520 +msgid "modified before" +msgstr "पहले संशोधित किया गया" + +#: documents/models.py:521 +msgid "modified after" +msgstr "बाद में संशोधित किया गया" + +#: documents/models.py:522 +msgid "does not have tag" +msgstr "टैग नहीं है" + +#: documents/models.py:523 +msgid "does not have ASN" +msgstr "ASN नहीं है" + +#: documents/models.py:524 +msgid "title or content contains" +msgstr "" + +#: documents/models.py:525 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:526 +msgid "more like this" +msgstr "इसी प्रकार के और" + +#: documents/models.py:527 +msgid "has tags in" +msgstr "में टैग है" + +#: documents/models.py:528 +msgid "ASN greater than" +msgstr "" + +#: documents/models.py:529 +msgid "ASN less than" +msgstr "" + +#: documents/models.py:530 +msgid "storage path is" +msgstr "स्टोरेज पाथ है" + +#: documents/models.py:531 +msgid "has correspondent in" +msgstr "में संवाददाता है" + +#: documents/models.py:532 +msgid "does not have correspondent in" +msgstr "में संवाददाता नहीं है" + +#: documents/models.py:533 +msgid "has document type in" +msgstr "में दस्तावेज़ का प्रकार है" + +#: documents/models.py:534 +msgid "does not have document type in" +msgstr "में दस्तावेज़ प्रकार नहीं है" + +#: documents/models.py:535 +msgid "has storage path in" +msgstr "स्टोरेज पाथ है" + +#: documents/models.py:536 +msgid "does not have storage path in" +msgstr "में भंडारण पथ है" + +#: documents/models.py:537 +msgid "owner is" +msgstr "में भंडारण पथ है" + +#: documents/models.py:538 +msgid "has owner in" +msgstr "में भंडारण पथ है" + +#: documents/models.py:539 +msgid "does not have owner" +msgstr "मालिक नहीं ह" + +#: documents/models.py:540 +msgid "does not have owner in" +msgstr "मालिक इसमें नहीं है" + +#: documents/models.py:541 +msgid "has custom field value" +msgstr "कस्टम फ़ील्ड मान है" + +#: documents/models.py:542 +msgid "is shared by me" +msgstr "मेरे द्वारा साझा किया गया है" + +#: documents/models.py:543 +msgid "has custom fields" +msgstr "कस्टम फ़ील्ड मान है" + +#: documents/models.py:544 +msgid "has custom field in" +msgstr "कस्टम फ़ील्ड इसमें है" + +#: documents/models.py:545 +msgid "does not have custom field in" +msgstr "कस्टम फ़ील्ड इसमें नहीं है" + +#: documents/models.py:546 +msgid "does not have custom field" +msgstr "कस्टम फ़ील्ड नहीं है" + +#: documents/models.py:547 +msgid "custom fields query" +msgstr "कस्टम फ़ील्ड क्वेरी" + +#: documents/models.py:548 +msgid "created to" +msgstr "इस तक बनाया गया" + +#: documents/models.py:549 +msgid "created from" +msgstr "इससे बनाया गया" + +#: documents/models.py:550 +msgid "added to" +msgstr "इसमें जोड़ा गया" + +#: documents/models.py:551 +msgid "added from" +msgstr "इससे जोड़ा गया" + +#: documents/models.py:552 +msgid "mime type is" +msgstr "माइम प्रकार है" + +#: documents/models.py:562 +msgid "rule type" +msgstr "नियम प्रकार" + +#: documents/models.py:564 +msgid "value" +msgstr "मूल्य" + +#: documents/models.py:567 +msgid "filter rule" +msgstr "फ़िल्टर नियम" + +#: documents/models.py:568 +msgid "filter rules" +msgstr "फ़िल्टर नियम" + +#: documents/models.py:592 +msgid "Auto Task" +msgstr "" + +#: documents/models.py:593 +msgid "Scheduled Task" +msgstr "" + +#: documents/models.py:594 +msgid "Manual Task" +msgstr "" + +#: documents/models.py:597 +msgid "Consume File" +msgstr "" + +#: documents/models.py:598 +msgid "Train Classifier" +msgstr "" + +#: documents/models.py:599 +msgid "Check Sanity" +msgstr "" + +#: documents/models.py:600 +msgid "Index Optimize" +msgstr "" + +#: documents/models.py:605 +msgid "Task ID" +msgstr "" + +#: documents/models.py:606 +msgid "Celery ID for the Task that was run" +msgstr "" + +#: documents/models.py:611 +msgid "Acknowledged" +msgstr "" + +#: documents/models.py:612 +msgid "If the task is acknowledged via the frontend or API" +msgstr "" + +#: documents/models.py:618 +msgid "Task Filename" +msgstr "" + +#: documents/models.py:619 +msgid "Name of the file which the Task was run for" +msgstr "वह फ़ाइल का नाम जिसके लिए कार्य चलाया गया था" + +#: documents/models.py:626 +msgid "Task Name" +msgstr "टास्क का नाम" + +#: documents/models.py:627 +msgid "Name of the task that was run" +msgstr "चलाए गए कार्य का नाम" + +#: documents/models.py:634 +msgid "Task State" +msgstr "कार्य स्थिति" + +#: documents/models.py:635 +msgid "Current state of the task being run" +msgstr "चल रहे कार्य की वर्तमान स्थिति" + +#: documents/models.py:641 +msgid "Created DateTime" +msgstr "निर्माण दिनांक-समय" + +#: documents/models.py:642 +msgid "Datetime field when the task result was created in UTC" +msgstr "UTC में कार्य परिणाम बनाए जाने का दिनांक-समय फ़ील्ड" + +#: documents/models.py:648 +msgid "Started DateTime" +msgstr "प्रारंभ दिनांक-समय" + +#: documents/models.py:649 +msgid "Datetime field when the task was started in UTC" +msgstr "UTC में कार्य शुरू किए जाने का दिनांक-समय फ़ील्ड" + +#: documents/models.py:655 +msgid "Completed DateTime" +msgstr "पूर्ण दिनांक-समय" + +#: documents/models.py:656 +msgid "Datetime field when the task was completed in UTC" +msgstr "कार्य समाप्ति का UTC डेटटाइम क्षेत्र" + +#: documents/models.py:662 +msgid "Result Data" +msgstr "परिणाम डेटा" + +#: documents/models.py:664 +msgid "The data returned by the task" +msgstr "कार्य द्वारा लौटाया गया डेटा" + +#: documents/models.py:672 +msgid "Task Type" +msgstr "कार्य प्रकार" + +#: documents/models.py:673 +msgid "The type of task that was run" +msgstr "जो कार्य चलाया गया था उसका प्रकार" + +#: documents/models.py:684 +msgid "Note for the document" +msgstr "दस्तावेज़ के लिए नोट" + +#: documents/models.py:708 +msgid "user" +msgstr "उपयोगकर्ता" + +#: documents/models.py:713 +msgid "note" +msgstr "नोट" + +#: documents/models.py:714 +msgid "notes" +msgstr "नोट्स" + +#: documents/models.py:722 +msgid "Archive" +msgstr "अभिलेखागार" + +#: documents/models.py:723 +msgid "Original" +msgstr "मूल" + +#: documents/models.py:734 paperless_mail/models.py:75 +msgid "expiration" +msgstr "समय सीमा समाप्ति" + +#: documents/models.py:741 +msgid "slug" +msgstr "काउंटर" + +#: documents/models.py:773 +msgid "share link" +msgstr "लिंक शेयर करें" + +#: documents/models.py:774 +msgid "share links" +msgstr "साझा लिंक्स" + +#: documents/models.py:786 +msgid "String" +msgstr "स्ट्रिंग" + +#: documents/models.py:787 +msgid "URL" +msgstr "यूआरएल" + +#: documents/models.py:788 +msgid "Date" +msgstr "दिनांक" + +#: documents/models.py:789 +msgid "Boolean" +msgstr "बूलियन" + +#: documents/models.py:790 +msgid "Integer" +msgstr "पूर्णांक" + +#: documents/models.py:791 +msgid "Float" +msgstr "फ्लोट" + +#: documents/models.py:792 +msgid "Monetary" +msgstr "" + +#: documents/models.py:793 +msgid "Document Link" +msgstr "" + +#: documents/models.py:794 +msgid "Select" +msgstr "" + +#: documents/models.py:795 +msgid "Long Text" +msgstr "" + +#: documents/models.py:807 +msgid "data type" +msgstr "" + +#: documents/models.py:814 +msgid "extra data" +msgstr "" + +#: documents/models.py:818 +msgid "Extra data for the custom field, such as select options" +msgstr "" + +#: documents/models.py:824 +msgid "custom field" +msgstr "" + +#: documents/models.py:825 +msgid "custom fields" +msgstr "" + +#: documents/models.py:925 +msgid "custom field instance" +msgstr "" + +#: documents/models.py:926 +msgid "custom field instances" +msgstr "" + +#: documents/models.py:991 +msgid "Consumption Started" +msgstr "" + +#: documents/models.py:992 +msgid "Document Added" +msgstr "" + +#: documents/models.py:993 +msgid "Document Updated" +msgstr "" + +#: documents/models.py:994 +msgid "Scheduled" +msgstr "" + +#: documents/models.py:997 +msgid "Consume Folder" +msgstr "" + +#: documents/models.py:998 +msgid "Api Upload" +msgstr "" + +#: documents/models.py:999 +msgid "Mail Fetch" +msgstr "" + +#: documents/models.py:1000 +msgid "Web UI" +msgstr "" + +#: documents/models.py:1005 +msgid "Modified" +msgstr "" + +#: documents/models.py:1006 +msgid "Custom Field" +msgstr "" + +#: documents/models.py:1009 +msgid "Workflow Trigger Type" +msgstr "" + +#: documents/models.py:1021 +msgid "filter path" +msgstr "" + +#: documents/models.py:1026 +msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." +msgstr "" + +#: documents/models.py:1033 +msgid "filter filename" +msgstr "" + +#: documents/models.py:1038 paperless_mail/models.py:200 +msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." +msgstr "" + +#: documents/models.py:1049 +msgid "filter documents from this mail rule" +msgstr "" + +#: documents/models.py:1065 +msgid "has these tag(s)" +msgstr "" + +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 +msgid "has this document type" +msgstr "" + +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 +msgid "has this correspondent" +msgstr "" + +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 +msgid "schedule offset days" +msgstr "" + +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." +msgstr "" + +#: documents/models.py:1151 +msgid "schedule recurring delay in days" +msgstr "" + +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." +msgstr "" + +#: documents/models.py:1160 +msgid "schedule date field" +msgstr "" + +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." +msgstr "" + +#: documents/models.py:1174 +msgid "schedule date custom field" +msgstr "" + +#: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 +msgid "The body to send with the webhook URL if parameters not used." +msgstr "" + +#: documents/models.py:1257 +msgid "webhook headers" +msgstr "" + +#: documents/models.py:1260 +msgid "The headers to send with the webhook URL." +msgstr "" + +#: documents/models.py:1265 +msgid "include document in webhook" +msgstr "" + +#: documents/models.py:1276 +msgid "Assignment" +msgstr "" + +#: documents/models.py:1280 +msgid "Removal" +msgstr "" + +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 +msgid "Email" +msgstr "" + +#: documents/models.py:1288 +msgid "Webhook" +msgstr "" + +#: documents/models.py:1292 +msgid "Workflow Action Type" +msgstr "" + +#: documents/models.py:1298 +msgid "assign title" +msgstr "" + +#: documents/models.py:1302 +msgid "Assign a document title, must be a Jinja2 template, see documentation." +msgstr "" + +#: documents/models.py:1310 paperless_mail/models.py:274 +msgid "assign this tag" +msgstr "" + +#: documents/models.py:1319 paperless_mail/models.py:282 +msgid "assign this document type" +msgstr "" + +#: documents/models.py:1328 paperless_mail/models.py:296 +msgid "assign this correspondent" +msgstr "" + +#: documents/models.py:1337 +msgid "assign this storage path" +msgstr "" + +#: documents/models.py:1346 +msgid "assign this owner" +msgstr "" + +#: documents/models.py:1353 +msgid "grant view permissions to these users" +msgstr "" + +#: documents/models.py:1360 +msgid "grant view permissions to these groups" +msgstr "" + +#: documents/models.py:1367 +msgid "grant change permissions to these users" +msgstr "" + +#: documents/models.py:1374 +msgid "grant change permissions to these groups" +msgstr "" + +#: documents/models.py:1381 +msgid "assign these custom fields" +msgstr "" + +#: documents/models.py:1385 +msgid "custom field values" +msgstr "" + +#: documents/models.py:1389 +msgid "Optional values to assign to the custom fields." +msgstr "" + +#: documents/models.py:1398 +msgid "remove these tag(s)" +msgstr "" + +#: documents/models.py:1403 +msgid "remove all tags" +msgstr "" + +#: documents/models.py:1410 +msgid "remove these document type(s)" +msgstr "" + +#: documents/models.py:1415 +msgid "remove all document types" +msgstr "" + +#: documents/models.py:1422 +msgid "remove these correspondent(s)" +msgstr "" + +#: documents/models.py:1427 +msgid "remove all correspondents" +msgstr "" + +#: documents/models.py:1434 +msgid "remove these storage path(s)" +msgstr "" + +#: documents/models.py:1439 +msgid "remove all storage paths" +msgstr "" + +#: documents/models.py:1446 +msgid "remove these owner(s)" +msgstr "" + +#: documents/models.py:1451 +msgid "remove all owners" +msgstr "" + +#: documents/models.py:1458 +msgid "remove view permissions for these users" +msgstr "" + +#: documents/models.py:1465 +msgid "remove view permissions for these groups" +msgstr "" + +#: documents/models.py:1472 +msgid "remove change permissions for these users" +msgstr "" + +#: documents/models.py:1479 +msgid "remove change permissions for these groups" +msgstr "" + +#: documents/models.py:1484 +msgid "remove all permissions" +msgstr "" + +#: documents/models.py:1491 +msgid "remove these custom fields" +msgstr "" + +#: documents/models.py:1496 +msgid "remove all custom fields" +msgstr "" + +#: documents/models.py:1505 +msgid "email" +msgstr "" + +#: documents/models.py:1514 +msgid "webhook" +msgstr "" + +#: documents/models.py:1518 +msgid "workflow action" +msgstr "" + +#: documents/models.py:1519 +msgid "workflow actions" +msgstr "" + +#: documents/models.py:1528 paperless_mail/models.py:145 +msgid "order" +msgstr "" + +#: documents/models.py:1534 +msgid "triggers" +msgstr "" + +#: documents/models.py:1541 +msgid "actions" +msgstr "" + +#: documents/models.py:1544 paperless_mail/models.py:154 +msgid "enabled" +msgstr "" + +#: documents/models.py:1555 +msgid "workflow" +msgstr "" + +#: documents/models.py:1559 +msgid "workflow trigger type" +msgstr "" + +#: documents/models.py:1573 +msgid "date run" +msgstr "" + +#: documents/models.py:1579 +msgid "workflow run" +msgstr "" + +#: documents/models.py:1580 +msgid "workflow runs" +msgstr "" + +#: documents/serialisers.py:640 +msgid "Invalid color." +msgstr "" + +#: documents/serialisers.py:1826 +#, python-format +msgid "File type %(type)s not supported" +msgstr "" + +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 +msgid "Invalid variable detected." +msgstr "" + +#: documents/templates/account/account_inactive.html:5 +msgid "Paperless-ngx account inactive" +msgstr "" + +#: documents/templates/account/account_inactive.html:9 +msgid "Account inactive." +msgstr "" + +#: documents/templates/account/account_inactive.html:14 +msgid "This account is inactive." +msgstr "" + +#: documents/templates/account/account_inactive.html:16 +msgid "Return to login" +msgstr "" + +#: documents/templates/account/email/base_message.txt:1 +#, python-format +msgid "Hello from %(site_name)s!" +msgstr "" + +#: documents/templates/account/email/base_message.txt:5 +#, python-format +msgid "Thank you for using %(site_name)s!\n" +"%(site_domain)s" +msgstr "" + +#: documents/templates/account/login.html:5 +msgid "Paperless-ngx sign in" +msgstr "" + +#: documents/templates/account/login.html:10 +msgid "Please sign in." +msgstr "" + +#: documents/templates/account/login.html:12 +#, python-format +msgid "Don't have an account yet? Sign up" +msgstr "" + +#: documents/templates/account/login.html:25 +#: documents/templates/account/signup.html:22 +#: documents/templates/socialaccount/signup.html:13 +msgid "Username" +msgstr "" + +#: documents/templates/account/login.html:26 +#: documents/templates/account/signup.html:24 +msgid "Password" +msgstr "" + +#: documents/templates/account/login.html:36 +#: documents/templates/mfa/authenticate.html:23 +msgid "Sign in" +msgstr "" + +#: documents/templates/account/login.html:40 +msgid "Forgot your password?" +msgstr "" + +#: documents/templates/account/login.html:51 +#: documents/templates/account/signup.html:57 +msgid "or sign in via" +msgstr "" + +#: documents/templates/account/password_reset.html:5 +msgid "Paperless-ngx reset password request" +msgstr "" + +#: documents/templates/account/password_reset.html:9 +msgid "Enter your email address below, and we'll email instructions for setting a new one." +msgstr "" + +#: documents/templates/account/password_reset.html:12 +msgid "An error occurred. Please try again." +msgstr "" + +#: documents/templates/account/password_reset.html:21 +msgid "Send me instructions!" +msgstr "" + +#: documents/templates/account/password_reset_done.html:5 +msgid "Paperless-ngx reset password sent" +msgstr "" + +#: documents/templates/account/password_reset_done.html:9 +msgid "Check your inbox." +msgstr "" + +#: documents/templates/account/password_reset_done.html:13 +msgid "We've emailed you instructions for setting your password. You should receive the email shortly!" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:5 +msgid "Paperless-ngx reset password confirmation" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:9 +msgid "Set a new password." +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:15 +msgid "request a new password reset" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:17 +msgid "New Password" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:18 +msgid "Confirm Password" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:28 +msgid "Change my password" +msgstr "" + +#: documents/templates/account/password_reset_from_key_done.html:5 +msgid "Paperless-ngx reset password complete" +msgstr "" + +#: documents/templates/account/password_reset_from_key_done.html:9 +msgid "Password reset complete." +msgstr "" + +#: documents/templates/account/password_reset_from_key_done.html:14 +#, python-format +msgid "Your new password has been set. You can now log in" +msgstr "" + +#: documents/templates/account/signup.html:5 +msgid "Paperless-ngx sign up" +msgstr "" + +#: documents/templates/account/signup.html:11 +#, python-format +msgid "Already have an account? Sign in" +msgstr "" + +#: documents/templates/account/signup.html:19 +msgid "Note: This is the first user account for this installation and will be granted superuser privileges." +msgstr "" + +#: documents/templates/account/signup.html:23 +#: documents/templates/socialaccount/signup.html:14 +msgid "Email (optional)" +msgstr "" + +#: documents/templates/account/signup.html:25 +msgid "Password (again)" +msgstr "" + +#: documents/templates/account/signup.html:43 +#: documents/templates/socialaccount/signup.html:27 +msgid "Sign up" +msgstr "" + +#: documents/templates/index.html:61 +msgid "Paperless-ngx is loading..." +msgstr "" + +#: documents/templates/index.html:62 +msgid "Still here?! Hmm, something might be wrong." +msgstr "" + +#: documents/templates/index.html:62 +msgid "Here's a link to the docs." +msgstr "" + +#: documents/templates/mfa/authenticate.html:7 +msgid "Paperless-ngx Two-Factor Authentication" +msgstr "" + +#: documents/templates/mfa/authenticate.html:12 +msgid "Your account is protected by two-factor authentication. Please enter an authenticator code:" +msgstr "" + +#: documents/templates/mfa/authenticate.html:17 +msgid "Code" +msgstr "" + +#: documents/templates/mfa/authenticate.html:24 +msgid "Cancel" +msgstr "" + +#: documents/templates/paperless-ngx/base.html:58 +msgid "Share link was not found." +msgstr "" + +#: documents/templates/paperless-ngx/base.html:62 +msgid "Share link has expired." +msgstr "" + +#: documents/templates/socialaccount/authentication_error.html:5 +#: documents/templates/socialaccount/login.html:5 +msgid "Paperless-ngx social account sign in" +msgstr "" + +#: documents/templates/socialaccount/authentication_error.html:10 +#, python-format +msgid "An error occurred while attempting to login via your social network account. Back to the login page" +msgstr "" + +#: documents/templates/socialaccount/login.html:10 +#, python-format +msgid "You are about to connect a new third-party account from %(provider)s." +msgstr "" + +#: documents/templates/socialaccount/login.html:13 +msgid "Continue" +msgstr "" + +#: documents/templates/socialaccount/signup.html:5 +msgid "Paperless-ngx social account sign up" +msgstr "" + +#: documents/templates/socialaccount/signup.html:10 +#, python-format +msgid "You are about to use your %(provider_name)s account to login." +msgstr "" + +#: documents/templates/socialaccount/signup.html:11 +msgid "As a final step, please complete the following form:" +msgstr "" + +#: documents/validators.py:24 +#, python-brace-format +msgid "Unable to parse URI {value}, missing scheme" +msgstr "" + +#: documents/validators.py:29 +#, python-brace-format +msgid "Unable to parse URI {value}, missing net location or path" +msgstr "" + +#: documents/validators.py:36 +msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}" +msgstr "" + +#: documents/validators.py:45 +#, python-brace-format +msgid "Unable to parse URI {value}" +msgstr "" + +#: paperless/apps.py:11 +msgid "Paperless" +msgstr "" + +#: paperless/models.py:26 +msgid "pdf" +msgstr "" + +#: paperless/models.py:27 +msgid "pdfa" +msgstr "" + +#: paperless/models.py:28 +msgid "pdfa-1" +msgstr "" + +#: paperless/models.py:29 +msgid "pdfa-2" +msgstr "" + +#: paperless/models.py:30 +msgid "pdfa-3" +msgstr "" + +#: paperless/models.py:39 +msgid "skip" +msgstr "" + +#: paperless/models.py:40 +msgid "redo" +msgstr "" + +#: paperless/models.py:41 +msgid "force" +msgstr "" + +#: paperless/models.py:42 +msgid "skip_noarchive" +msgstr "" + +#: paperless/models.py:50 +msgid "never" +msgstr "" + +#: paperless/models.py:51 +msgid "with_text" +msgstr "" + +#: paperless/models.py:52 +msgid "always" +msgstr "" + +#: paperless/models.py:60 +msgid "clean" +msgstr "" + +#: paperless/models.py:61 +msgid "clean-final" +msgstr "" + +#: paperless/models.py:62 +msgid "none" +msgstr "" + +#: paperless/models.py:70 +msgid "LeaveColorUnchanged" +msgstr "" + +#: paperless/models.py:71 +msgid "RGB" +msgstr "" + +#: paperless/models.py:72 +msgid "UseDeviceIndependentColor" +msgstr "" + +#: paperless/models.py:73 +msgid "Gray" +msgstr "" + +#: paperless/models.py:74 +msgid "CMYK" +msgstr "" + +#: paperless/models.py:83 +msgid "Sets the output PDF type" +msgstr "" + +#: paperless/models.py:95 +msgid "Do OCR from page 1 to this value" +msgstr "" + +#: paperless/models.py:101 +msgid "Do OCR using these languages" +msgstr "" + +#: paperless/models.py:108 +msgid "Sets the OCR mode" +msgstr "" + +#: paperless/models.py:116 +msgid "Controls the generation of an archive file" +msgstr "" + +#: paperless/models.py:124 +msgid "Sets image DPI fallback value" +msgstr "" + +#: paperless/models.py:131 +msgid "Controls the unpaper cleaning" +msgstr "" + +#: paperless/models.py:138 +msgid "Enables deskew" +msgstr "" + +#: paperless/models.py:141 +msgid "Enables page rotation" +msgstr "" + +#: paperless/models.py:146 +msgid "Sets the threshold for rotation of pages" +msgstr "" + +#: paperless/models.py:152 +msgid "Sets the maximum image size for decompression" +msgstr "" + +#: paperless/models.py:158 +msgid "Sets the Ghostscript color conversion strategy" +msgstr "" + +#: paperless/models.py:166 +msgid "Adds additional user arguments for OCRMyPDF" +msgstr "" + +#: paperless/models.py:175 +msgid "Application title" +msgstr "" + +#: paperless/models.py:182 +msgid "Application logo" +msgstr "" + +#: paperless/models.py:197 +msgid "Enables barcode scanning" +msgstr "" + +#: paperless/models.py:203 +msgid "Enables barcode TIFF support" +msgstr "" + +#: paperless/models.py:209 +msgid "Sets the barcode string" +msgstr "" + +#: paperless/models.py:217 +msgid "Retains split pages" +msgstr "" + +#: paperless/models.py:223 +msgid "Enables ASN barcode" +msgstr "" + +#: paperless/models.py:229 +msgid "Sets the ASN barcode prefix" +msgstr "" + +#: paperless/models.py:237 +msgid "Sets the barcode upscale factor" +msgstr "" + +#: paperless/models.py:244 +msgid "Sets the barcode DPI" +msgstr "" + +#: paperless/models.py:251 +msgid "Sets the maximum pages for barcode" +msgstr "" + +#: paperless/models.py:258 +msgid "Enables tag barcode" +msgstr "" + +#: paperless/models.py:264 +msgid "Sets the tag barcode mapping" +msgstr "" + +#: paperless/models.py:269 +msgid "paperless application settings" +msgstr "" + +#: paperless/settings.py:773 +msgid "English (US)" +msgstr "" + +#: paperless/settings.py:774 +msgid "Arabic" +msgstr "" + +#: paperless/settings.py:775 +msgid "Afrikaans" +msgstr "" + +#: paperless/settings.py:776 +msgid "Belarusian" +msgstr "" + +#: paperless/settings.py:777 +msgid "Bulgarian" +msgstr "" + +#: paperless/settings.py:778 +msgid "Catalan" +msgstr "" + +#: paperless/settings.py:779 +msgid "Czech" +msgstr "" + +#: paperless/settings.py:780 +msgid "Danish" +msgstr "" + +#: paperless/settings.py:781 +msgid "German" +msgstr "" + +#: paperless/settings.py:782 +msgid "Greek" +msgstr "" + +#: paperless/settings.py:783 +msgid "English (GB)" +msgstr "" + +#: paperless/settings.py:784 +msgid "Spanish" +msgstr "" + +#: paperless/settings.py:785 +msgid "Persian" +msgstr "" + +#: paperless/settings.py:786 +msgid "Finnish" +msgstr "" + +#: paperless/settings.py:787 +msgid "French" +msgstr "" + +#: paperless/settings.py:788 +msgid "Hungarian" +msgstr "" + +#: paperless/settings.py:789 +msgid "Italian" +msgstr "" + +#: paperless/settings.py:790 +msgid "Japanese" +msgstr "" + +#: paperless/settings.py:791 +msgid "Korean" +msgstr "" + +#: paperless/settings.py:792 +msgid "Luxembourgish" +msgstr "" + +#: paperless/settings.py:793 +msgid "Norwegian" +msgstr "" + +#: paperless/settings.py:794 +msgid "Dutch" +msgstr "" + +#: paperless/settings.py:795 +msgid "Polish" +msgstr "" + +#: paperless/settings.py:796 +msgid "Portuguese (Brazil)" +msgstr "" + +#: paperless/settings.py:797 +msgid "Portuguese" +msgstr "" + +#: paperless/settings.py:798 +msgid "Romanian" +msgstr "" + +#: paperless/settings.py:799 +msgid "Russian" +msgstr "" + +#: paperless/settings.py:800 +msgid "Slovak" +msgstr "" + +#: paperless/settings.py:801 +msgid "Slovenian" +msgstr "" + +#: paperless/settings.py:802 +msgid "Serbian" +msgstr "" + +#: paperless/settings.py:803 +msgid "Swedish" +msgstr "" + +#: paperless/settings.py:804 +msgid "Turkish" +msgstr "" + +#: paperless/settings.py:805 +msgid "Ukrainian" +msgstr "" + +#: paperless/settings.py:806 +msgid "Vietnamese" +msgstr "" + +#: paperless/settings.py:807 +msgid "Chinese Simplified" +msgstr "" + +#: paperless/settings.py:808 +msgid "Chinese Traditional" +msgstr "" + +#: paperless/urls.py:370 +msgid "Paperless-ngx administration" +msgstr "" + +#: paperless_mail/admin.py:39 +msgid "Authentication" +msgstr "" + +#: paperless_mail/admin.py:42 +msgid "Advanced settings" +msgstr "" + +#: paperless_mail/admin.py:58 +msgid "Filter" +msgstr "" + +#: paperless_mail/admin.py:61 +msgid "Paperless will only process mails that match ALL of the filters given below." +msgstr "" + +#: paperless_mail/admin.py:78 +msgid "Actions" +msgstr "" + +#: paperless_mail/admin.py:81 +msgid "The action applied to the mail. This action is only performed when the mail body or attachments were consumed from the mail." +msgstr "" + +#: paperless_mail/admin.py:89 +msgid "Metadata" +msgstr "" + +#: paperless_mail/admin.py:92 +msgid "Assign metadata to documents consumed from this rule automatically. If you do not assign tags, types or correspondents here, paperless will still process all matching rules that you have defined." +msgstr "" + +#: paperless_mail/apps.py:11 +msgid "Paperless mail" +msgstr "" + +#: paperless_mail/models.py:10 +msgid "mail account" +msgstr "" + +#: paperless_mail/models.py:11 +msgid "mail accounts" +msgstr "" + +#: paperless_mail/models.py:14 +msgid "No encryption" +msgstr "" + +#: paperless_mail/models.py:15 +msgid "Use SSL" +msgstr "" + +#: paperless_mail/models.py:16 +msgid "Use STARTTLS" +msgstr "" + +#: paperless_mail/models.py:19 +msgid "IMAP" +msgstr "" + +#: paperless_mail/models.py:20 +msgid "Gmail OAuth" +msgstr "" + +#: paperless_mail/models.py:21 +msgid "Outlook OAuth" +msgstr "" + +#: paperless_mail/models.py:25 +msgid "IMAP server" +msgstr "" + +#: paperless_mail/models.py:28 +msgid "IMAP port" +msgstr "" + +#: paperless_mail/models.py:32 +msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections." +msgstr "" + +#: paperless_mail/models.py:38 +msgid "IMAP security" +msgstr "" + +#: paperless_mail/models.py:43 +msgid "username" +msgstr "" + +#: paperless_mail/models.py:45 +msgid "password" +msgstr "" + +#: paperless_mail/models.py:47 +msgid "Is token authentication" +msgstr "" + +#: paperless_mail/models.py:50 +msgid "character set" +msgstr "" + +#: paperless_mail/models.py:54 +msgid "The character set to use when communicating with the mail server, such as 'UTF-8' or 'US-ASCII'." +msgstr "" + +#: paperless_mail/models.py:60 +msgid "account type" +msgstr "" + +#: paperless_mail/models.py:66 +msgid "refresh token" +msgstr "" + +#: paperless_mail/models.py:70 +msgid "The refresh token to use for token authentication e.g. with oauth2." +msgstr "" + +#: paperless_mail/models.py:79 +msgid "The expiration date of the refresh token. " +msgstr "" + +#: paperless_mail/models.py:89 +msgid "mail rule" +msgstr "" + +#: paperless_mail/models.py:90 +msgid "mail rules" +msgstr "" + +#: paperless_mail/models.py:104 paperless_mail/models.py:115 +msgid "Only process attachments." +msgstr "" + +#: paperless_mail/models.py:105 +msgid "Process full Mail (with embedded attachments in file) as .eml" +msgstr "" + +#: paperless_mail/models.py:109 +msgid "Process full Mail (with embedded attachments in file) as .eml + process attachments as separate documents" +msgstr "" + +#: paperless_mail/models.py:116 +msgid "Process all files, including 'inline' attachments." +msgstr "" + +#: paperless_mail/models.py:119 +msgid "System default" +msgstr "" + +#: paperless_mail/models.py:120 +msgid "Text, then HTML" +msgstr "" + +#: paperless_mail/models.py:121 +msgid "HTML, then text" +msgstr "" + +#: paperless_mail/models.py:122 +msgid "HTML only" +msgstr "" + +#: paperless_mail/models.py:123 +msgid "Text only" +msgstr "" + +#: paperless_mail/models.py:126 +msgid "Delete" +msgstr "" + +#: paperless_mail/models.py:127 +msgid "Move to specified folder" +msgstr "" + +#: paperless_mail/models.py:128 +msgid "Mark as read, don't process read mails" +msgstr "" + +#: paperless_mail/models.py:129 +msgid "Flag the mail, don't process flagged mails" +msgstr "" + +#: paperless_mail/models.py:130 +msgid "Tag the mail with specified tag, don't process tagged mails" +msgstr "" + +#: paperless_mail/models.py:133 +msgid "Use subject as title" +msgstr "" + +#: paperless_mail/models.py:134 +msgid "Use attachment filename as title" +msgstr "" + +#: paperless_mail/models.py:135 +msgid "Do not assign title from rule" +msgstr "" + +#: paperless_mail/models.py:138 +msgid "Do not assign a correspondent" +msgstr "" + +#: paperless_mail/models.py:139 +msgid "Use mail address" +msgstr "" + +#: paperless_mail/models.py:140 +msgid "Use name (or mail address if not available)" +msgstr "" + +#: paperless_mail/models.py:141 +msgid "Use correspondent selected below" +msgstr "" + +#: paperless_mail/models.py:151 +msgid "account" +msgstr "" + +#: paperless_mail/models.py:157 paperless_mail/models.py:318 +msgid "folder" +msgstr "" + +#: paperless_mail/models.py:161 +msgid "Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server." +msgstr "" + +#: paperless_mail/models.py:167 +msgid "filter from" +msgstr "" + +#: paperless_mail/models.py:174 +msgid "filter to" +msgstr "" + +#: paperless_mail/models.py:181 +msgid "filter subject" +msgstr "" + +#: paperless_mail/models.py:188 +msgid "filter body" +msgstr "" + +#: paperless_mail/models.py:195 +msgid "filter attachment filename inclusive" +msgstr "" + +#: paperless_mail/models.py:207 +msgid "filter attachment filename exclusive" +msgstr "" + +#: paperless_mail/models.py:212 +msgid "Do not consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." +msgstr "" + +#: paperless_mail/models.py:219 +msgid "maximum age" +msgstr "" + +#: paperless_mail/models.py:221 +msgid "Specified in days." +msgstr "" + +#: paperless_mail/models.py:225 +msgid "attachment type" +msgstr "" + +#: paperless_mail/models.py:229 +msgid "Inline attachments include embedded images, so it's best to combine this option with a filename filter." +msgstr "" + +#: paperless_mail/models.py:235 +msgid "consumption scope" +msgstr "" + +#: paperless_mail/models.py:241 +msgid "pdf layout" +msgstr "" + +#: paperless_mail/models.py:247 +msgid "action" +msgstr "" + +#: paperless_mail/models.py:253 +msgid "action parameter" +msgstr "" + +#: paperless_mail/models.py:258 +msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action. Subfolders must be separated by dots." +msgstr "" + +#: paperless_mail/models.py:266 +msgid "assign title from" +msgstr "" + +#: paperless_mail/models.py:286 +msgid "assign correspondent from" +msgstr "" + +#: paperless_mail/models.py:300 +msgid "Assign the rule owner to documents" +msgstr "" + +#: paperless_mail/models.py:326 +msgid "uid" +msgstr "" + +#: paperless_mail/models.py:334 +msgid "subject" +msgstr "" + +#: paperless_mail/models.py:342 +msgid "received" +msgstr "" + +#: paperless_mail/models.py:349 +msgid "processed" +msgstr "" + +#: paperless_mail/models.py:355 +msgid "status" +msgstr "" + +#: paperless_mail/models.py:363 +msgid "error" +msgstr "" + diff --git a/src/locale/hr_HR/LC_MESSAGES/django.po b/src/locale/hr_HR/LC_MESSAGES/django.po index 0f61d237f..19948956e 100644 --- a/src/locale/hr_HR/LC_MESSAGES/django.po +++ b/src/locale/hr_HR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Croatian\n" "Language: hr_HR\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumenti" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "vlasnik" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Ništa" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Bilo koja riječ" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Sve riječi" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Točno podudaranje" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Uobičajeni izraz" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "ime" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "podudarati" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritam podudaranja" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "ne razlikuje velika i mala slova" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "dopisnik" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "dopisnici" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "boja" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "oznaka ulazne pošte (inbox)" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Označava ovu oznaku kao oznaku ulazne pošte (inbox): Svi novopotrošeni dokumenti bit će označeni oznakama ulazne pošte (inbox)." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "oznaka" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "oznake" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "vrsta dokumenta" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "vrste dokumenta" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "putanja" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "putanja pohrane" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "putanje pohrane" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Nekriptirano" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Enkriptirano s GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "naslov" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "sadržaj" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Neobrađeni tekstualni podaci dokumenta. Ovo se polje koristi prvenstveno za pretraživanje." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "vrste mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrolni zbroj" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Kontrolni zbroj originalnog dokumenta." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arhivski kontrolni zbroj" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Kontrolni zbroj arhiviranog dokumenta." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "stvoreno" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "modificiran" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "vrsta pohrane" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "dodano" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "naziv datoteke" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Trenutni naziv pohranjene datoteke" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "naziv arhivirane datoteke" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Trenutni naziv arhivirane pohranjene datoteke" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "izvorno ime datoteke" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Izvorno ime datoteke prilikom prijenosa" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "arhivirani serijski broj" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Položaj ovog dokumenta u vašoj fizičkoj arhivi dokumenata." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumenti" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "prikaži na nadzornoj ploči" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "prikaži u bočnoj traci" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "sortiraj polje" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "obrnuto sortiranje" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "spremljen prikaz" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "spremljeni prikazi" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "naslov sadrži" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "sadržaj sadrži" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN je" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "dopisnik je" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "vrsta dokumenta je" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "nalazi se u ulaznoj pošti" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "ima oznaku" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "ima bilo kakvu oznaku" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "stvoreni prije" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "stvoreno poslije" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "godina stvaranja je" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "mjesec stvaranja je" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "dan stvaranja je" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "dodano prije" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "dodano poslije" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "modificirano prije" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "modificirano poslije" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "ne posjeduje oznaku" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "ne posjeduje ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "naziv ili sadržaj sadrži" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "upit za cijeli tekst" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "sadrži oznake" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN veći od" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN manji od" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "putanja za pohranu je" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "ima tip dokumenta u" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "nema tip dokumenta u" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" -msgstr "" +msgstr "ima vlasnika u" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "vrsta pravila" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "vrijednost" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "pravilo filtera" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "pravila filtera" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Zadatak ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID zadatka koji je pokrenut" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Potvrđeno" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Ako je zadatak potvrđen putem korisničkog sučelja ili API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Naziv datoteke zadatka" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Name of the file which the Task was run for" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Ime Zadatka" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Stanje zadatka" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Trenutno stanje izvršavanja zadatka" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Datum i vrijeme stvaranja" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Polje datuma i vremena kada je rezultat zadatka stvoren u UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Početak - DateTime" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Polje datuma i vremena kada je zadatak započeo u UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Završeno datum i vrijeme" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Polje datuma i vremena kada je zadatak završio u UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Podaci o rezultatima" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Podaci zaprimljeni od zadatka" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "korisnik" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "bilješka" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "bilješka" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arhiva" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Izvornik" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "istječe" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "dijeli vezu" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Datum" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Plutajući" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Poveznica dokumenta" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "vrsta dokumenta" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Konzumirajte samo dokumente koji u potpunosti odgovaraju ovom nazivu datoteke ako je navedeno. Dopušteni su zamjenski znakovi kao što su *.pdf ili *faktura*. Neosjetljivo je na mala i mala slova." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "dodijeli oznaku" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "dodijeliti ovu vrstu dokumenta" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "dodijelite ovom dopisniku" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "dodijeliti ova prilagođena polja" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "redoslijed" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Nevažeći regularni izraz: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Nevažeća boja." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Vrsta datoteke %(type)s nije podržana" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Otkrivena je nevaljana vrsta datoteke." @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Engleski (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arapski" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Bjeloruski" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Češki" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Danski" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Njemački" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Engleski (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Španjolski" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francuski" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Talijanski" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luksemburški" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Nizozemski" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Poljski" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugalski (Brazil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugalski" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumunjski" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Ruski" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovenski" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Srpski" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Švedski" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turski" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Pojednostavljeni kineski" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx administracija" diff --git a/src/locale/hu_HU/LC_MESSAGES/django.po b/src/locale/hu_HU/LC_MESSAGES/django.po index 70883a550..8eb4632bb 100644 --- a/src/locale/hu_HU/LC_MESSAGES/django.po +++ b/src/locale/hu_HU/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumentumok" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." -msgstr "Érvényes JSON érték szükséges" +msgstr "Érvényes JSON érték szükséges." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Érvénytelen egyéni mező lekérdezési kifejezés" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Érvénytelen kifejezéslista. Nem lehet üres." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Érvénytelen logikai operátor {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Maximum lekérdezési feltételszám átlépve." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} nem érvényes egyéni mező." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." -msgstr "{data_type} nem támogatja a(z) {expr!r} lekérdezési kifejezést." +msgstr "A(z) {data_type} nem támogatja a {expr!r} kifejezés lekérdezést." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Maximum beágyazási mélység túllépve." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Az egyéni mező nem található" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "tulajdonos" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Nincs" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Bármilyen szó" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Minden szó" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Pontos egyezés" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Reguláris kifejezés" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Fuzzy szó" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatikus" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "név" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "egyezés" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "egyeztető algoritmus" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "érzéketlen" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "kapcsolattartó" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "kapcsolattartók" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "szín" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "a postaláda címke" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Ezt a címkét bejövő címkeként jelöli: Az összes újonnan feldolgozott dokumentumot postaláda-címkével jelöli meg." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "címke" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "címkék" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Nem állíthatja be magát szülőként." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Nem lehet szülőt beállítani egy leszármazotthoz." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "dokumentumtípus" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "dokumentumtípusok" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "útvonal" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "tárolási útvonal" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "tárolási útvonalak" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Titkosítatlan" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "GNU Privacy Guarddal titkosítva" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "cím" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "tartalom" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "A dokumentum nyers, csak szöveges adatai. Ezt a mezőt elsősorban keresésre használják." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime típus" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "ellenőrző összeg" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Az eredeti dokumentum ellenőrző összege." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "archiválási ellenőrző összeg" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Az archivált dokumentum ellenőrző összege." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "oldalak száma" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "A dokumentum oldalainak száma." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "létrehozott" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "módosított" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tárolási típus" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "hozzáadott" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "fájlnév" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Aktuális fájlnév a tárolóban" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "archiválási fájlnév" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Aktuális archívum fájlnév a tárolóban" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "eredeti fájlnév" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "A fájl eredeti neve a feltöltéskor" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "archiválási sorozatszám" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "A dokumentum helye a fizikai dokumentumarchívumban." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokumentum" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumentumok" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Táblázat" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Kis kártyák" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Nagy kártyák" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Cím" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Létrehozva" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Hozzáadva" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Címkék" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Partner" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Dokumentum típus" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Tárolás útvonal" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Megjegyzés" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Tulajdonos" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Megosztva" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "Automata serial szám" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Oldalak" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "az irányítópulton megjelenik" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "megjelenítés az oldalsávban" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "rendezési mező" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "fordított rendezés" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Oldalszám mutatása" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Megjelenítési mód mutatása" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Dokumentum megjelenített mezői" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "elmentett nézet" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "elmentett nézetek" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "a cím tartalmazza" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "a tartalom tartalmazza" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "Az ASN" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "a kapcsolattartó" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "a dokumentum típusa" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "a postaládában van" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "van címke" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "bármilyen címkével rendelkezik" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "létrehozva mielőtt" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "létrehozva után" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "létrehozás éve" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "létrehozás hónapja" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "létrehozás napja" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "korábban hozzáadva" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "hozzáadva a" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "korábban módosítva" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "módosítva" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "nem rendelkezik címkével" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "nem rendelkezik ASN-nel" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "a cím vagy a tartalom tartalmaz" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "teljes szöveges lekérdezés" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "több ilyet" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "címkékkel rendelkezik" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN nagyobb, mint" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN kisebb, mint" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "tárolási útvonal" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "levelezője van a" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "nincs kapcsolattartója a" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "dokumentumtípusa a" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "nem rendelkezik dokumentumtípussal a" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "tárolási útvonala a" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "nincs tárolási útvonal a" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "a tulajdonos" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "tulajdonosa van" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "nincs tulajdonosa" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "nem rendelkezik tulajdonossal a" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "egyéni mező értéke" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "megosztva általam" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "rendelkezik egyéni mezővel" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "egyéni mezővel rendelkezik itt" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "nem rendelkezik egyéni mezővel itt" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "nem rendelkezik egyéni mezővel" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "egyéni mező lekérdezés" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "létrehozva ide" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "létrehozva ebből" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "hozzáadva ide" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "hozzáadva ebből" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "mime típusa" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "szabálytípus" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "érték" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "szűrőszabály" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "szűrési szabályok" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Automata feladat" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Ütemezett feladat" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Egyénileg indított feladat" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Fájl feldolgozása" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Osztályozó betanítása" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Helyes állapot ellenőrzése" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Index optimalizálása" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Feladat azonosítója" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "A futtatott feladat Celery azonosítója" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Visszaigazolva" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Ha a feladatot a frontenden vagy az API-n keresztül nyugtázzák" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Feladat fájlnév" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "A fájl neve, amelyre a feladatot futtatták" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Feladat neve" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "A futtatott feladat neve" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Feladat Állapot" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "A futó feladat aktuális állapota" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Létrehozás dátum idő" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "A feladat eredményének létrehozásakor UTC-ben megadott dátum-mező" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Elkezdve Dátum idő" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "A feladat indításának időpontja UTC-ben" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Befejeződött Dátum idő" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "A feladat befejezésének időpontja UTC-ben" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Eredmény adatok" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "A feladat által visszaküldött adatok" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Feladat típusa" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "A futtatott feladat típusa" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Megjegyzés a dokumentumhoz" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "felhasználó" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "megjegyzés" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "jegyzetek" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Archívum" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Eredeti" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "lejárat" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "megosztási link" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "linkek megosztása" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Karaktersor" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Dátum" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Boolean" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Egész szám" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Valós szám" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monetáris" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Dokumentum link" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Válassz" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Hosszú szöveg" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "adattípus" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "további adatok" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "További adatok az egyéni mezőhöz, például választható opciók" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "egyéni mező" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "egyéni mezők" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "egyéni mező példány" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "egyéni mező példányok" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Feldolgozás megkezdve" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokumentum hozzáadva" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokumentum frissítve" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Beütemezve" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Feldolgozási mappa" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Api feltöltés" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Mail lehívás" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Webes felület" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Változtatva" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Egyéni mező" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Munkafolyamat aktivátor típusa" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "szűrési útvonal" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Csak olyan dokumentumokat dolgoz fel, amelyeknek az elérési útvonala megegyezik ezzel, ha ez meg van adva. A *-gal megadott helyettesítő karakterek engedélyezettek. Nagy- és kisbetűkre nem érzékeny." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "szűrő fájlnév" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Csak olyan dokumentumokat dolgoz fel, amelyek teljes mértékben megfelelnek ennek a fájlnévnek, ha meg van adva. Az olyan helyettesítő karakterek, mint *.pdf vagy *számla* engedélyezettek. Nagy- és kisbetűkre nem érzékeny." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "dokumentumok szűrése ebből a levélszabályból" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "ezekkel a címkékkel rendelkezik" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "ezen címke(ék) mindegyikét tartalmazza" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "nem tartalmazza ezt a címkét vagy címéket" + +#: documents/models.py:1087 msgid "has this document type" msgstr "ez a dokumentumtípusa" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "nem rendelkezik dokumentumtípussal a" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "ez a levelezőpartner" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "nincs ilyen levelezőpartner(ek).\"" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "rendelkezik ezzel a tárolási útvonallal" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "nem rendelkezik ezzel a tárolási útvonallal" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "egyéni mező a lekérdezés szűrésére" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "JSON-kódolású egyéni mező lekérdezési kifejezés." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "ütemezéseltolás (napokban)" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Azon napok száma, amennyivel az aktiválást el kell tolni." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "ismételt ütemezés" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Az ütemezés megismétlődésének beállítása." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "ütemezés ismétlődésének eltolása (napokban)" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Az ismételt aktiválódások között eltelt napok száma." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "ütemezési dátum mező" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "A mező, amely az ütemezés aktiválódását irányítja." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "ütemezési dátum egyéni mező" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "munkafolyamat aktivátor" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "munkafolyamat aktivátorok" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "e-mail tárgya" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Az e-mail tárgya, tartalmazhat dinamikus mezőket, lásd a dokumentációban." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "e-mail törzse" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Az e-mail törzse (az üzenet), tartalmazhat dinamikus mezőket, lásd a dokumentációban." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "e-mail címzettje" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "A fogadó e-mail címek, vesszővel elválasztva." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "dokumentum csatolása az e-mailhez" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "webhook url" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "Az értesítés cél URL-je." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "paraméterek használata" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "JSON-ként küldje" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "webhook paraméterek" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "A webhook URL-ben küldendő paraméterek, ha szövegtörzs nincs használatban." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "webhook szövegtörzs" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "A webhook URL-re küldendő szövegtörzs, ha nem paraméterek vannak használatban." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "webhook fejlécek" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "A webhook URL-re küldendő fejlécek." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "dokumentum csatolása a webhookhoz" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Hozzárendelés" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Eltávolítás" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-mail" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Munkafolyamat tevékenységtípus" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "cím hozzárendelése" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Dokumentumcím hozzárendelése, amelynek Jinja2 sablonnak kell lennie, lásd a dokumentációt." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "rendelje hozzá ezt a jelölőt" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "rendelje hozzá ezt a dokumentumtípust" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "rendelje hozzá ezt a kapcsolattartót" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "rendelje hozzá ezt a tárolási útvonalat" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "rendelje hozzá ezt a tulajdonost" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "adjon megtekintési engedélyeket ezeknek a felhasználóknak" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "nézeti engedélyeket adjon ezeknek a csoportoknak" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "adjon módosítási engedélyeket ezeknek a felhasználóknak" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "adjon módosítási jogosultságokat ezeknek a csoportoknak" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "rendelje hozzá ezeket az egyedi mezőket" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "egyéni mező értékek" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Opcionális értékek egyéni mezőkben történő tároláshoz." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "ezen címkék eltávolítása" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "minden címke eltávolítása" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "ezen dokumentumtípus(ok) eltávolítása" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "minden dokumentumtípus eltávolítása" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "ezen levelezőpartner(ek) eltávolítása" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "minden levelelezőpartner eltávolítása" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "ezen tárolási útvonal(ak) eltávolítása" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "minden tárolási útvonal eltávolítása" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "ezen tulajdonos(ok) eltávolítása" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "minden tulajdonos eltávolítása" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "megtekintési engedély megvonása ezen felhasználóktól" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "megtekintési engedély megvonása ezen csoportoktól" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "módosítási engedély megvonása ezek felhasználóktól" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "módosítási engedély megvonása ezen csoportoktól" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "minden jogosultság eltávolítása" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "ezen egyéni mezők eltávolítása" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "minden egyéni mező eltávolítása" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "e-mail" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "munkafolyamat tevékenység" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "munkafolyamat tevékenységek" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "megrendelés" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "aktiválók" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "tevékenységek" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "engedélyezve" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "munkafolyamat" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "munkafolyamat aktiváló típusa" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "futtatás dátuma" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "munkafolyamat futtatás" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "munkafolyamat futtatások" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Érvénytelen reguláris kifejezés: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Érvénytelen szín." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Fájltípus %(type)s nem támogatott" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "Az egyéni mező azonosítójának egész számnak kell lennie: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "A(z) %(id)s azonosítójú egyéni mező nem létezik" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Az egyéni mezőknek egész számok listájának vagy azonosítókat értékekhez rendelő objektumnak kell lenniük." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Néhány egyéni mező nem létezik, vagy kétszer lett megadva." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Érvénytelen változót észleltek." @@ -1626,151 +1675,151 @@ msgstr "Beállítja a vonalkódok címkékhez rendelését" msgid "paperless application settings" msgstr "paperless alkalmazás beállítások" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Angol (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arab" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikai" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Fehérorosz" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bolgár" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalán" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Cseh" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dán" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Német" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Görög" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Angol (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spanyol" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Perzsa" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finn" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francia" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Magyar" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Olasz" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "japán" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "koreai" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburgi" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norvég" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Holland" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Lengyel" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugál (Brazília)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugál" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Román" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Orosz" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Szlovák" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Szlovén" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Szerb" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Svéd" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Török" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukrán" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vietnámi" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Kínai egyszerűsített" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "tradicionális kínai" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx adminisztráció" diff --git a/src/locale/id_ID/LC_MESSAGES/django.po b/src/locale/id_ID/LC_MESSAGES/django.po index e11369e11..de785333b 100644 --- a/src/locale/id_ID/LC_MESSAGES/django.po +++ b/src/locale/id_ID/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumen" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Nilai harus berupa JSON yang valid." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Ekspresi pencarian bidang khusus tidak valid" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Daftar ekspresi tidak valid. Tidak boleh kosong." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Operator logika {op!r} tidak valid" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Jumlah maksimal kondisi pencarian terlampaui." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} bukan bidang khusus yang valid." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} tidak mendukung ekspresi pencarian expr {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Kedalaman susunan maksimal terlampaui." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Bidang khusus tidak ditemukan" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "pemilik" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Tidak ada" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Kata apa pun" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Semua kata" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Sama persis" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Ekspresi reguler" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Kata samar" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Otomatis" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nama" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "cocok" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "mencocokkan algoritma" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "tidak sensitif" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "koresponden" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "koresponden" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "warna" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "tag kotak masuk" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Tandai label ini sebagai label kotak masuk: Semua dokumen baru akan dilabeli dengan label kotak masuk." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "label" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "label" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Tidak dapat menetapkan dirinya sebagai induk." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Tidak dapat menetapkan induk ke keturunan." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "jenis dokumen" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "jenis dokumen" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "lokasi" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "lokasi penyimpanan" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "lokasi penyimpanan" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Tidak terenkripsi" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Terenkripsi dengan GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "judul" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "konten" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Raw, hanya data text dari dokumen. Bagian ini adalah bagian utama yang di gunakan untuk pencarian." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime type" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "checksum" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Checksum dari dokumen yang asli." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "checksum arsip" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Checksum dari dokumen yang di arsip." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "jumlah halaman" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Jumlah halaman dokumen." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "dibuat" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "dimodifikasi" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "jenis penyimpanan" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "menambahkan" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nama berkas" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Nama berkas saat ini yang tersimpan" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "nama berkas arsip" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Nama berkas arsip yang tersimpan" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "nama berkas asli" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Nama berkas asli pada saat diunggah" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "nomor serial arsip" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Posisi dokumen ini pada arsip fisik dokumen yang di binder." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokumen" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumen" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabel" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "kartu kecil" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Kartu Besar" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Judul" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Dibuat" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Ditambahkan" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Label" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Koresponden" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Tipe Dokumen" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Lokasi Penyimpanan" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Catatan" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Pemilik" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Dibagikan" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Halaman" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "tampilkan di dasbor" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "tunjukan di bilah sisi" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "urutkan bidang" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "urutkan terbalik" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "lihat ukuran halaman" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Mode tampilan" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Area tampilan dokumen" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "tampilan disimpan" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "tampilan disimpan" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "judul memiliki" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "konten memiliki" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN adalah" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "koresponden adalah" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "jenis dokumen adalah" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "di dalam kotak masuk" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "memiliki label" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "memiliki label apapun" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "dibuat sebelum" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "dibuat setelah" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "dibuat pada tahun" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "dibuat pada bulan" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "dibuat pada hari" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "ditambahkan sebelum" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "ditambahkan setelah" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "disunting sebelum" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "disunting setelah" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "tidak memiliki label" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "tidak memiliki ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "judul atau konten mengandung" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "kueri teks lengkap" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "lebih seperti ini" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "memiliki label dalam" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN lebih dari" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN kurang dari" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "lokasi penyimpanan" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "memiliki koresponden dalam" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "tidak memiliki koresponden dalam" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "memiliki jenis dokumen dalam" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "tidak memiliki jenis dokumen dalam" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "memiliki lokasi penyimpanan dalam" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "tidak memiliki lokasi penyimpanan dalam" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "pemilik adalah" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "memiliki pemilik dalam" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "tidak memiliki pemilik" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "tidak memiliki pemilik dalam" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "muat nilai bidang khusus" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "dibagikan oleh saya" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "memiliki area khusus" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "memiliki area khusus di" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "tidak memiliki area khusus di" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "tidak memiliki area khusus" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "kueri bidang khusus" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "dibuat ke" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "dibuat dari" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "ditambahkan ke" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "ditambahkan dari" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "tipe mime adalah" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "jenis peraturan" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "nilai" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "saring aturan" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "saring aturan" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Tugas Otomatis" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Tugas Terjadwal" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Tugas Manual" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Konsumsi Berkas" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Latih Pengklasifikasi" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Cek Kewajaran" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Optimalkan Indeks" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID Tugas" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID untuk tugas yang sudah dijalankan" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Diakui" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Jika tugas telah diketahui melalui frontend atau API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Nama Berkas Tugas" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Nama dari berkas yang mana tugas akan dijalankan" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Nama Tugas" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Nama tugas yang dijalankan" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Status Tugas" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Status tugas sekarang yang sedang dijalankan" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Dibuat TanggalWaktu" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Kolom tanggal dan waktu saat hasil selesai dibuat dalam UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Dimulai TanggalWaktu" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Kolom Tanggal dan waktu saat tugas dimulai dalam UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Selesai TanggalWaktu" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Kolom tanggal dan waktu saat hasil selesai dibuat dalam UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Data Hasil" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Data yang dikembalikan dari tugas" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Tipe Tugas" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Jenis tugas yang dijalankan" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Catatan untuk dokumen" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "pengguna" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "catatan" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "catatan" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arsip" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Orisinil" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "masa berlaku" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "topik konten" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "bagikan tautan" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "berbagi tautan" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "String" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Tanggal" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Boolean" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Bilangan bulat" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Float" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Keuangan" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Tautan Dokumen" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Pilih" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Teks Panjang" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "jenis data" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "data ekstra" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Data tambahan untuk variasi kolom, seperti pilihan" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "kolom khusus" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "kolom khusus" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "kolom Khusus Instansi" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "kolom Khusus Instansi" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Memulai Penggunaan" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokumen ditambahkan" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokumen diperbarui" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Dijadwalkan" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Pengunaan Folder" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Unggah Menggunakan API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Pengambilan Surat" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Antarmuka Web" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Dimodifikasi" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Kolom Khusus" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Tipe Pemicu Alur Kerja" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "saring lokasi" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Hanya gunakan dokumen dengan jalur yang sesuai denganyang sudah ditentukan. Karakter pengganti seperti * diperbolehkan. Huruf besar/kecil tidak berpengaruh." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "saring nama berkas" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Hanya gunakan dokumen yang sepenuhnya cocok dengan nama berkas ini jika ditentukan. Wildcard seperti *.pdf atau *faktur* diperbolehkan. Tidak peka huruf besar kecil." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "saring dokumen dari peraturan surel" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "memiliki label(-label) ini" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "memiliki semua label ini" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "tidak memiliki semua label ini" + +#: documents/models.py:1087 msgid "has this document type" msgstr "memiliki jenis dokumen ini" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "tidak memiliki semua tipe dokumen ini" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "memiliki koresponden ini" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "tidak memiliki koresponden ini" + +#: documents/models.py:1117 msgid "has this storage path" +msgstr "memiliki jalur penyimpanan ini" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "tidak memiliki jalur penyimpanan ini" + +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "hari penggeseran jadwal" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Jumlah hari untuk menggeser pemicu jadwal." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "jadwal berulang" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Jika jadwal harus berulang." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "jeda jadwal berulang dalam hari" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Jumlah hari antara pemicu jadwal berulang." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "bidang tanggal jadwal" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Bidang untuk memeriksa pemicu jadwal." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "bidang khusus tanggal jadwal" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "pemicu alur kerja" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "pemicu alur kerja" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "subjek email" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Subjek email, dapat berisi beberapa placeholder, lihat dokumentasi." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "isi surel" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Isi (pesan) email, dapat berisi beberapa placeholder, lihat dokumentasi." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "kirim surel ke" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Alamat email tujuan, pisahkan dengan koma." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "sertakan dokumen dalam email" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "url webhook" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "URL tujuan untuk notifikasi." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "gunakan parameter" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "kirim sebagai JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "parameter webhook" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Parameter yang dikirim bersama URL webhook jika body tidak digunakan." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "isi webhook" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Isi yang dikirim bersama URL webhook jika parameter tidak digunakan." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "header webhook" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Header yang dikirim bersama URL webhook." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "sertakan dokumen dalam webhook" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Tugas" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Penghapusan" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Surel" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Jenis Aksi Alur Kerja" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "tetapkan judul" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "tetapkan label ini" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "tetapkan jenis dokumen ini" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "tetapkan koresponden ini" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "tetapkan lokasi penyimpanan ini" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "tetapkan pemilik ini" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "memberikan izin melihat kepada pengguna ini" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "memberikan izin melihat kepada grup ini" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "memberikan izin perubahan kepada pengguna ini" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "memberikan izin perubahan kepada grup ini" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "tetapkan area khusus ini" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "nilai bidang khusus" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Nilai tambahan untuk diisi ke bidang khusus." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "Hapus tag ini" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "hapus semua label" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "Hapus jenis dokumen ini" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "Hapus semua tipe dokumen" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "hapus koresponden(-koresponden) ini" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "hapus semua koresponden" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "hapus lokasi(-lokasi) penyimpanan ini" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "hapus semua lokasi penyimpanan" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "hapus pemilik(-pemilik) ini" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "hapus semua pemilik" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "hapus izin melihat kepada pengguna-pengguna ini" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "hapus izin melihat kepada grup-grup ini" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "hapus izin mengubah kepada pengguna-pengguna ini" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "hapus izin mengubah kepada grup-grup ini" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "hapus semua izin" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "hapus kolom-kolom khusus ini" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "hapus semua kolom khusus" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "surel" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "tindakan alur kerja" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "tindakan alur kerja" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "urut" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "pemicu-pemicu" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "tindakan" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "diaktifkan" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "alur kerja" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "tipe pemicu alur kerja" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "tanggal dijalankan" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "jalankan alur kerja" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "daftar jalankan alur kerja" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Ekspresi reguler tidak sesuai: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Warna tidak sesuai." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Jenis berkas %(type)s tidak didukung" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Variabel ilegal terdeteksi." @@ -1627,151 +1676,151 @@ msgstr "Atur pemetaan barcode tag" msgid "paperless application settings" msgstr "pengaturan aplikasi paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Inggris (AS)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arab" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Bahasa Afrika" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Belarusia" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bahasa Bulgaria" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalan" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Bahasa Ceko" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Denmark" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Jerman" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Yunani" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Inggris (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spanyol" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Persia" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finlandia" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Prancis" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Hungaria" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italia" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Bahasa Jepang" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Bahasa Korea" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luksemburg" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norwegia" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Belanda" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polandia" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugis (Brasil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugis" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumania" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Rusia" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovakia" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovenia" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbia" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Swedia" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turki" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukraina" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vietnam" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Mandarin Sederhana" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Tionghoa Tradisional" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administrasi Paperless-ngx" diff --git a/src/locale/it_IT/LC_MESSAGES/django.po b/src/locale/it_IT/LC_MESSAGES/django.po index 2f733b6fe..72175b107 100644 --- a/src/locale/it_IT/LC_MESSAGES/django.po +++ b/src/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Documenti" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Il valore deve essere un JSON valido." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Campo personalizzato della query non valido" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Elenco delle espressioni non valido. Deve essere non vuoto." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Operatore logico non valido {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Numero massimo delle condizioni della jQuery superato." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} non è un campo personalizzato valido." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} Non supporta la jQuery Expo {Expo!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Superata la profondità massima di nidificazione." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Campo personalizzato non trovato" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "proprietario" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Niente" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Qualsiasi parola" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Tutte le parole" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Corrispondenza esatta" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Espressione regolare" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Parola fuzzy" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatico" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nome" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "corrispondenza" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritmo di corrispondenza" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "non distingue maiuscole e minuscole" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "corrispondente" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "corrispondenti" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "colore" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "è tag di arrivo" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Contrassegna questo tag come tag in arrivo: tutti i documenti elaborati verranno taggati con questo tag." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "tag" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "tag" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Impossibile impostarsi come genitore." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Impossibile impostare il padre su un discendente." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "tipo di documento" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "tipi di documento" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "percorso" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "percorso di archiviazione" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "percorsi di archiviazione" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Non criptato" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Criptato con GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "titolo" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "contenuto" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "I dati grezzi o solo testo del documento. Questo campo è usato principalmente per la ricerca." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "tipo mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "checksum" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Il checksum del documento originale." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "checksum dell'archivio" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Il checksum del documento archiviato." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "numero di pagine" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Numero di pagine del documento." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "creato il" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "modificato il" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tipo di storage" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "aggiunto il" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nome del file" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Nome del file corrente nello storage" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "Nome file in archivio" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Il nome del file nell'archiviazione" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "nome file originale" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Il nome originale del file quando è stato caricato" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "numero seriale dell'archivio" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Posizione di questo documento all'interno dell'archivio fisico." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "documento" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "documenti" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabella" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Schede piccole" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Schede grandi" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Titolo" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Creato" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Aggiunto" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Etichette" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Corrispondente" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Tipo di documento" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Percorso di archiviazione" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Nota" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Proprietario" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Condiviso" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Pagine" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "mostra sul cruscotto" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "mostra nella barra laterale" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "campo di ordinamento" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "ordine invertito" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Visualizza dimensione pagina" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Visualizza modalità display" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Campi di visualizzazione documento" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "vista salvata" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "viste salvate" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "il titolo contiene" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "il contenuto contiene" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN è" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "la corrispondenza è" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "il tipo di documento è" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "è in arrivo" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "ha etichetta" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "ha qualsiasi etichetta" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "creato prima del" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "creato dopo il" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "l'anno di creazione è" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "il mese di creazione è" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "il giorno di creazione è" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "aggiunto prima del" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "aggiunto dopo il" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "modificato prima del" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "modificato dopo" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "non ha tag" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "non ha ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "il titolo o il contenuto contiene" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "query fulltext" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "altro come questo" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "ha tag in" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN maggiore di" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN minore di" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "il percorso di archiviazione è" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "ha corrispondente in" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "non ha corrispondente in" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "ha tipo di documento in" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "non ha tipo di documento in" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "ha percorso di archiviazione in" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "non ha percorso di archiviazione in" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "proprietario è" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "ha proprietario in" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "non ha proprietario" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "non ha proprietario in" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "ha un valore di campo personalizzato" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "è condiviso da me" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "ha campi personalizzati" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "ha un campo personalizzato in" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "non ha un campo personalizzato in" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "non ha un campo personalizzato" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "interrogazione campi personalizzati" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "Creato per" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "Creato da" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "Aggiunto a" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "Aggiunto da" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "il tipo mime è" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "tipo di regola" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "valore" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "regola filtro" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "regole filtro" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Task Automatica" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Attività pianificata" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Attività manuale" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Elabora File" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" -msgstr "" +msgstr "Allena Classificatore" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Verifica integrità" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Ottimizza Indice" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID Attività" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID per l'attività che è stata eseguita" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Accettato" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Se l'attività è accettata tramite il frontend o API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Nome file attività" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Nome del file per il quale è stata eseguita l'attività" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Nome attività" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Nome dell'attività che è stata eseguita" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Stato attività" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Stato attuale dell'attività in esecuzione" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Data di creazione" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Campo data quando il risultato è stato creato in UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Data di inizio" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Campo data quando l'attività è stata avviata in UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Data completamento" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Campo data quando l'attività è stata completata in UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Dati Risultanti" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "I dati restituiti dall'attività" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Tipo di Task" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Il tipo di attività che è stata eseguita" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Nota per il documento" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "utente" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "nota" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "note" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Archivio" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Originale" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "scadenza" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "condividi link" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "condividi links" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Stringa" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Data" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Booleano" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Numero Intero" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Numero a virgola mobile" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monetaria" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Link Documento" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Selezione" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Testo Lungo" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "tipo di dato" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "dati aggiuntivi" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Dati extra per il campo personalizzato, come le opzioni di selezione" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "campo personalizzato" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "campi personalizzati" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "istanza campo personalizzato" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "istanze campo personalizzato" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Elaborazione avviata" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Documento aggiunto" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Documento aggiornato" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Pianificato" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Cartella di elaborazione" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Upload Api" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Recupero Posta" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Web UI" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Modificato" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Campo personalizzato" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Tipo Frigger Del Workshop" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtro percorso" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Elabora solo i documenti con un percorso che corrisponde a questo, se specificato. I caratteri wildcard come * sono permessi. Ignora differenze tra maiuscole e minuscole." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtra nome file" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Elabora i documenti che corrispondono a questo nome. Puoi usare wildcard come *.pdf o *fattura*. Non fa differenza fra maiuscole e minuscole." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtra i documenti da questa regola di posta" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "ha questi tag(s)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "ha tutte queste etichette" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "non ha queste etichette" + +#: documents/models.py:1087 msgid "has this document type" msgstr "ha questo tipo di documento" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "non ha questi tipi di documento" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "ha questo corrispondente" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "non ha questi corrispondenti" + +#: documents/models.py:1117 msgid "has this storage path" +msgstr "ha questo percorso di archiviazione" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "non ha questo percorso di archiviazione" + +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" -msgstr "" +msgstr "giorni di offset della schedulazione" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "la pianificazione è ricorrente" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "" -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "pianificare un ritardo ricorrente in giorni" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Numero di giorni tra i trigger della pianificazione ricorrente." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "campo data di pianificazione" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." -msgstr "" +msgstr "Il campo da controllare per attivare la pianificazione." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" -msgstr "" +msgstr "trigger di workflow" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" -msgstr "" +msgstr "trigger dei workflow" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "Oggetto email" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "L'oggetto dell'email, può includere alcuni segnaposto, vedi documentazione." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "Corpo e-mail" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Il corpo (messaggio) dell'email, può includere alcuni segnaposto, vedi documentazione." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "email a" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Gli indirizzi email di destinazione, separati da virgola." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "includi documento nell'email" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "Url del webhook" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "L'URL di destinazione per la notifica." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "Usa parametri" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "invia come JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "parametri del webhook" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." -msgstr "" +msgstr "I parametri da inviare con l'URL del webhook se il corpo della query non è utilizzato." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" -msgstr "" +msgstr "corpo webhook" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." -msgstr "" +msgstr "Il corpo da inviare con l'URL del webhook se i parametri non vengono utilizzati." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" -msgstr "" +msgstr "header Webhook" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." -msgstr "" +msgstr "Le intestazioni da inviare con l'URL del webhook." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" -msgstr "" +msgstr "includi documento nel webhook" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Assegnazione" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Rimozione" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Email" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Tipo Azione Workflow" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "assegna titolo" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Assegnare un titolo del documento, deve essere un modello Jinja2, vedere la documentazione." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "assegna questo tag" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "assegna questo tipo di documento" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "assegna questo corrispondente" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "assegna questo percorso di archiviazione" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "assegna questo proprietario" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "concedi i permessi di visualizzazione a questi utenti" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "concedi i permessi di visualizzazione a questi gruppi" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "concedi permessi di modifica a questi utenti" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "concedi permessi di modifica a questi gruppi" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "assegna questi campi personalizzati" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "valori del campo personalizzato" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Valori opzionali da assegnare ai campi personalizzati." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "rimuovi queste etichette" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "rimuovi tutte le etichette" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "rimuovi questi tipi di documento" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "rimuovi tutti i tipi di documento" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "rimuovi questi corrispondenti" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "rimuovi tutti i corrispondenti" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "rimuovi questo/i percorso/i di archiviazione" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "rimuovi tutti i percorsi di archiviazione" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "rimuovi questo proprietario(i)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "rimuovi tutti i proprietari" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "rimuovi i permessi di visualizzazione per questi utenti" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "rimuovi i permessi di visualizzazione per questi gruppi" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "rimuovere i permessi di modifica per questi utenti" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "rimuovere i permessi di modifica per questi gruppi" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "rimuovi tutte le autorizzazioni" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "assegna questi campi personalizzati" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "rimuovi tutti i campi personalizzati" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "email" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "Azioni del flusso di lavoro" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "azioni del flusso di lavoro" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "priorità" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" -msgstr "" +msgstr "trigger" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "azioni" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "abilitato" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "flusso di lavoro" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "data esecuzione" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" -msgstr "" +msgstr "esecuzione del workflow" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" -msgstr "" +msgstr "esecuzione del workflow" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Espressione regolare non valida: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Colore non valido." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Il tipo di file %(type)s non è supportato" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "L'id del campo personalizzato deve essere un intero: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Il campo personalizzato con id %(id)s non esiste" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "I campi personalizzati devono essere un elenco di interi o un id di mappatura." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Alcuni campi personalizzati non esistono o sono stati specificati due volte." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Variabile non valida rilevata." @@ -1428,7 +1477,7 @@ msgstr "Impossibile analizzare l'URI {value}, la posizione di rete o il percorso #: documents/validators.py:36 msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}" -msgstr "" +msgstr "Schema URI '{parts.scheme}' non è consentito. Schemi consentiti: {', '.join(allowed_schemes)}" #: documents/validators.py:45 #, python-brace-format @@ -1545,7 +1594,7 @@ msgstr "Imposta il valore di ripiego DPI dell'immagine" #: paperless/models.py:131 msgid "Controls the unpaper cleaning" -msgstr "" +msgstr "Controlla la pulizia della carta" #: paperless/models.py:138 msgid "Enables deskew" @@ -1581,15 +1630,15 @@ msgstr "Logo applicazione" #: paperless/models.py:197 msgid "Enables barcode scanning" -msgstr "" +msgstr "Abilita scansione codici a barre" #: paperless/models.py:203 msgid "Enables barcode TIFF support" -msgstr "" +msgstr "Abilita il supporto TIFF del codice a barre" #: paperless/models.py:209 msgid "Sets the barcode string" -msgstr "" +msgstr "Imposta la stringa del barcode" #: paperless/models.py:217 msgid "Retains split pages" @@ -1605,11 +1654,11 @@ msgstr "Imposta il prefisso del codice a barre ASN" #: paperless/models.py:237 msgid "Sets the barcode upscale factor" -msgstr "" +msgstr "Imposta il fattore di ingrandimento del codice a barre" #: paperless/models.py:244 msgid "Sets the barcode DPI" -msgstr "" +msgstr "Imposta il DPI codice a barre" #: paperless/models.py:251 msgid "Sets the maximum pages for barcode" @@ -1621,157 +1670,157 @@ msgstr "Abilita tag del codice a barre" #: paperless/models.py:264 msgid "Sets the tag barcode mapping" -msgstr "" +msgstr "Imposta la mappatura dei codici a barre dei tag" #: paperless/models.py:269 msgid "paperless application settings" msgstr "impostazioni dell'applicazione paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Inglese (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabo" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Africano" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Bielorusso" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bulgaro" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Catalano" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Ceco" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Danese" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Tedesco" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Greco" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Inglese (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spagnolo" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Persiano" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finlandese" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francese" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Ungherese" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italiano" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Giapponese" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Coreano" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Lussemburghese" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norvegese" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Olandese" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polacco" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portoghese (Brasile)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portoghese" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumeno" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russo" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovacco" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Sloveno" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbo" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Svedese" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turco" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ucraino" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vietnamita" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Cinese semplificato" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Cinese Tradizionale" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Amministrazione di Paperless-ngx" diff --git a/src/locale/ja_JP/LC_MESSAGES/django.po b/src/locale/ja_JP/LC_MESSAGES/django.po index e2c893f17..1d78ee634 100644 --- a/src/locale/ja_JP/LC_MESSAGES/django.po +++ b/src/locale/ja_JP/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "ドキュメント" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "値は有効なJSONである必要があります。" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "無効なカスタムフィールドクエリ式" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "無効な式リストです。空であってはなりません。" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "無効な論理演算子 {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "クエリ条件の最大数を超えました。" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} は有効なカスタムフィールドではありません。" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} はクエリ expr {expr!r} をサポートしていません。" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "最大ネストの深さを超えました。" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "カスタムフィールドが見つかりません" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "所有者" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "なし" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "いずれかの単語" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "すべての単語" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "完全一致" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "正規表現" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "あいまいな単語" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "自動" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "名称" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "マッチ" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "マッチングアルゴリズム" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "大文字・小文字の区別なし" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "担当" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "担当" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "色" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "受信トレイタグ" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "このタグを受信トレイタグとしてマーク: 新規に使用するすべてのドキュメントに受信トレイタグを付けます。" -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "タグ" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "タグ" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "ドキュメントタイプ" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "ドキュメントタイプ" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "パス" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "フォルダー" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "フォルダー" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "暗号化なし" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "GNU Privacy Guard で暗号化" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "タイトル" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "コンテンツ" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "ドキュメントの生のテキストのみのデータ。この項目は主に検索に使用されます。" -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME タイプ" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "チェックサム" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "元のドキュメントのチェックサム" -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "アーカイブのチェックサム" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "アーカイブされたドキュメントのチェックサム" -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "ページ数" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "ドキュメントのページ数。" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "作成日" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "更新日" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "ストレージタイプ" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "追加日" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "ファイル名" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "ストレージ内の現在のファイル名" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "アーカイブファイル名" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "ストレージ内の現在のアーカイブファイル名" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "元のファイル名" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "アップロードされたファイルの元の名前" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "アーカイブ番号" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "物理的なドキュメントアーカイブ内での、このドキュメントの位置" -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "ドキュメント" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "ドキュメント" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "テーブル" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "小カード" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "大カード" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "タイトル" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "作成済み" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "追加済" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "タグ" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "担当" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "ドキュメントタイプ" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "ストレージパス" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "メモ" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "所有者" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "共有済み" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "ページ" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "ダッシュボードに表示" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "サイドバーに表示" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "項目を並べ替え" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "項目を逆順で並べ替え" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "ページサイズの表示" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "表示モード" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "ドキュメントの表示フィールド" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "保存済みビュー" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "保存済みビュー" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "タイトルが次のものを含む" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "コンテンツが次のものを含む" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN が" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "担当が" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "ドキュメントタイプが" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "次のものが受信トレイにある" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "次のタグがある" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "次のいずれかのタグがある" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "次の日付以前に作成" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "次の日付以降に作成" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "作成年が" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "作成月が" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "作成日が" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "次の日付以前に追加" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "次の日付以降に追加" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "次の日付以前に変更" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "次の日付以降に変更" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "次のタグがない" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "次の ASN でない" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "タイトルまたはコンテンツに次のものを含む" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "全文検索" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "これと類似のもの" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "次のタグがある" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN が次の値より大きい" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN が次の値より小さい" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "フォルダーが" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "次のものが担当" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "次のものが担当でない" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "次のドキュメントタイプがある" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "次のドキュメントタイプがない" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "次のフォルダーがある" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "次のフォルダーがない" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "所有者が" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "所有者がいる" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "次のものが所有者" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "次のものが所有者でない" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "次のカスタム項目がある" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "自分が共有した" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "カスタムフィールド" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "カスタムフィールドがあります" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "カスタムフィールドがありません" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "カスタムフィールドがありません" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "カスタムフィールドのクエリ" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "作成" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "作成元" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "追加" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "追加元" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "MIMEタイプ" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "ルールタイプ" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "値" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "フィルタルール" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "フィルタールール" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "自動タスク" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "スケジュールされたタスク" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "手動タスク" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "ファイルの利用" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "分類子の訓練" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "健全性のチェック" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "インデックスの最適化" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "タスク ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "実行されたタスクの Celery ID" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "承認" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "フロントエンドまたは API 経由でタスクが承認されている場合" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "タスクのファイル名" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "タスクを実行したファイル名" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "タスク名" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "実行されたタスク名" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "タスクの状態" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "実行中のタスクの状態" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "作成日時" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "タスクの結果が作成された UTC 日時" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "開始日時" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "タスクが開始された UTC 日時" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "完了日時" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "タスクが完了した UTC 日時" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "結果データ" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "タスクが出力したデータ" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "タスクタイプ" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "実行されたタスクの種類" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "ドキュメントのメモ" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "ユーザー" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "メモ" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "メモ" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "アーカイブ" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "原本" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "有効期限" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "スラグ" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "共有リンク" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "共有リンク" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "文字列" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "日付" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "ブール値" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "整数" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "浮動小数点数" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "通貨 (ドル)" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "ドキュメントリンク" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "選択" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "データの種類" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "追加データ" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "カスタムフィールドの追加データ(選択オプションなど)" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "カスタム項目" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "カスタム項目" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "カスタム項目インスタンス" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "カスタム項目インスタンス" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "利用開始時" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "ドキュメントの追加時" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "ドキュメントの更新時" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "スケジュール済" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "フォルダーの利用" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "API アップロード" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "メールの取得" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "ウェブUI" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "更新日" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "カスタムフィールド" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "ワークフローのトリガータイプ" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "パスをフィルター" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "指定されたパスを持つドキュメントのみを使用します。ワイルドカード (*) が使用できます。大文字・小文字を区別しません。" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "ファイル名をフィルター" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "指定されたファイル名に完全にマッチするドキュメントのみを使用します。 *.pdf や *請求書* などのワイルドカードが使用できます。大文字・小文字を区別しません。" -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "このメールルールからのドキュメントをフィルター" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "タグ" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "ドキュメントタイプ" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "担当" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "スケジュールオフセット日" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "スケジュールトリガーをオフセットする日数。" -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "スケジュールは繰り返します" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "スケジュールを繰り返しますか。" -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "定期的な遅延を日数でスケジュールする" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "定期的なスケジュールがトリガーされる間隔の日数。" -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "スケジュール日フィールド" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "スケジュールトリガーをチェックするフィールド。" -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "スケジュール日カスタムフィールド" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "ワークフローのトリガー" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "ワークフローのトリガー" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "メールの件名" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "メールの件名にはプレースホルダーを含めることができます。ドキュメントを参照してください。" -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "メール本文" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "メールの本文(メッセージ)にはプレースホルダを含めることができます。ドキュメントを参照してください。" -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "メール先" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "宛先のメールアドレス(カンマ区切り)。" -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "メールにドキュメントを含める" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "webhook URL" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "通知の宛先URL。" -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "パラメータを使用する" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "JSON形式で送信" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "webhookパラメータ" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "本文が使用されていない場合にWebhook URLとともに送信されるパラメータ。" -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "webhook本文" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "パラメータが使用されていない場合にWebhook URLとともに送信される本文。" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "webhookヘッダー" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Webhook URLとともに送信するヘッダー。" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "webhookにドキュメントを含める" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "割り当て" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "削除" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "メールアドレス" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "ワークフローのアクションタイプ" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "タイトルの割り当て" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "タグの割り当て" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "ドキュメントタイプの割り当て" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "担当の割り当て" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "フォルダーの割り当て" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "所有者の割り当て" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "ユーザーへの表示権限の付与" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "グループへの表示権限の付与" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "ユーザーへの変更権限の付与" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "グループへの変更権限の付与" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "カスタム項目の割り当て" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "カスタムフィールド値" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "カスタムフィールドに割り当てる任意の値。" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "タグの削除" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "すべてのタグの削除" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "ドキュメントタイプの削除" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "すべてのドキュメントタイプの削除" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "担当の削除" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "すべての担当の削除" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "フォルダーの削除" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "すべてのフォルダーの削除" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "所有者の削除" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "すべての所有者の削除" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "ユーザの表示権限の削除" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "グループの表示権限の削除" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "ユーザの編集権限の削除" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "グループの編集権限の削除" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "すべての権限の削除" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "カスタム項目の削除" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "すべてのカスタム項目の削除" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "メール" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "ワークフローのアクション" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "ワークフローのアクション" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "順序" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "トリガー" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "アクション" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "有効" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "ワークフロー" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "ワークフロートリガータイプ" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "日付実行" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "ワークフローの実行" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "ワークフローの実行" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "不正な正規表現: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "無効な色" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "ファイルタイプ %(type)s はサポートされていません" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "無効な変数を検出しました" @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "Paperless アプリケーションの設定" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "英語 (米国)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "アラビア語" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "アフリカーンス語" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "ベラルーシ語" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "ブルガリア語" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "カタロニア語" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "チェコ語" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "デンマーク語" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "ドイツ語" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "ギリシャ語" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "英語 (英国)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "スペイン語" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "フィンランド語" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "フランス語" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "ハンガリー語" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "イタリア語" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "日本語" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "韓国語" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "ルクセンブルク語" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "ノルウェー語" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "オランダ語" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "ポーランド語" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "ポルトガル語 (ブラジル)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "ポルトガル語" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "ルーマニア語" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "ロシア語" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "スロバキア語" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "スロベニア語" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "セルビア語" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "スウェーデン語" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "トルコ語" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "ウクライナ語" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "中国語 (簡体字)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "中国語 (繁体)" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx の管理" diff --git a/src/locale/ko_KR/LC_MESSAGES/django.po b/src/locale/ko_KR/LC_MESSAGES/django.po index 9c02fcb51..adc11e0e9 100644 --- a/src/locale/ko_KR/LC_MESSAGES/django.po +++ b/src/locale/ko_KR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "문서" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "값은 유효한 JSON이어야 합니다." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "잘못된 사용자 정의 필드 쿼리 표현식" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "잘못된 표현식 목록입니다. 비어 있지 않아야 합니다." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "잘못된 논리 연산자 {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "쿼리 조건의 최대 개수를 초과했습니다." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." -msgstr "{name!r} 은(는) 잘못된 사용자 정의 필드입니다." +msgstr "{name!r} 은 잘못된 사용자 정의 필드입니다." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." -msgstr "{data_type}은(는) 쿼리 표현식 {expr!r}을(를) 지원하지 않습니다." +msgstr "{data_type}은 쿼리 표현식 {expr!r}을(를) 지원하지 않습니다." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "최대 중첩 깊이를 초과했습니다." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" -msgstr "사용자 지정 필드를 찾을 수 없습니다." +msgstr "사용자 지정 필드를 찾을 수 없음" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "소유자" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "없음" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "아무 단어" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "모든 단어" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "정확히 일치" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "정규식" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "불분명한 단어" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "자동" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "이름" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "일치" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "일치 알고리즘" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "대소문자 구분 없음" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "담당자" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "담당자" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "색상" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "받은 보관함 태그" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "이 태그를 수신함 태그로 표시합니다: 새로 수집된 모든 문서에는 수신함 태그가 지정됩니다." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "태그" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "태그" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "스스로를 부모 개체로 설정할 수 없습니다." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "자식 개체를 부모 개체로 설정할 수 없습니다." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "문서 유형" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "문서 유형" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "경로" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "저장소 경로" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "저장소 경로" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "암호화 안 함" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "GNU 프라이버시 보호로 암호화" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "제목" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "내용" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "문자열 데이터에 해당하는 원시 데이터. 이 필드는 주로 검색을 위해 사용됩니다." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME 유형" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "체크섬" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "원본 문서의 체크섬" -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "보관된 체크섬" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "보관된 문서의 체크섬" -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "페이지 수" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "문서의 페이지 수" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "생성" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "수정" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "저장소 유형" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "추가" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "파일 이름" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "저장소에서의 현재 파일 이름" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "보관 파일 이름" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "저장소에서의 보관 파일 이름" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "원본 파일 이름" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "올려주기 당시 파일의 원래 이름" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "보관 일련 번호" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "실제 문서 아카이브에서 이 문서의 위치" -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "문서" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "문서" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "테이블" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "소형 카드" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "큰 카드" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "제목" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "생성됨" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "추가됨" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "태그" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "담당자" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "문서 타입" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "저장 경로" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "노트" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "소유자" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "공유됨" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "페이지" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "대시보드에 표시" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "사이드바에 표시" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "필드 정렬" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "역순으로 정렬" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "페이지 크기 보기" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "표시 모드 설정" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "문서 표시 필드" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "저장된 뷰" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "저장된 뷰" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "제목 포함" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "내용 포함" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN은" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "할당대상" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "문서 유형" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "문서함에 있음" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "태그가 있음" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "어떤 태그라도 있을 경우" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "이전에 생성됨" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "이후에 생성됨" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "생성 연도는" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "생성 월은" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "생성일은" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "이전에 추가됨" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "이후에 추가됨" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "이전에 수정됨" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "이후에 수정됨" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "태그가 없음" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "ASN이 없음" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "제목 또는 내용이 포함" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "전문 검색 쿼리" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "이와 유사한" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "태그가 포함된" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN이 초과됨" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN 미만" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "저장경로" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "할당 대상" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "해당 사항에 대한 대응이 없음" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "문서 유형" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "문서 유형이 없음" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "저장 경로가 있는" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "에 저장 경로가 없습니다." -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "소유자는" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "에 소유자가 있습니다." -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "소유자가 없음" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "소유자가 없음" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "사용자 정의 필드 값이 있음" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "내가 공유" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "사용자 정의 필드가 있습니다." -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "에 사용자 정의 필드가 있습니다." -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "에 사용자 정의 필드가 없습니다." -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "사용자 정의 필드가 없습니다." -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "사용자 정의 필드 쿼리" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "생성됨" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "생성됨" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "추가됨" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "추가됨" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "MIME 유형" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "룰 타잎" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "값" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "룰 필터" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "필터 룰" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "자동 작업" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "예정된 작업" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "수동 작업" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "파일 사용" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "분류기 훈련" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "기능 점검" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "인덱스 최적화" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "작업 ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "실행된 작업의 셀러리 ID" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "인정됨" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "프런트엔드 또는 API를 통해 작업이 승인된 경우" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "작업 파일명" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "작업이 실행된 파일 이름" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "작업명" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "실행된 작업의 이름" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "작업 상태" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "실행 중인 작업의 현재 상태" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "생성일시" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "작업 결과가 UTC로 생성된 경우 날짜/시간 필드" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "시작일시" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "UTC로 작업이 시작된 날짜/시간 필드" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "완료일시" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "UTC로 작업이 완료된 날짜/시간 필드" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "완료 결과" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "작업에서 반환되는 데이터" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "작업 유형" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "실행된 작업 유형" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "문서에 대한 노트" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "사용자" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "노트" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "노트" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "아카이브" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "원본" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "만료" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "슬러그" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "링크 공유" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "링크 공유" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "문자열" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "날짜" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "부울" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "정수" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "부동 소수점" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "통화" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "자료 링크" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "선택" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "긴 텍스트" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "데이터 타입" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "추가 데이터" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "선택 옵션과 같은 사용자 지정 필드에 대한 추가 데이터" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "사용자 정의 필드" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "사용자 정의 필드" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "사용자 정의 필드 인스턴스" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "사용자 정의 필드 인스턴스" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "소비 시작됨" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "문서 추가됨" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "문서 업데이트됨" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "예정됨" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "소비된 폴더" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Api 업로드" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "메일 가져오기" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "웹 UI" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "수정됨" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "사용자정의 필드" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "워크플로 트리거 유형" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "필터 경로" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "지정된 경우 경로와 일치하는 문서만 사용합니다. * 와일드카드가 허용됩니다. 대소문자를 구분하지 않습니다." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "파일 이름 필터" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "지정된 경우 파일 이름과 완전히 일치하는 문서만 사용합니다. *.pdf와 같은 와일드카드 또는 invoice와 같은 것이 허용됩니다. 대소문자를 구분하지 않습니다." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "이 메일 규칙에서 문서 필터링" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "에는 다음 태그가 있습니다." -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "이 문서 유형이 있습니다." -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "이 담당자가 있습니다." -#: documents/models.py:1056 -msgid "has this storage path" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "저장 경로" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "일정 조정 일수" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "일정 트리거를 조정할 일수" -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "일정이 반복되는 경우" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "일정이 반복되어야 하는 경우." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "반복되는 지연을 일 단위로 예약" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "반복 일정 트리거 사이의 일 수입니다." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "일정 날짜 필드" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "일정 트리거를 확인할 필드입니다." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "일정 날짜 사용자 지정 필드" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "워크플로 트리거" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "워크플로 트리거" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "이메일 제목" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "이메일 제목에는 일부 자리 표시자를 포함할 수 있습니다. 문서를 참조하세요" -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "이메일 본문" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "이메일 본문(message)에는 일부 자리 표시자를 포함할 수 있습니다. 문서를 참조하세요" -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "이메일로" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "쉼표로 구분된 대상 이메일 주소입니다." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "이메일에 문서 포함" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "웹훅 Url" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "알림의 대상 URL입니다." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "매개변수 사용" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "JSON으로 보내기" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "웹훅 매개변수" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "본문을 사용하지 않는 경우 웹훅 URL과 함께 전송할 매개변수입니다." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "웹훅 본문" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "매개변수를 사용하지 않는 경우 웹훅 URL과 함께 전송할 본문입니다." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "웹훅 헤더" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "웹훅 URL과 함께 전송할 헤더입니다." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "웹훅에 문서 포함" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "과제" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "제거" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "전자우편" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "웹훅" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "워크플로 작업 유형" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "제목 지정" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Jinja2 템플릿을 사용하여 문서 제목을 지정합니다. 자세한 내용은 설명서를 참조하세요." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "이 태그 할당" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "이 문서 유형 지정" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "이 담당자를 할당합니다." -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "이 저장 경로를 할당합니다." -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "이 소유자 지정" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "이러한 사용자에게 보기 권한 부여" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "다음 그룹에 보기 권한 부여" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "이러한 사용자에게 변경 권한 부여" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "이러한 그룹에 변경 권한 부여" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "다음 사용자 지정 필드를 할당합니다." -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "사용자 지정 필드 값" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "사용자 지정 필드에 할당할 선택적 값입니다." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "이 태그 제거" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "모든 태그 제거" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "이 저장 경로를 제거합니다." -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "모든 문서 유형 제거" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "이 담당자 삭제" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "모든 담당자 제거" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "이 저장 경로(들) 를 제거합니다." -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "모든 저장소 경로 제거" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "이러한 사용자에 대한 보기 권한 제거" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "이러한 그룹에 대한 보기 권한 제거" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "이러한 사용자에 대한 변경 권한 제거" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "이러한 그룹에 대한 변경 권한 제거" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "모든 권한 제거" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "다음 사용자 지정 필드를 제거합니다." -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "모든 사용자 지정 필드 제거" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "이메일" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "웹훅" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "워크플로 작업" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "워크플로 작업들" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "주문" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "트리거" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "동작" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "활성화됨" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "워크플로우" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "워크플로우 트리거 유형" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "날짜 실행" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "워크플로 실행" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "워크플로우 실행" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "잘못된 정규식: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "사용자 정의 ID 필드는 반드시 정수여야 합니다: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "%(id)s를 ID로 가지는 사용자 정의 필드가 존재하지 않습니다." + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "사용자 정의 필드는 정수 리스트이거나, ID를 값에 매핑하는 객체여야 합니다." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "존재하지 않거나 중복된 사용자 정의 필드가 있습니다." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "잘못된 변수가 감지되었습니다." @@ -1419,21 +1468,21 @@ msgstr "마지막 단계로 다음 양식을 작성해 주세요:" #: documents/validators.py:24 #, python-brace-format msgid "Unable to parse URI {value}, missing scheme" -msgstr "" +msgstr "{value} URI를 파싱할 수 없습니다: 스킴이 누락되었습니다." #: documents/validators.py:29 #, python-brace-format msgid "Unable to parse URI {value}, missing net location or path" -msgstr "" +msgstr "{value} URI를 파싱할 수 없습니다: 네트워크 위치 또는 경로가 누락되었습니다." #: documents/validators.py:36 msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}" -msgstr "" +msgstr "URI 스킴 '{parts.scheme}'는 허용되지 않습니다. 허용된 스킴: {', '.join(allowed_schemes)}" #: documents/validators.py:45 #, python-brace-format msgid "Unable to parse URI {value}" -msgstr "" +msgstr "{value} URI를 파싱할 수 없음" #: paperless/apps.py:11 msgid "Paperless" @@ -1627,151 +1676,151 @@ msgstr "태그 바코드 매핑 설정" msgid "paperless application settings" msgstr "페이퍼리스 애플리케이션 설정" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "영어 (미국)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "아랍어" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "아프리칸스어" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "벨라루스어" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "불가리어" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "카탈로니아어" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "체코어" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "덴마크어" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "독일어" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "그리스어" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "영어 (영국)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "스페인어" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "페르시아어" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "핀란드어" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "프랑스어" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "헝가리어" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "이탈리아어" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "일본어" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "한국어" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "룩셈부르크어" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "노르웨이어" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "네덜란드어" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "폴란드어" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "포르투갈어 (브라질)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "포르투갈어" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "루마니아어" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "러시아어" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "슬로바키아어" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "슬로베니아어" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "세르비아어" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "스웨덴어" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "튀르키예어" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "우크라이나어" -#: paperless/settings.py:805 -msgid "Vietnamese" -msgstr "" - #: paperless/settings.py:806 +msgid "Vietnamese" +msgstr "베트남어" + +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "중국어 간체" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "중국어 번체" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx 관리" diff --git a/src/locale/lb_LU/LC_MESSAGES/django.po b/src/locale/lb_LU/LC_MESSAGES/django.po index a2be54ebc..b78b030c3 100644 --- a/src/locale/lb_LU/LC_MESSAGES/django.po +++ b/src/locale/lb_LU/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Luxembourgish\n" "Language: lb_LU\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumenter" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "Besëtzer" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Keng" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Iergendee Wuert" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "All d'Wierder" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Exakten Treffer" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regulären Ausdrock" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Ongenaut Wuert" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatesch" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "Numm" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "Zouweisungsmuster" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "Zouweisungsalgorithmus" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "Grouss-/Klengschreiwung ignoréieren" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "Korrespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "Korrespondenten" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "Faarf" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "Postaganks-Etikett" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Dës Etikett als Postaganks-Etikett markéieren: All nei importéiert Dokumenter kréien ëmmer dës Etikett zougewisen." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "Etikett" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "Etiketten" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "Dokumententyp" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "Dokumententypen" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "Pfad" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "Späicherpfad" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "Späicherpfaden" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Onverschlësselt" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Verschlësselt mat GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "Titel" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "Inhalt" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "De réien Textinhalt vum Dokument. Dëst Feld gëtt primär fir d'Sich benotzt." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME-Typ" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "Préifzomm" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "D'Préifzomm vum Original-Dokument." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "Archiv-Préifzomm" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "D'Préifzomm vum archivéierten Dokument." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "saiten unnzuel" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Weivill Saiten d' Dokument huet." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "erstallt" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "verännert" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "Späichertyp" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "derbäigesat" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "Fichiersnumm" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Aktuellen Dateinumm am Späicher" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "Archiv-Dateinumm" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Aktuellen Dateinumm am Archiv" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "original Dateinumm" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "Archiv-Seriennummer" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "D'Positioun vun dësem Dokument am physeschen Dokumentenarchiv." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "Dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "Dokumenter" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabell" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Kleng Kaarten" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Grouss Kaarten" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Titel" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Erstallt" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Dobäigesat" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Etiketten" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korrespondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Dokumententyp" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Späicherpfad" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Notiz" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Besëtzer" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Gedeelt" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "Op der Startsäit uweisen" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "An der Säiteleescht uweisen" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "Zortéierfeld" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "ëmgedréint zortéieren" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "Gespäichert Usiicht" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "Gespäichert Usiichten" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "Titel enthält" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "Inhalt enthält" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN ass" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "Korrespondent ass" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "Dokumententyp ass" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "ass am Postagank" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "huet Etikett" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "huet iergendeng Etikett" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "erstallt virun" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "erstallt no" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "Erstellungsjoer ass" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "Erstellungsmount ass" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "Erstellungsdag ass" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "dobäigesat virun" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "dobäigesat no" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "verännert virun" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "verännert no" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "huet dës Etikett net" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "huet keng ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "Titel oder Inhalt enthalen" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "Volltextsich" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "ähnlech Dokumenter" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "huet Etiketten an" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN méi grouss ewéi" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN méi kleng ewéi" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "Späicherpfad ass" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "Besëtzer ass" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "Reegeltyp" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "Wäert" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "Filterreegel" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "Filterreegelen" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "Benotzer" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Just Dokumenter traitéieren, déi exakt dësen Dateinumm hunn (falls definéiert). Platzhalter wéi *.pdf oder *invoice* sinn erlaabt. D'Grouss-/Klengschreiwung gëtt ignoréiert." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "dës Etikett zouweisen" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "Dësen Dokumententyp zouweisen" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "Dëse Korrespondent zouweisen" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "Reiefolleg" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Ongëltege regulären Ausdrock: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Ongëlteg Faarf." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Fichierstyp %(type)s net ënnerstëtzt" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Ongëlteg Zeechen detektéiert." @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Englesch (USA)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Belarusesch" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tschechesch" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dänesch" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Däitsch" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Englesch (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spuenesch" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Franséisch" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italienesch" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Lëtzebuergesch" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Hollännesch" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polnesch" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugisesch (Brasilien)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugisesch" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumänesch" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russesch" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slowenesch" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbesch" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Schwedesch" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Tierkesch" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Chinesesch (Vereinfacht)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx-Administratioun" diff --git a/src/locale/lt_LT/LC_MESSAGES/django.po b/src/locale/lt_LT/LC_MESSAGES/django.po index 1396233c5..61a6167b9 100644 --- a/src/locale/lt_LT/LC_MESSAGES/django.po +++ b/src/locale/lt_LT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Lithuanian\n" "Language: lt_LT\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumentai" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Neteisingas išraiškos sąrašas. Jis turi būti netuščias." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Neteisingas loginis operatorius {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Viršytas maksimalus užklausos sąlygų skaičius." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} nėra galiojantis pasirinktas laukas." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} nepalaiko užklausos išraiškos {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Viršytas maksimalus įdėjimo gylis." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "savininkas" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Niekas" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Betkoks žodis" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Visi žodžiai" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Tikslus atitikimas" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Paprastas paieška" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Neapibrėžtas žodis" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Atutomatinis" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "vardas" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "atitikimas" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "atitikimo algoritmas" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "yra nejautrus" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korespondentas" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korespondentai" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "spalva" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "yra pašto dėžutės etiketė" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Nustato žymę, kaip pašto dėžės etiketę: Visi naujai apdoroti dokumentail bus pažymėti su pašto dėžutės etiketėmis." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etiketė" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etiketės" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "dokumento tipas" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "dokumentų tipai" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "kelias" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "saugyklos kelias" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "saugyklos keliai" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Neužšifruota" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Užšifruota su GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "pavadinimas" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "turinys" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Neaptoroti dokumento tekstiniai duomenys. Šis laukas naudojamas paieškai." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime tipas" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrolinė suma" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Orginalaus dokumento kontrolinė suma." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "archyvo kontrolinė suma" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Kontrolinė suma suarchyvuoto dokumento." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "puslapių skaičius" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Dokumento puslapių skaičius." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "sukurtas" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "pakeistas" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "saugyklos tipas" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "pridėtas" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "failo pavadinimas" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Dabartinis failo pavadinimas saugykloje" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "failo archyve pavadinimas" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Dabartinis archyvo failo pavadinimas saugykloje" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "orginalus failo pavadinimas" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Orginalus failo pavadinimas, kuris buvo suteiktas įkeliant" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "serijinis numeris" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Šio dokumento pozicija jūsų fiziniame dokumentų archyve." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokumentas" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumentai" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Lentelė" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Mažos kortelės" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Didelės kortelės" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Pavadinimas" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Sukurta" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Pridėta" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Žymos" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korespondentas" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Dokumento tipas" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Saugyklos kelias" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Pastaba" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Savininkas" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Bendrinama" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Puslapiai" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "rodyti valdymo skydelyje" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "rodyti šoninėje juostoje" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "rūšiuoti lauką" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "rūšiuoti atvirkščiai" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Peržiūros puslapio dydis" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Peržiūros rodymo režimas" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Dokumento rodymo laukai" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "išsaugota peržiūra" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "išsaugotos peržiūros" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "" -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "" @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "" diff --git a/src/locale/lv_LV/LC_MESSAGES/django.po b/src/locale/lv_LV/LC_MESSAGES/django.po index cd7d01bd6..1cec2a445 100644 --- a/src/locale/lv_LV/LC_MESSAGES/django.po +++ b/src/locale/lv_LV/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Latvian\n" "Language: lv_LV\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokuments" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "īpašnieks" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Neviens" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Jebkādi vārdi" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Visi vārdi" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Precīza atbilstība" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regulāra izteiksme" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "\"izplūdis\" vārds" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automātiski" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nosaukums" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "atbilstība" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "atbilstības algoritms" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "nav reģistrjutīgs" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korespondents" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korespondenti" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "krāsa" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "ir iesūtnes birka" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Atzīmē šo tagu kā iesūtnes tagu: visi jaunie apstradātie dokumenti tiks atzīmēti ar iesūtnes tagiem." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "birka" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "birkas" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "dokumenta veids" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "dokumentu veidi" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "ceļš" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "uzglabāšanas ceļš" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "uzglabāšanas ceļi" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Nešifrēts" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Šifrēts ar GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "virsraksts" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "saturs" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "" -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime tips" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrolsumma" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Oriģināla dokumenta kontrolsumma." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arhīva kontrolsumma" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Arhivēta dokumenta kontrolsumma." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "izveidots" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "modificēts" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "glabāšanas veids" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "pievienots" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "faila nosaukums" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Pašreizējais faila nosaukums krātuvē" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "arhīva faila nosaukums" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Pašreizējais arhīva faila nosaukums krātuvē" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "sākotnējais faila nosaukums" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Faila sākotnējais nosaukums, kad tas tika augšupielādēts" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "arhīva sērijas numurs" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Šī dokumenta atrašanās vieta fiziskajā dokumentu arhīvā." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokuments" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokuments" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "parādīt galvenajā panelī" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "rādīt sānu joslā" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "kārtošanas lauks" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "kārtot pretēji" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "saglabātais skats" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "saglabātais skati" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "virsraksts satur" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "saturā ir" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN ir" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "korespondents ir" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "dokumenta veids ir" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "ir iesūtnē" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "ir birka" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "ir jekura birka" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "izveidots pirms" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "izveidots pēc" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "izveidotais gads ir" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "izveidotais mēnesis ir" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "izveidotā diena ir" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "pievienots pirms" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "pievienots pēc" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "modificēts pirms" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "modificēts pēc" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "nav birkas" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "nav ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "virsraksts vai saturs satur" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "pilnteksta vaicājums" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "vairāk šādi" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "ir birkas" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN lielāks par" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN mazāks par" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "uzglabāšanas ceļš ir" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "korespondents ir" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "nav korespondenta" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "dokumenta veids ir" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "nav dokumenta tipa" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "uzglabāšanas ceļš ir" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "nav krātuves ceļa" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "īpašnieks ir" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "ir īpašnieks" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "nav īpašnieka" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "nav īpašnieka" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "ir pielāgota lauka vērtība" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "kopīgots ar mani" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "noteikumu tips" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "vērtība" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "filtra noteikums" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "filtra noteikumi" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Uzdevuma ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID izpildītajam uzdevumam" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Atzīts" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Ja uzdevums tiek apstiprināts, izmantojot priekšgalsistēmu vai API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Uzdevuma faila nosaukums" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Faila nosaukums, kuram tika palaists uzdevums" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Uzdevuma nosaukums" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Uzdevuma stāvoklis" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "lietotājs" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "piezīme" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "piezīmes" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arhīvs" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Oriģināls" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "kopīgot saiti" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "kopīgot saites" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Virkne" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Date" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Boolean" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Integer" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Float" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monetary" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Dokumenta saite" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "datu tips" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "pielāgojams lauks" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "pielāgojami lauki" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokuments pievienots" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokuments atjaunināts" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "" -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "darbplūsmas trigeri" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "darbplūsmas trigeri" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Norīkojums" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Noņemt" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-pasts" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "piešķirt virsrakstu" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "piešķirt šo birku" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "piešķirt šo dokumenta tipu" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "piešķirt šo korespondentu" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "piešķirt šo krātuves ceļu" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "piešķirt šo īpašnieku" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "piešķirt skata atļaujas šiem lietotājiem" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "piešķirt skata atļaujas šīm grupām" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "piešķirt izmaiņu atļaujas šiem lietotājiem" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "dzēst birkas" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "dzēst visus īpašniekus" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "noņemt skata atļaujas šiem lietotājiem" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "noņemt skata atļaujas šīm grupām" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "noņemt visas atļaujas" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "darbības" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "ieslēgts" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "" @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Angļu (ASV)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arābu" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Āfrikāņu" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Baltkrievu" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bulgāru" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Kataloniešu" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Čehu" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dāņu" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Vācu" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grieķu" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Angļu (ASV)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spāņu" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Somu" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Franču" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Ungāru" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Itāļu" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japāņu" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luksemburgiešu" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norvēģu" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Holandiešu" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Poļu" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugāļu (Brazīlija)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugāļu" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumāņu" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Krievu" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovāku" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovēņu" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Sērbu" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Zviedru" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turku" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukraiņu" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Ķīniešu (vienkāršota)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "" diff --git a/src/locale/mk_MK/LC_MESSAGES/django.po b/src/locale/mk_MK/LC_MESSAGES/django.po new file mode 100644 index 000000000..eb93aed05 --- /dev/null +++ b/src/locale/mk_MK/LC_MESSAGES/django.po @@ -0,0 +1,2149 @@ +msgid "" +msgstr "" +"Project-Id-Version: paperless-ngx\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" +"Last-Translator: \n" +"Language-Team: Macedonian\n" +"Language: mk_MK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n%10==1 && n%100 != 11 ? 0 : 1);\n" +"X-Crowdin-Project: paperless-ngx\n" +"X-Crowdin-Project-ID: 500308\n" +"X-Crowdin-Language: mk\n" +"X-Crowdin-File: /dev/src/locale/en_US/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 14\n" + +#: documents/apps.py:8 +msgid "Documents" +msgstr "" + +#: documents/filters.py:395 +msgid "Value must be valid JSON." +msgstr "" + +#: documents/filters.py:414 +msgid "Invalid custom field query expression" +msgstr "" + +#: documents/filters.py:424 +msgid "Invalid expression list. Must be nonempty." +msgstr "" + +#: documents/filters.py:445 +msgid "Invalid logical operator {op!r}" +msgstr "" + +#: documents/filters.py:459 +msgid "Maximum number of query conditions exceeded." +msgstr "" + +#: documents/filters.py:524 +msgid "{name!r} is not a valid custom field." +msgstr "" + +#: documents/filters.py:561 +msgid "{data_type} does not support query expr {expr!r}." +msgstr "" + +#: documents/filters.py:669 documents/models.py:135 +msgid "Maximum nesting depth exceeded." +msgstr "" + +#: documents/filters.py:854 +msgid "Custom field not found" +msgstr "" + +#: documents/models.py:38 documents/models.py:768 +msgid "owner" +msgstr "" + +#: documents/models.py:55 documents/models.py:983 +msgid "None" +msgstr "" + +#: documents/models.py:56 documents/models.py:984 +msgid "Any word" +msgstr "" + +#: documents/models.py:57 documents/models.py:985 +msgid "All words" +msgstr "" + +#: documents/models.py:58 documents/models.py:986 +msgid "Exact match" +msgstr "" + +#: documents/models.py:59 documents/models.py:987 +msgid "Regular expression" +msgstr "" + +#: documents/models.py:60 documents/models.py:988 +msgid "Fuzzy word" +msgstr "" + +#: documents/models.py:61 +msgid "Automatic" +msgstr "" + +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 +#: paperless_mail/models.py:23 paperless_mail/models.py:143 +msgid "name" +msgstr "" + +#: documents/models.py:66 documents/models.py:1052 +msgid "match" +msgstr "" + +#: documents/models.py:69 documents/models.py:1055 +msgid "matching algorithm" +msgstr "" + +#: documents/models.py:74 documents/models.py:1060 +msgid "is insensitive" +msgstr "" + +#: documents/models.py:97 documents/models.py:170 +msgid "correspondent" +msgstr "" + +#: documents/models.py:98 +msgid "correspondents" +msgstr "" + +#: documents/models.py:102 +msgid "color" +msgstr "" + +#: documents/models.py:107 +msgid "is inbox tag" +msgstr "" + +#: documents/models.py:110 +msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." +msgstr "" + +#: documents/models.py:116 +msgid "tag" +msgstr "" + +#: documents/models.py:117 documents/models.py:208 +msgid "tags" +msgstr "" + +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 +msgid "document type" +msgstr "" + +#: documents/models.py:143 +msgid "document types" +msgstr "" + +#: documents/models.py:148 +msgid "path" +msgstr "" + +#: documents/models.py:152 documents/models.py:179 +msgid "storage path" +msgstr "" + +#: documents/models.py:153 +msgid "storage paths" +msgstr "" + +#: documents/models.py:160 +msgid "Unencrypted" +msgstr "" + +#: documents/models.py:161 +msgid "Encrypted with GNU Privacy Guard" +msgstr "" + +#: documents/models.py:182 +msgid "title" +msgstr "" + +#: documents/models.py:194 documents/models.py:682 +msgid "content" +msgstr "" + +#: documents/models.py:197 +msgid "The raw, text-only data of the document. This field is primarily used for searching." +msgstr "" + +#: documents/models.py:202 +msgid "mime type" +msgstr "" + +#: documents/models.py:212 +msgid "checksum" +msgstr "" + +#: documents/models.py:216 +msgid "The checksum of the original document." +msgstr "" + +#: documents/models.py:220 +msgid "archive checksum" +msgstr "" + +#: documents/models.py:225 +msgid "The checksum of the archived document." +msgstr "" + +#: documents/models.py:229 +msgid "page count" +msgstr "" + +#: documents/models.py:236 +msgid "The number of pages of the document." +msgstr "" + +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 +msgid "created" +msgstr "" + +#: documents/models.py:247 +msgid "modified" +msgstr "" + +#: documents/models.py:254 +msgid "storage type" +msgstr "" + +#: documents/models.py:262 +msgid "added" +msgstr "" + +#: documents/models.py:269 +msgid "filename" +msgstr "" + +#: documents/models.py:275 +msgid "Current filename in storage" +msgstr "" + +#: documents/models.py:279 +msgid "archive filename" +msgstr "" + +#: documents/models.py:285 +msgid "Current archive filename in storage" +msgstr "" + +#: documents/models.py:289 +msgid "original filename" +msgstr "" + +#: documents/models.py:295 +msgid "The original name of the file when it was uploaded" +msgstr "" + +#: documents/models.py:302 +msgid "archive serial number" +msgstr "" + +#: documents/models.py:312 +msgid "The position of this document in your physical document archive." +msgstr "" + +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 +msgid "document" +msgstr "" + +#: documents/models.py:319 +msgid "documents" +msgstr "" + +#: documents/models.py:437 +msgid "Table" +msgstr "" + +#: documents/models.py:438 +msgid "Small Cards" +msgstr "" + +#: documents/models.py:439 +msgid "Large Cards" +msgstr "" + +#: documents/models.py:442 +msgid "Title" +msgstr "" + +#: documents/models.py:443 documents/models.py:1004 +msgid "Created" +msgstr "" + +#: documents/models.py:444 documents/models.py:1003 +msgid "Added" +msgstr "" + +#: documents/models.py:445 +msgid "Tags" +msgstr "" + +#: documents/models.py:446 +msgid "Correspondent" +msgstr "" + +#: documents/models.py:447 +msgid "Document Type" +msgstr "" + +#: documents/models.py:448 +msgid "Storage Path" +msgstr "" + +#: documents/models.py:449 +msgid "Note" +msgstr "" + +#: documents/models.py:450 +msgid "Owner" +msgstr "" + +#: documents/models.py:451 +msgid "Shared" +msgstr "" + +#: documents/models.py:452 +msgid "ASN" +msgstr "" + +#: documents/models.py:453 +msgid "Pages" +msgstr "" + +#: documents/models.py:459 +msgid "show on dashboard" +msgstr "" + +#: documents/models.py:462 +msgid "show in sidebar" +msgstr "" + +#: documents/models.py:466 +msgid "sort field" +msgstr "" + +#: documents/models.py:471 +msgid "sort reverse" +msgstr "" + +#: documents/models.py:474 +msgid "View page size" +msgstr "" + +#: documents/models.py:482 +msgid "View display mode" +msgstr "" + +#: documents/models.py:489 +msgid "Document display fields" +msgstr "" + +#: documents/models.py:496 documents/models.py:559 +msgid "saved view" +msgstr "" + +#: documents/models.py:497 +msgid "saved views" +msgstr "" + +#: documents/models.py:505 +msgid "title contains" +msgstr "" + +#: documents/models.py:506 +msgid "content contains" +msgstr "" + +#: documents/models.py:507 +msgid "ASN is" +msgstr "" + +#: documents/models.py:508 +msgid "correspondent is" +msgstr "" + +#: documents/models.py:509 +msgid "document type is" +msgstr "" + +#: documents/models.py:510 +msgid "is in inbox" +msgstr "" + +#: documents/models.py:511 +msgid "has tag" +msgstr "" + +#: documents/models.py:512 +msgid "has any tag" +msgstr "" + +#: documents/models.py:513 +msgid "created before" +msgstr "" + +#: documents/models.py:514 +msgid "created after" +msgstr "" + +#: documents/models.py:515 +msgid "created year is" +msgstr "" + +#: documents/models.py:516 +msgid "created month is" +msgstr "" + +#: documents/models.py:517 +msgid "created day is" +msgstr "" + +#: documents/models.py:518 +msgid "added before" +msgstr "" + +#: documents/models.py:519 +msgid "added after" +msgstr "" + +#: documents/models.py:520 +msgid "modified before" +msgstr "" + +#: documents/models.py:521 +msgid "modified after" +msgstr "" + +#: documents/models.py:522 +msgid "does not have tag" +msgstr "" + +#: documents/models.py:523 +msgid "does not have ASN" +msgstr "" + +#: documents/models.py:524 +msgid "title or content contains" +msgstr "" + +#: documents/models.py:525 +msgid "fulltext query" +msgstr "" + +#: documents/models.py:526 +msgid "more like this" +msgstr "" + +#: documents/models.py:527 +msgid "has tags in" +msgstr "" + +#: documents/models.py:528 +msgid "ASN greater than" +msgstr "" + +#: documents/models.py:529 +msgid "ASN less than" +msgstr "" + +#: documents/models.py:530 +msgid "storage path is" +msgstr "" + +#: documents/models.py:531 +msgid "has correspondent in" +msgstr "" + +#: documents/models.py:532 +msgid "does not have correspondent in" +msgstr "" + +#: documents/models.py:533 +msgid "has document type in" +msgstr "" + +#: documents/models.py:534 +msgid "does not have document type in" +msgstr "" + +#: documents/models.py:535 +msgid "has storage path in" +msgstr "" + +#: documents/models.py:536 +msgid "does not have storage path in" +msgstr "" + +#: documents/models.py:537 +msgid "owner is" +msgstr "" + +#: documents/models.py:538 +msgid "has owner in" +msgstr "" + +#: documents/models.py:539 +msgid "does not have owner" +msgstr "" + +#: documents/models.py:540 +msgid "does not have owner in" +msgstr "" + +#: documents/models.py:541 +msgid "has custom field value" +msgstr "" + +#: documents/models.py:542 +msgid "is shared by me" +msgstr "" + +#: documents/models.py:543 +msgid "has custom fields" +msgstr "" + +#: documents/models.py:544 +msgid "has custom field in" +msgstr "" + +#: documents/models.py:545 +msgid "does not have custom field in" +msgstr "" + +#: documents/models.py:546 +msgid "does not have custom field" +msgstr "" + +#: documents/models.py:547 +msgid "custom fields query" +msgstr "" + +#: documents/models.py:548 +msgid "created to" +msgstr "" + +#: documents/models.py:549 +msgid "created from" +msgstr "" + +#: documents/models.py:550 +msgid "added to" +msgstr "" + +#: documents/models.py:551 +msgid "added from" +msgstr "" + +#: documents/models.py:552 +msgid "mime type is" +msgstr "" + +#: documents/models.py:562 +msgid "rule type" +msgstr "" + +#: documents/models.py:564 +msgid "value" +msgstr "" + +#: documents/models.py:567 +msgid "filter rule" +msgstr "" + +#: documents/models.py:568 +msgid "filter rules" +msgstr "" + +#: documents/models.py:592 +msgid "Auto Task" +msgstr "" + +#: documents/models.py:593 +msgid "Scheduled Task" +msgstr "" + +#: documents/models.py:594 +msgid "Manual Task" +msgstr "" + +#: documents/models.py:597 +msgid "Consume File" +msgstr "" + +#: documents/models.py:598 +msgid "Train Classifier" +msgstr "" + +#: documents/models.py:599 +msgid "Check Sanity" +msgstr "" + +#: documents/models.py:600 +msgid "Index Optimize" +msgstr "" + +#: documents/models.py:605 +msgid "Task ID" +msgstr "" + +#: documents/models.py:606 +msgid "Celery ID for the Task that was run" +msgstr "" + +#: documents/models.py:611 +msgid "Acknowledged" +msgstr "" + +#: documents/models.py:612 +msgid "If the task is acknowledged via the frontend or API" +msgstr "" + +#: documents/models.py:618 +msgid "Task Filename" +msgstr "" + +#: documents/models.py:619 +msgid "Name of the file which the Task was run for" +msgstr "" + +#: documents/models.py:626 +msgid "Task Name" +msgstr "" + +#: documents/models.py:627 +msgid "Name of the task that was run" +msgstr "" + +#: documents/models.py:634 +msgid "Task State" +msgstr "" + +#: documents/models.py:635 +msgid "Current state of the task being run" +msgstr "" + +#: documents/models.py:641 +msgid "Created DateTime" +msgstr "" + +#: documents/models.py:642 +msgid "Datetime field when the task result was created in UTC" +msgstr "" + +#: documents/models.py:648 +msgid "Started DateTime" +msgstr "" + +#: documents/models.py:649 +msgid "Datetime field when the task was started in UTC" +msgstr "" + +#: documents/models.py:655 +msgid "Completed DateTime" +msgstr "" + +#: documents/models.py:656 +msgid "Datetime field when the task was completed in UTC" +msgstr "" + +#: documents/models.py:662 +msgid "Result Data" +msgstr "" + +#: documents/models.py:664 +msgid "The data returned by the task" +msgstr "" + +#: documents/models.py:672 +msgid "Task Type" +msgstr "" + +#: documents/models.py:673 +msgid "The type of task that was run" +msgstr "" + +#: documents/models.py:684 +msgid "Note for the document" +msgstr "" + +#: documents/models.py:708 +msgid "user" +msgstr "" + +#: documents/models.py:713 +msgid "note" +msgstr "" + +#: documents/models.py:714 +msgid "notes" +msgstr "" + +#: documents/models.py:722 +msgid "Archive" +msgstr "" + +#: documents/models.py:723 +msgid "Original" +msgstr "" + +#: documents/models.py:734 paperless_mail/models.py:75 +msgid "expiration" +msgstr "" + +#: documents/models.py:741 +msgid "slug" +msgstr "" + +#: documents/models.py:773 +msgid "share link" +msgstr "" + +#: documents/models.py:774 +msgid "share links" +msgstr "" + +#: documents/models.py:786 +msgid "String" +msgstr "" + +#: documents/models.py:787 +msgid "URL" +msgstr "" + +#: documents/models.py:788 +msgid "Date" +msgstr "" + +#: documents/models.py:789 +msgid "Boolean" +msgstr "" + +#: documents/models.py:790 +msgid "Integer" +msgstr "" + +#: documents/models.py:791 +msgid "Float" +msgstr "" + +#: documents/models.py:792 +msgid "Monetary" +msgstr "" + +#: documents/models.py:793 +msgid "Document Link" +msgstr "" + +#: documents/models.py:794 +msgid "Select" +msgstr "" + +#: documents/models.py:795 +msgid "Long Text" +msgstr "" + +#: documents/models.py:807 +msgid "data type" +msgstr "" + +#: documents/models.py:814 +msgid "extra data" +msgstr "" + +#: documents/models.py:818 +msgid "Extra data for the custom field, such as select options" +msgstr "" + +#: documents/models.py:824 +msgid "custom field" +msgstr "" + +#: documents/models.py:825 +msgid "custom fields" +msgstr "" + +#: documents/models.py:925 +msgid "custom field instance" +msgstr "" + +#: documents/models.py:926 +msgid "custom field instances" +msgstr "" + +#: documents/models.py:991 +msgid "Consumption Started" +msgstr "" + +#: documents/models.py:992 +msgid "Document Added" +msgstr "" + +#: documents/models.py:993 +msgid "Document Updated" +msgstr "" + +#: documents/models.py:994 +msgid "Scheduled" +msgstr "" + +#: documents/models.py:997 +msgid "Consume Folder" +msgstr "" + +#: documents/models.py:998 +msgid "Api Upload" +msgstr "" + +#: documents/models.py:999 +msgid "Mail Fetch" +msgstr "" + +#: documents/models.py:1000 +msgid "Web UI" +msgstr "" + +#: documents/models.py:1005 +msgid "Modified" +msgstr "" + +#: documents/models.py:1006 +msgid "Custom Field" +msgstr "" + +#: documents/models.py:1009 +msgid "Workflow Trigger Type" +msgstr "" + +#: documents/models.py:1021 +msgid "filter path" +msgstr "" + +#: documents/models.py:1026 +msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." +msgstr "" + +#: documents/models.py:1033 +msgid "filter filename" +msgstr "" + +#: documents/models.py:1038 paperless_mail/models.py:200 +msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." +msgstr "" + +#: documents/models.py:1049 +msgid "filter documents from this mail rule" +msgstr "" + +#: documents/models.py:1065 +msgid "has these tag(s)" +msgstr "" + +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 +msgid "has this document type" +msgstr "" + +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 +msgid "has this correspondent" +msgstr "" + +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 +msgid "schedule offset days" +msgstr "" + +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." +msgstr "" + +#: documents/models.py:1151 +msgid "schedule recurring delay in days" +msgstr "" + +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." +msgstr "" + +#: documents/models.py:1160 +msgid "schedule date field" +msgstr "" + +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." +msgstr "" + +#: documents/models.py:1174 +msgid "schedule date custom field" +msgstr "" + +#: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 +msgid "The body to send with the webhook URL if parameters not used." +msgstr "" + +#: documents/models.py:1257 +msgid "webhook headers" +msgstr "" + +#: documents/models.py:1260 +msgid "The headers to send with the webhook URL." +msgstr "" + +#: documents/models.py:1265 +msgid "include document in webhook" +msgstr "" + +#: documents/models.py:1276 +msgid "Assignment" +msgstr "" + +#: documents/models.py:1280 +msgid "Removal" +msgstr "" + +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 +msgid "Email" +msgstr "" + +#: documents/models.py:1288 +msgid "Webhook" +msgstr "" + +#: documents/models.py:1292 +msgid "Workflow Action Type" +msgstr "" + +#: documents/models.py:1298 +msgid "assign title" +msgstr "" + +#: documents/models.py:1302 +msgid "Assign a document title, must be a Jinja2 template, see documentation." +msgstr "" + +#: documents/models.py:1310 paperless_mail/models.py:274 +msgid "assign this tag" +msgstr "" + +#: documents/models.py:1319 paperless_mail/models.py:282 +msgid "assign this document type" +msgstr "" + +#: documents/models.py:1328 paperless_mail/models.py:296 +msgid "assign this correspondent" +msgstr "" + +#: documents/models.py:1337 +msgid "assign this storage path" +msgstr "" + +#: documents/models.py:1346 +msgid "assign this owner" +msgstr "" + +#: documents/models.py:1353 +msgid "grant view permissions to these users" +msgstr "" + +#: documents/models.py:1360 +msgid "grant view permissions to these groups" +msgstr "" + +#: documents/models.py:1367 +msgid "grant change permissions to these users" +msgstr "" + +#: documents/models.py:1374 +msgid "grant change permissions to these groups" +msgstr "" + +#: documents/models.py:1381 +msgid "assign these custom fields" +msgstr "" + +#: documents/models.py:1385 +msgid "custom field values" +msgstr "" + +#: documents/models.py:1389 +msgid "Optional values to assign to the custom fields." +msgstr "" + +#: documents/models.py:1398 +msgid "remove these tag(s)" +msgstr "" + +#: documents/models.py:1403 +msgid "remove all tags" +msgstr "" + +#: documents/models.py:1410 +msgid "remove these document type(s)" +msgstr "" + +#: documents/models.py:1415 +msgid "remove all document types" +msgstr "" + +#: documents/models.py:1422 +msgid "remove these correspondent(s)" +msgstr "" + +#: documents/models.py:1427 +msgid "remove all correspondents" +msgstr "" + +#: documents/models.py:1434 +msgid "remove these storage path(s)" +msgstr "" + +#: documents/models.py:1439 +msgid "remove all storage paths" +msgstr "" + +#: documents/models.py:1446 +msgid "remove these owner(s)" +msgstr "" + +#: documents/models.py:1451 +msgid "remove all owners" +msgstr "" + +#: documents/models.py:1458 +msgid "remove view permissions for these users" +msgstr "" + +#: documents/models.py:1465 +msgid "remove view permissions for these groups" +msgstr "" + +#: documents/models.py:1472 +msgid "remove change permissions for these users" +msgstr "" + +#: documents/models.py:1479 +msgid "remove change permissions for these groups" +msgstr "" + +#: documents/models.py:1484 +msgid "remove all permissions" +msgstr "" + +#: documents/models.py:1491 +msgid "remove these custom fields" +msgstr "" + +#: documents/models.py:1496 +msgid "remove all custom fields" +msgstr "" + +#: documents/models.py:1505 +msgid "email" +msgstr "" + +#: documents/models.py:1514 +msgid "webhook" +msgstr "" + +#: documents/models.py:1518 +msgid "workflow action" +msgstr "" + +#: documents/models.py:1519 +msgid "workflow actions" +msgstr "" + +#: documents/models.py:1528 paperless_mail/models.py:145 +msgid "order" +msgstr "" + +#: documents/models.py:1534 +msgid "triggers" +msgstr "" + +#: documents/models.py:1541 +msgid "actions" +msgstr "" + +#: documents/models.py:1544 paperless_mail/models.py:154 +msgid "enabled" +msgstr "" + +#: documents/models.py:1555 +msgid "workflow" +msgstr "" + +#: documents/models.py:1559 +msgid "workflow trigger type" +msgstr "" + +#: documents/models.py:1573 +msgid "date run" +msgstr "" + +#: documents/models.py:1579 +msgid "workflow run" +msgstr "" + +#: documents/models.py:1580 +msgid "workflow runs" +msgstr "" + +#: documents/serialisers.py:640 +msgid "Invalid color." +msgstr "" + +#: documents/serialisers.py:1826 +#, python-format +msgid "File type %(type)s not supported" +msgstr "" + +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 +msgid "Invalid variable detected." +msgstr "" + +#: documents/templates/account/account_inactive.html:5 +msgid "Paperless-ngx account inactive" +msgstr "" + +#: documents/templates/account/account_inactive.html:9 +msgid "Account inactive." +msgstr "" + +#: documents/templates/account/account_inactive.html:14 +msgid "This account is inactive." +msgstr "" + +#: documents/templates/account/account_inactive.html:16 +msgid "Return to login" +msgstr "" + +#: documents/templates/account/email/base_message.txt:1 +#, python-format +msgid "Hello from %(site_name)s!" +msgstr "" + +#: documents/templates/account/email/base_message.txt:5 +#, python-format +msgid "Thank you for using %(site_name)s!\n" +"%(site_domain)s" +msgstr "" + +#: documents/templates/account/login.html:5 +msgid "Paperless-ngx sign in" +msgstr "" + +#: documents/templates/account/login.html:10 +msgid "Please sign in." +msgstr "" + +#: documents/templates/account/login.html:12 +#, python-format +msgid "Don't have an account yet? Sign up" +msgstr "" + +#: documents/templates/account/login.html:25 +#: documents/templates/account/signup.html:22 +#: documents/templates/socialaccount/signup.html:13 +msgid "Username" +msgstr "" + +#: documents/templates/account/login.html:26 +#: documents/templates/account/signup.html:24 +msgid "Password" +msgstr "" + +#: documents/templates/account/login.html:36 +#: documents/templates/mfa/authenticate.html:23 +msgid "Sign in" +msgstr "" + +#: documents/templates/account/login.html:40 +msgid "Forgot your password?" +msgstr "" + +#: documents/templates/account/login.html:51 +#: documents/templates/account/signup.html:57 +msgid "or sign in via" +msgstr "" + +#: documents/templates/account/password_reset.html:5 +msgid "Paperless-ngx reset password request" +msgstr "" + +#: documents/templates/account/password_reset.html:9 +msgid "Enter your email address below, and we'll email instructions for setting a new one." +msgstr "" + +#: documents/templates/account/password_reset.html:12 +msgid "An error occurred. Please try again." +msgstr "" + +#: documents/templates/account/password_reset.html:21 +msgid "Send me instructions!" +msgstr "" + +#: documents/templates/account/password_reset_done.html:5 +msgid "Paperless-ngx reset password sent" +msgstr "" + +#: documents/templates/account/password_reset_done.html:9 +msgid "Check your inbox." +msgstr "" + +#: documents/templates/account/password_reset_done.html:13 +msgid "We've emailed you instructions for setting your password. You should receive the email shortly!" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:5 +msgid "Paperless-ngx reset password confirmation" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:9 +msgid "Set a new password." +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:15 +msgid "request a new password reset" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:17 +msgid "New Password" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:18 +msgid "Confirm Password" +msgstr "" + +#: documents/templates/account/password_reset_from_key.html:28 +msgid "Change my password" +msgstr "" + +#: documents/templates/account/password_reset_from_key_done.html:5 +msgid "Paperless-ngx reset password complete" +msgstr "" + +#: documents/templates/account/password_reset_from_key_done.html:9 +msgid "Password reset complete." +msgstr "" + +#: documents/templates/account/password_reset_from_key_done.html:14 +#, python-format +msgid "Your new password has been set. You can now log in" +msgstr "" + +#: documents/templates/account/signup.html:5 +msgid "Paperless-ngx sign up" +msgstr "" + +#: documents/templates/account/signup.html:11 +#, python-format +msgid "Already have an account? Sign in" +msgstr "" + +#: documents/templates/account/signup.html:19 +msgid "Note: This is the first user account for this installation and will be granted superuser privileges." +msgstr "" + +#: documents/templates/account/signup.html:23 +#: documents/templates/socialaccount/signup.html:14 +msgid "Email (optional)" +msgstr "" + +#: documents/templates/account/signup.html:25 +msgid "Password (again)" +msgstr "" + +#: documents/templates/account/signup.html:43 +#: documents/templates/socialaccount/signup.html:27 +msgid "Sign up" +msgstr "" + +#: documents/templates/index.html:61 +msgid "Paperless-ngx is loading..." +msgstr "" + +#: documents/templates/index.html:62 +msgid "Still here?! Hmm, something might be wrong." +msgstr "" + +#: documents/templates/index.html:62 +msgid "Here's a link to the docs." +msgstr "" + +#: documents/templates/mfa/authenticate.html:7 +msgid "Paperless-ngx Two-Factor Authentication" +msgstr "" + +#: documents/templates/mfa/authenticate.html:12 +msgid "Your account is protected by two-factor authentication. Please enter an authenticator code:" +msgstr "" + +#: documents/templates/mfa/authenticate.html:17 +msgid "Code" +msgstr "" + +#: documents/templates/mfa/authenticate.html:24 +msgid "Cancel" +msgstr "" + +#: documents/templates/paperless-ngx/base.html:58 +msgid "Share link was not found." +msgstr "" + +#: documents/templates/paperless-ngx/base.html:62 +msgid "Share link has expired." +msgstr "" + +#: documents/templates/socialaccount/authentication_error.html:5 +#: documents/templates/socialaccount/login.html:5 +msgid "Paperless-ngx social account sign in" +msgstr "" + +#: documents/templates/socialaccount/authentication_error.html:10 +#, python-format +msgid "An error occurred while attempting to login via your social network account. Back to the login page" +msgstr "" + +#: documents/templates/socialaccount/login.html:10 +#, python-format +msgid "You are about to connect a new third-party account from %(provider)s." +msgstr "" + +#: documents/templates/socialaccount/login.html:13 +msgid "Continue" +msgstr "" + +#: documents/templates/socialaccount/signup.html:5 +msgid "Paperless-ngx social account sign up" +msgstr "" + +#: documents/templates/socialaccount/signup.html:10 +#, python-format +msgid "You are about to use your %(provider_name)s account to login." +msgstr "" + +#: documents/templates/socialaccount/signup.html:11 +msgid "As a final step, please complete the following form:" +msgstr "" + +#: documents/validators.py:24 +#, python-brace-format +msgid "Unable to parse URI {value}, missing scheme" +msgstr "" + +#: documents/validators.py:29 +#, python-brace-format +msgid "Unable to parse URI {value}, missing net location or path" +msgstr "" + +#: documents/validators.py:36 +msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}" +msgstr "" + +#: documents/validators.py:45 +#, python-brace-format +msgid "Unable to parse URI {value}" +msgstr "" + +#: paperless/apps.py:11 +msgid "Paperless" +msgstr "" + +#: paperless/models.py:26 +msgid "pdf" +msgstr "" + +#: paperless/models.py:27 +msgid "pdfa" +msgstr "" + +#: paperless/models.py:28 +msgid "pdfa-1" +msgstr "" + +#: paperless/models.py:29 +msgid "pdfa-2" +msgstr "" + +#: paperless/models.py:30 +msgid "pdfa-3" +msgstr "" + +#: paperless/models.py:39 +msgid "skip" +msgstr "" + +#: paperless/models.py:40 +msgid "redo" +msgstr "" + +#: paperless/models.py:41 +msgid "force" +msgstr "" + +#: paperless/models.py:42 +msgid "skip_noarchive" +msgstr "" + +#: paperless/models.py:50 +msgid "never" +msgstr "" + +#: paperless/models.py:51 +msgid "with_text" +msgstr "" + +#: paperless/models.py:52 +msgid "always" +msgstr "" + +#: paperless/models.py:60 +msgid "clean" +msgstr "" + +#: paperless/models.py:61 +msgid "clean-final" +msgstr "" + +#: paperless/models.py:62 +msgid "none" +msgstr "" + +#: paperless/models.py:70 +msgid "LeaveColorUnchanged" +msgstr "" + +#: paperless/models.py:71 +msgid "RGB" +msgstr "" + +#: paperless/models.py:72 +msgid "UseDeviceIndependentColor" +msgstr "" + +#: paperless/models.py:73 +msgid "Gray" +msgstr "" + +#: paperless/models.py:74 +msgid "CMYK" +msgstr "" + +#: paperless/models.py:83 +msgid "Sets the output PDF type" +msgstr "" + +#: paperless/models.py:95 +msgid "Do OCR from page 1 to this value" +msgstr "" + +#: paperless/models.py:101 +msgid "Do OCR using these languages" +msgstr "" + +#: paperless/models.py:108 +msgid "Sets the OCR mode" +msgstr "" + +#: paperless/models.py:116 +msgid "Controls the generation of an archive file" +msgstr "" + +#: paperless/models.py:124 +msgid "Sets image DPI fallback value" +msgstr "" + +#: paperless/models.py:131 +msgid "Controls the unpaper cleaning" +msgstr "" + +#: paperless/models.py:138 +msgid "Enables deskew" +msgstr "" + +#: paperless/models.py:141 +msgid "Enables page rotation" +msgstr "" + +#: paperless/models.py:146 +msgid "Sets the threshold for rotation of pages" +msgstr "" + +#: paperless/models.py:152 +msgid "Sets the maximum image size for decompression" +msgstr "" + +#: paperless/models.py:158 +msgid "Sets the Ghostscript color conversion strategy" +msgstr "" + +#: paperless/models.py:166 +msgid "Adds additional user arguments for OCRMyPDF" +msgstr "" + +#: paperless/models.py:175 +msgid "Application title" +msgstr "" + +#: paperless/models.py:182 +msgid "Application logo" +msgstr "" + +#: paperless/models.py:197 +msgid "Enables barcode scanning" +msgstr "" + +#: paperless/models.py:203 +msgid "Enables barcode TIFF support" +msgstr "" + +#: paperless/models.py:209 +msgid "Sets the barcode string" +msgstr "" + +#: paperless/models.py:217 +msgid "Retains split pages" +msgstr "" + +#: paperless/models.py:223 +msgid "Enables ASN barcode" +msgstr "" + +#: paperless/models.py:229 +msgid "Sets the ASN barcode prefix" +msgstr "" + +#: paperless/models.py:237 +msgid "Sets the barcode upscale factor" +msgstr "" + +#: paperless/models.py:244 +msgid "Sets the barcode DPI" +msgstr "" + +#: paperless/models.py:251 +msgid "Sets the maximum pages for barcode" +msgstr "" + +#: paperless/models.py:258 +msgid "Enables tag barcode" +msgstr "" + +#: paperless/models.py:264 +msgid "Sets the tag barcode mapping" +msgstr "" + +#: paperless/models.py:269 +msgid "paperless application settings" +msgstr "" + +#: paperless/settings.py:773 +msgid "English (US)" +msgstr "" + +#: paperless/settings.py:774 +msgid "Arabic" +msgstr "" + +#: paperless/settings.py:775 +msgid "Afrikaans" +msgstr "" + +#: paperless/settings.py:776 +msgid "Belarusian" +msgstr "" + +#: paperless/settings.py:777 +msgid "Bulgarian" +msgstr "" + +#: paperless/settings.py:778 +msgid "Catalan" +msgstr "" + +#: paperless/settings.py:779 +msgid "Czech" +msgstr "" + +#: paperless/settings.py:780 +msgid "Danish" +msgstr "" + +#: paperless/settings.py:781 +msgid "German" +msgstr "" + +#: paperless/settings.py:782 +msgid "Greek" +msgstr "" + +#: paperless/settings.py:783 +msgid "English (GB)" +msgstr "" + +#: paperless/settings.py:784 +msgid "Spanish" +msgstr "" + +#: paperless/settings.py:785 +msgid "Persian" +msgstr "" + +#: paperless/settings.py:786 +msgid "Finnish" +msgstr "" + +#: paperless/settings.py:787 +msgid "French" +msgstr "" + +#: paperless/settings.py:788 +msgid "Hungarian" +msgstr "" + +#: paperless/settings.py:789 +msgid "Italian" +msgstr "" + +#: paperless/settings.py:790 +msgid "Japanese" +msgstr "" + +#: paperless/settings.py:791 +msgid "Korean" +msgstr "" + +#: paperless/settings.py:792 +msgid "Luxembourgish" +msgstr "" + +#: paperless/settings.py:793 +msgid "Norwegian" +msgstr "" + +#: paperless/settings.py:794 +msgid "Dutch" +msgstr "" + +#: paperless/settings.py:795 +msgid "Polish" +msgstr "" + +#: paperless/settings.py:796 +msgid "Portuguese (Brazil)" +msgstr "" + +#: paperless/settings.py:797 +msgid "Portuguese" +msgstr "" + +#: paperless/settings.py:798 +msgid "Romanian" +msgstr "" + +#: paperless/settings.py:799 +msgid "Russian" +msgstr "" + +#: paperless/settings.py:800 +msgid "Slovak" +msgstr "" + +#: paperless/settings.py:801 +msgid "Slovenian" +msgstr "" + +#: paperless/settings.py:802 +msgid "Serbian" +msgstr "" + +#: paperless/settings.py:803 +msgid "Swedish" +msgstr "" + +#: paperless/settings.py:804 +msgid "Turkish" +msgstr "" + +#: paperless/settings.py:805 +msgid "Ukrainian" +msgstr "" + +#: paperless/settings.py:806 +msgid "Vietnamese" +msgstr "" + +#: paperless/settings.py:807 +msgid "Chinese Simplified" +msgstr "" + +#: paperless/settings.py:808 +msgid "Chinese Traditional" +msgstr "" + +#: paperless/urls.py:370 +msgid "Paperless-ngx administration" +msgstr "" + +#: paperless_mail/admin.py:39 +msgid "Authentication" +msgstr "" + +#: paperless_mail/admin.py:42 +msgid "Advanced settings" +msgstr "" + +#: paperless_mail/admin.py:58 +msgid "Filter" +msgstr "" + +#: paperless_mail/admin.py:61 +msgid "Paperless will only process mails that match ALL of the filters given below." +msgstr "" + +#: paperless_mail/admin.py:78 +msgid "Actions" +msgstr "" + +#: paperless_mail/admin.py:81 +msgid "The action applied to the mail. This action is only performed when the mail body or attachments were consumed from the mail." +msgstr "" + +#: paperless_mail/admin.py:89 +msgid "Metadata" +msgstr "" + +#: paperless_mail/admin.py:92 +msgid "Assign metadata to documents consumed from this rule automatically. If you do not assign tags, types or correspondents here, paperless will still process all matching rules that you have defined." +msgstr "" + +#: paperless_mail/apps.py:11 +msgid "Paperless mail" +msgstr "" + +#: paperless_mail/models.py:10 +msgid "mail account" +msgstr "" + +#: paperless_mail/models.py:11 +msgid "mail accounts" +msgstr "" + +#: paperless_mail/models.py:14 +msgid "No encryption" +msgstr "" + +#: paperless_mail/models.py:15 +msgid "Use SSL" +msgstr "" + +#: paperless_mail/models.py:16 +msgid "Use STARTTLS" +msgstr "" + +#: paperless_mail/models.py:19 +msgid "IMAP" +msgstr "" + +#: paperless_mail/models.py:20 +msgid "Gmail OAuth" +msgstr "" + +#: paperless_mail/models.py:21 +msgid "Outlook OAuth" +msgstr "" + +#: paperless_mail/models.py:25 +msgid "IMAP server" +msgstr "" + +#: paperless_mail/models.py:28 +msgid "IMAP port" +msgstr "" + +#: paperless_mail/models.py:32 +msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections." +msgstr "" + +#: paperless_mail/models.py:38 +msgid "IMAP security" +msgstr "" + +#: paperless_mail/models.py:43 +msgid "username" +msgstr "" + +#: paperless_mail/models.py:45 +msgid "password" +msgstr "" + +#: paperless_mail/models.py:47 +msgid "Is token authentication" +msgstr "" + +#: paperless_mail/models.py:50 +msgid "character set" +msgstr "" + +#: paperless_mail/models.py:54 +msgid "The character set to use when communicating with the mail server, such as 'UTF-8' or 'US-ASCII'." +msgstr "" + +#: paperless_mail/models.py:60 +msgid "account type" +msgstr "" + +#: paperless_mail/models.py:66 +msgid "refresh token" +msgstr "" + +#: paperless_mail/models.py:70 +msgid "The refresh token to use for token authentication e.g. with oauth2." +msgstr "" + +#: paperless_mail/models.py:79 +msgid "The expiration date of the refresh token. " +msgstr "" + +#: paperless_mail/models.py:89 +msgid "mail rule" +msgstr "" + +#: paperless_mail/models.py:90 +msgid "mail rules" +msgstr "" + +#: paperless_mail/models.py:104 paperless_mail/models.py:115 +msgid "Only process attachments." +msgstr "" + +#: paperless_mail/models.py:105 +msgid "Process full Mail (with embedded attachments in file) as .eml" +msgstr "" + +#: paperless_mail/models.py:109 +msgid "Process full Mail (with embedded attachments in file) as .eml + process attachments as separate documents" +msgstr "" + +#: paperless_mail/models.py:116 +msgid "Process all files, including 'inline' attachments." +msgstr "" + +#: paperless_mail/models.py:119 +msgid "System default" +msgstr "" + +#: paperless_mail/models.py:120 +msgid "Text, then HTML" +msgstr "" + +#: paperless_mail/models.py:121 +msgid "HTML, then text" +msgstr "" + +#: paperless_mail/models.py:122 +msgid "HTML only" +msgstr "" + +#: paperless_mail/models.py:123 +msgid "Text only" +msgstr "" + +#: paperless_mail/models.py:126 +msgid "Delete" +msgstr "" + +#: paperless_mail/models.py:127 +msgid "Move to specified folder" +msgstr "" + +#: paperless_mail/models.py:128 +msgid "Mark as read, don't process read mails" +msgstr "" + +#: paperless_mail/models.py:129 +msgid "Flag the mail, don't process flagged mails" +msgstr "" + +#: paperless_mail/models.py:130 +msgid "Tag the mail with specified tag, don't process tagged mails" +msgstr "" + +#: paperless_mail/models.py:133 +msgid "Use subject as title" +msgstr "" + +#: paperless_mail/models.py:134 +msgid "Use attachment filename as title" +msgstr "" + +#: paperless_mail/models.py:135 +msgid "Do not assign title from rule" +msgstr "" + +#: paperless_mail/models.py:138 +msgid "Do not assign a correspondent" +msgstr "" + +#: paperless_mail/models.py:139 +msgid "Use mail address" +msgstr "" + +#: paperless_mail/models.py:140 +msgid "Use name (or mail address if not available)" +msgstr "" + +#: paperless_mail/models.py:141 +msgid "Use correspondent selected below" +msgstr "" + +#: paperless_mail/models.py:151 +msgid "account" +msgstr "" + +#: paperless_mail/models.py:157 paperless_mail/models.py:318 +msgid "folder" +msgstr "" + +#: paperless_mail/models.py:161 +msgid "Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server." +msgstr "" + +#: paperless_mail/models.py:167 +msgid "filter from" +msgstr "" + +#: paperless_mail/models.py:174 +msgid "filter to" +msgstr "" + +#: paperless_mail/models.py:181 +msgid "filter subject" +msgstr "" + +#: paperless_mail/models.py:188 +msgid "filter body" +msgstr "" + +#: paperless_mail/models.py:195 +msgid "filter attachment filename inclusive" +msgstr "" + +#: paperless_mail/models.py:207 +msgid "filter attachment filename exclusive" +msgstr "" + +#: paperless_mail/models.py:212 +msgid "Do not consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." +msgstr "" + +#: paperless_mail/models.py:219 +msgid "maximum age" +msgstr "" + +#: paperless_mail/models.py:221 +msgid "Specified in days." +msgstr "" + +#: paperless_mail/models.py:225 +msgid "attachment type" +msgstr "" + +#: paperless_mail/models.py:229 +msgid "Inline attachments include embedded images, so it's best to combine this option with a filename filter." +msgstr "" + +#: paperless_mail/models.py:235 +msgid "consumption scope" +msgstr "" + +#: paperless_mail/models.py:241 +msgid "pdf layout" +msgstr "" + +#: paperless_mail/models.py:247 +msgid "action" +msgstr "" + +#: paperless_mail/models.py:253 +msgid "action parameter" +msgstr "" + +#: paperless_mail/models.py:258 +msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action. Subfolders must be separated by dots." +msgstr "" + +#: paperless_mail/models.py:266 +msgid "assign title from" +msgstr "" + +#: paperless_mail/models.py:286 +msgid "assign correspondent from" +msgstr "" + +#: paperless_mail/models.py:300 +msgid "Assign the rule owner to documents" +msgstr "" + +#: paperless_mail/models.py:326 +msgid "uid" +msgstr "" + +#: paperless_mail/models.py:334 +msgid "subject" +msgstr "" + +#: paperless_mail/models.py:342 +msgid "received" +msgstr "" + +#: paperless_mail/models.py:349 +msgid "processed" +msgstr "" + +#: paperless_mail/models.py:355 +msgid "status" +msgstr "" + +#: paperless_mail/models.py:363 +msgid "error" +msgstr "" + diff --git a/src/locale/ms_MY/LC_MESSAGES/django.po b/src/locale/ms_MY/LC_MESSAGES/django.po index 34ef1ef08..30c4e2ea0 100644 --- a/src/locale/ms_MY/LC_MESSAGES/django.po +++ b/src/locale/ms_MY/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Malay\n" "Language: ms_MY\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumen" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "pemilik" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Tiada" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Sebarang perkataan" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Semua perkataan" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Padanan tepat" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Ekspresi biasa" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Perkataan samar" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatik" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nama" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "padanan" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritma pemadanan" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "tidak sensitif" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "pengirim" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "pengirim" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "warna" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "" -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "tag" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "tag" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "jenis dokumen" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "jenis dokumen" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "tajuk" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "kandungan" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "" -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "" -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "" -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "dicipta" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "diubah" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "jenis storan" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "ditambah" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nama fail" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "arkib nama fail" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "nama fail asal" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Nama fail asal ketika dimuat naik" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "arkib nombor siri" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "" -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokumen" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumen" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Tajuk" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Dicipta" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Ditambah" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Tag" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Pengirim" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Jenis Dokumen" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Nota" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Pemilik" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Dikongsi" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "tajuk mengandungi" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "ditambah sebelum" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "ditambah selepas" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "diubah sebelum" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "diubah selepas" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "tidak mempunyai tag" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "tidak mempunyai ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "tajuk atau kandungan mengandungi" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN lebih besar daripada" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN kurang daripada" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "mempunyai pengirim dalam" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "tidak mempunyai pengirim dalam" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "mempunyai jenis dokumen dalam" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "tidak mempunyai jenis dokumen dalam" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "tidak mempunyai pemilik" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "mempunyai nilai medan tersuai" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "dikongsi oleh saya" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "mempunyai medan tersuai" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "mempunyai medan tersuai dalam" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "mempunyai medan tersuai dalam" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "mempunyai medan tersuai" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "jenis syarat" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "nilai" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "syarat tapisan" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "syarat tapisan" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID Tugasan" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Diakui" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Nota untuk dokumen" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "pengguna" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "nota" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "nota" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arkib" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Asal" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "tamat tempoh" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "kongsi pautan" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "kongsi pautan" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Tarikh" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Boolean" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Nombor bulat" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Pilih" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "jenis data" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "data tambahan" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "" -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "" @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "" diff --git a/src/locale/nl_NL/LC_MESSAGES/django.po b/src/locale/nl_NL/LC_MESSAGES/django.po index b22d6a4d0..cc8dd47c8 100644 --- a/src/locale/nl_NL/LC_MESSAGES/django.po +++ b/src/locale/nl_NL/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-13 12:13\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -21,1186 +21,1235 @@ msgstr "" msgid "Documents" msgstr "Documenten" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Waarde moet een geldige JSON zijn." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." -msgstr "" +msgstr "{name!r} is geen geldig aangepast veld." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" -msgstr "" +msgstr "Aangepast veld niet gevonden" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "eigenaar" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Geen" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Elk woord" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Alle woorden" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Exacte overeenkomst" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Reguliere expressie" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Gelijkaardig woord" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatisch" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "naam" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "Overeenkomst" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "Algoritme voor het bepalen van de overeenkomst" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "is niet hoofdlettergevoelig" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "correspondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "correspondenten" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "Kleur" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "is \"Postvak in\"-label" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Markeert dit label als een \"Postvak in\"-label: alle nieuw verwerkte documenten krijgen de \"Postvak in\"-labels." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "label" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "labels" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "documenttype" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "documenttypen" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "pad" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "opslag pad" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "opslag paden" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Niet versleuteld" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Versleuteld met GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "titel" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "inhoud" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "De onbewerkte gegevens van het document. Dit veld wordt voornamelijk gebruikt om te zoeken." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mimetype" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "checksum" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "De checksum van het oorspronkelijke document." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "archief checksum" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "De checksum van het gearchiveerde document." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "aantal pagina's" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Het aantal pagina's van het document." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "aangemaakt" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "gewijzigd" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "type opslag" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "toegevoegd" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "bestandsnaam" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Huidige bestandsnaam in opslag" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "Bestandsnaam in archief" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Huidige bestandsnaam in archief" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "oorspronkelijke bestandsnaam" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "De oorspronkelijke naam van het bestand toen het werd geüpload" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "serienummer in archief" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "De positie van dit document in je fysieke documentenarchief." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "document" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "documenten" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabel" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Kleine kaarten" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Grote kaarten" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Titel" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Aangemaakt" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Toegevoegd" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Labels" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Correspondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Document type" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Opslaglocatie" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Notitie" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Eigenaar" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Gedeeld" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Pagina's" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "weergeven op dashboard" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "weergeven in zijbalk" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "sorteerveld" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "omgekeerd sorteren" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Bekijk pagina grootte" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Weergave modus weergeven" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "opgeslagen weergave" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "opgeslagen weergaven" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "titel bevat" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "inhoud bevat" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN is" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "correspondent is" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "documenttype is" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "zit in \"Postvak in\"" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "heeft label" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "heeft één van de labels" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "aangemaakt voor" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "aangemaakt na" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "aangemaakt jaar is" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "aangemaakte maand is" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "aangemaakte dag is" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "toegevoegd voor" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "toegevoegd na" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "gewijzigd voor" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "gewijzigd na" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "heeft geen label" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "heeft geen ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "titel of inhoud bevat" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "inhoud doorzoeken" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "meer zoals dit" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "heeft labels in" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN groter dan" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN kleiner dan" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "opslagpad is" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "heeft corrrespondent in" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "heeft geen correspondent in" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "heeft documenttype in" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "heeft geen documentttype in" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "heeft opslagpad in" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "heeft geen opslagpad in" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "eigenaar is" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "heeft eigenaar in" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "heeft geen eigenaar" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "heeft geen eigenaar in" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "heeft waarde van aangepast veld" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "is gedeeld door mij" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" -msgstr "" +msgstr "heeft aangepaste velden" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" -msgstr "" +msgstr "heeft aangepaste velden in" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" -msgstr "" +msgstr "heeft geen aangepaste velden in" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" -msgstr "" +msgstr "heeft geen aangepaste velden" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" -msgstr "" +msgstr "aangepaste velden zoekopdracht" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "type regel" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "waarde" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "filterregel" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "filterregels" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" -msgstr "" +msgstr "Automatisch taak" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" -msgstr "" +msgstr "Geplande taak" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" -msgstr "" +msgstr "Handmatige taak" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Taak ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID voor de taak die werd uitgevoerd" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Bevestigd" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Of de taak is bevestigd via de frontend of de API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Bestandsnaam taak" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Naam van het bestand waarvoor de taak werd uitgevoerd" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Taaknaam" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" -msgstr "" +msgstr "Naam van de taak die uitgevoerd is" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Taakstatus" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Huidige status van de taak die wordt uitgevoerd" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Aangemaakt DateTime" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Datetime veld wanneer het resultaat van de taak werd aangemaakt in UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Gestart DateTime" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Datetime veld wanneer de taak werd gestart in UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Voltooid datum/tijd" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Datum/tijd veld wanneer de taak werd voltooid in UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Resultaatgegevens" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Gegevens geretourneerd door de taak" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" -msgstr "" +msgstr "Taak type" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" -msgstr "" +msgstr "Het type taak dat uitgevoerd is" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Notitie bij het document" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "gebruiker" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "notitie" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notities" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Archief" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Origineel" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "vervaldatum" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "gedeelde link" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "gedeelde links" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Tekenreeks" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Datum" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Boolean" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Geheel getal" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Zwevendekommagetal" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monetair" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Documentkoppeling" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Lange tekst" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "gegevenstype" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" -msgstr "" +msgstr "extra data" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "aangepaste velden" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "aangepaste velden" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "aangepast veld instantie" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "aangepast veld instanties" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Verwerking gestart" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Document toegevoegd" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Document bijgewerkt" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" -msgstr "" +msgstr "Gepland" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Inname locatie" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "API upload" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "E-mails ophalen" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" -msgstr "" +msgstr "Web interface" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" -msgstr "" +msgstr "Gewijzigd" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" -msgstr "" +msgstr "Aangepast veld" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Workflow trigger type" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filter op opslaglocatie" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Alleen documenten verwerken die overeenkomen met dit pad. Wildcards met * zijn toegstaan. Niet hoofdlettergevoelig." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filter op bestandsnaam" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Alleen documenten verwerken die volledig overeenkomen, indien aangegeven. Je kunt jokertekens gebruiken, zoals *.pdf of *factuur*. Dit is niet hoofdlettergevoelig." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filter op documenten van deze e-mailregel" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "heeft deze label(s)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "heeft dit documenttype" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "heeft deze correspondent" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "workflow trigger" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "workflow triggers" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "e-mail inhoud" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "workflow trigger" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "workflow triggers" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "email onderwerp" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "e-mail inhoud" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "voeg document toe aan email" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Toewijzing" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-mailadres" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Actietype workflow" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "titel toewijzen" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "wijs dit label toe" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "wijs dit documenttype toe" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "wijs deze correspondent toe" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "wijs dit opslagpad toe" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "wijs deze eigenaar toe" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "geef deze gebruikers weergaverechten" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "geef deze groepen weergaverechten" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "geef deze gebruikers bewerkingsrechten" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "geef deze groepen bewerkingsrechten" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "deze aangepaste velden toewijzen" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" -msgstr "" +msgstr "waarden van aangepast veld" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." -msgstr "" +msgstr "Optionele waarden om in aangepaste velden te gebruiken." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" -msgstr "" +msgstr "verwijder deze document type(n)" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" -msgstr "" +msgstr "verwijder alle document typen" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" -msgstr "" +msgstr "verwijder deze eigenaar(s)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" -msgstr "" +msgstr "verwijder deze aangepaste velden" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" -msgstr "" +msgstr "verwijder alle aangepaste velden" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" -msgstr "" +msgstr "email" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "worflow actie" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "workflow acties" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "volgorde" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "triggers" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "acties" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "ingeschakeld" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Ongeldige reguliere expressie: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Ongeldig kleur." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Bestandstype %(type)s niet ondersteund" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Aangepast veld met id %(id)s bestaat niet" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Aangepaste velden moeten een lijst van numerieke waarden zijn of een object mapping id naar waarden." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Sommige aangepaste velden bestaan niet of zijn dubbel opgegeven." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Ongeldige variabele ontdekt." #: documents/templates/account/account_inactive.html:5 msgid "Paperless-ngx account inactive" -msgstr "" +msgstr "Paperless-ngx account inactief" #: documents/templates/account/account_inactive.html:9 msgid "Account inactive." -msgstr "" +msgstr "Account inactief." #: documents/templates/account/account_inactive.html:14 msgid "This account is inactive." -msgstr "" +msgstr "Dit account is inactief." #: documents/templates/account/account_inactive.html:16 msgid "Return to login" @@ -1374,7 +1423,7 @@ msgstr "" #: documents/templates/mfa/authenticate.html:24 msgid "Cancel" -msgstr "" +msgstr "Annuleren" #: documents/templates/paperless-ngx/base.html:58 msgid "Share link was not found." @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "paperless applicatie instellingen" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Engels (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabisch" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikaans" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Wit-Russisch" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bulgaars" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Catalaans" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tsjechisch" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Deens" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Duits" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grieks" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Engels (Brits)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spaans" -#: paperless/settings.py:784 -msgid "Persian" -msgstr "" - #: paperless/settings.py:785 +msgid "Persian" +msgstr "Perzisch" + +#: paperless/settings.py:786 msgid "Finnish" msgstr "Fins" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Frans" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Hongaars" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italiaans" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japans" -#: paperless/settings.py:790 -msgid "Korean" -msgstr "" - #: paperless/settings.py:791 +msgid "Korean" +msgstr "Koreaans" + +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburgs" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Noors" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Nederlands" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Pools" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugees (Brazilië)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugees" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Roemeens" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russisch" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slowaaks" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Sloveens" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Servisch" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Zweeds" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turks" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Oekraïens" -#: paperless/settings.py:805 -msgid "Vietnamese" -msgstr "" - #: paperless/settings.py:806 +msgid "Vietnamese" +msgstr "Vietnamees" + +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Chinees (vereenvoudigd)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx administratie" diff --git a/src/locale/no_NO/LC_MESSAGES/django.po b/src/locale/no_NO/LC_MESSAGES/django.po index 11f48ca9a..67de2f7da 100644 --- a/src/locale/no_NO/LC_MESSAGES/django.po +++ b/src/locale/no_NO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumenter" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Verdien må være en gyldig JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Egendefinert felt ble ikke funnet" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "eier" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Ingen" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Hvilket som helst ord" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Alle ord" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Eksakt match" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regulære uttrykk" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatisk" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "navn" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "treff" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "samsvarende algoritme" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "er insensitiv" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korrespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korrespondenter" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "farge" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "er innboks tag" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Markerer dette merket som en innboks-tag: Alle nybrukte dokumenter vil bli merket med innboks-tagger." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "tagg" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "tagger" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "dokument type" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "dokumenttyper" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "sti" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "lagringssti" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "lagringsveier" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Ukryptert" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Kryptert med GNU Personvernvakt" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "tittel" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "innhold" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Raw, tekstbare data fra dokumentet. Dette feltet brukes primært for søking." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime type" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "sjekksum" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Sjekksummen av det opprinnelige dokumentet." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arkiv sjekksum" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Sjekksummen av det arkiverte dokumentet." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "antall sider" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Antall sider i dokumentet." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "opprettet" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "endret" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "lagringstype" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "lagt til" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "filnavn" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Gjeldende filnavn i lagring" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "arkiver filnavn" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Gjeldende arkiv filnavn i lagring" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "opprinnelig filnavn" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Filens opprinnelige filnavn ved opplasting" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "arkiver serienummer" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Dokumentets posisjon i ditt fysiske dokumentarkiv." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumenter" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabell" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Små kort" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Store kort" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Tittel" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Opprettet" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Lagt til" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Etiketter" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korrespondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Dokumenttype" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Lagringssti" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Notat" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Eier" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Delt" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Sider" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "vis på dashbordet" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "vis i sidestolpen" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "sorter felt" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "sorter på baksiden" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Vis sidestørrelse" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Vis visningsmodus" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Dokument visning felt" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "lagret visning" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "lagrede visninger" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "tittelen inneholder" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "innholdet inneholder" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN er" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "tilsvarendet er" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "dokumenttype er" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "er i innboksen" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "har tagg" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "har en tag" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "opprettet før" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "opprettet etter" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "opprettet år er" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "opprettet måned er" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "opprettet dag er" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "lagt til før" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "lagt til etter" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "endret før" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "endret etter" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "har ikke tagg" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "har ikke ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "tittel eller innhold inneholder" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "full tekst spørring" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "mer som dette" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "har tags i" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN større enn" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN mindre enn" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "lagringssti er" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "har korrespondent i" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "har ingen korrespondent i" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "har dokumenttype i" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "har ikke dokumenttype i" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "har lagringssti i" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "har ikke lagringssti i" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "eier er" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "har eier i" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "har ikke eier" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "har ikke eier i" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "har egendefinert feltverdi" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "er delt av meg" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "har egendefinerte felt" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "har egendefinert felt i" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "har ikke egendefinert felt i" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "har ikke egendefinert felt" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "egendefinerte felt spørring" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "Type regel" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "verdi" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "filtrer regel" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "filtrer regler" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Automatisk oppgave" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Planlagt oppgave" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Manuell oppgave" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "index optimalisering" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Oppgave ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID for oppgaven som ble kjørt" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Bekreftet" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Hvis oppgaven bekreftes via frontend eller API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Filnavn for oppgave" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Navn på filen som oppgaven ble kjørt for" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Oppgavenavn" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Navn på oppgaven som ble kjørt" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Oppgave tilstand" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Status for oppgaven som kjører" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Opprettet DatoTid" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Tidsstempel for når oppgaven ble opprettet i UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Startet DatoTid" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Tidsstempel for når oppgaven ble startet i UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Fullført tidsstempel" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Tidsstempel for når oppgaven ble fullført i UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Resultat data" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Dataene returnert av oppgaven" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Oppgave type" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Type oppgave som ble utført" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Merknad til dokumentet" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "bruker" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "merknad" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "merknader" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arkiv" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Original" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "utløp" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "del kobling" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "del linker" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Tekst" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Dato" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Dokument lenke" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Velg" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "data type" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "egendefinert felt" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "egendefinerte felt" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "egendefinert felt instans" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "egendefinert felt instanser" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokument lagt til" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokument oppdatert" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Planlagt" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "API-opplasting" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Epost-henting" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Web UI" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Endret" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Egendefinerte felt" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Arbeidsflyt utløser-type" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtrer sti" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Bare last inn dokumenter med en sti som samsvarer med dette hvis angitt. Jokertegn angitt som * er tillatt. Saker er usensitive." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtrer filnavn" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Bare bruke dokumenter som samsvarer med dette filnavnet hvis angitt. Jokertegn som *.pdf eller *faktura* er tillatt. Saksfortegnet." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtrere dokumenter fra denne epostregelen" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "har disse etikett(ene)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "har denne dokumenttypen" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "har denne korrespondenten" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "arbeidsflyt utløser" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "e-post emne" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "epost innhold" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "arbeidsflyt utløser" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "e-post emne" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "epost innhold" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-post" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "tildel tittel" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "tilordne denne taggen" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "tilordne denne dokumenttypen" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "Tildel denne korrespondenten" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "tilordne denne lagringsstien" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "tilordne denne eieren" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "gir lesetilgang til disse brukerne" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "gi lesetilgang til disse brukerne" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "gir skrivetilgang til disse brukerne" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "gi skrivetilgang til disse gruppene" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "ordre" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Ugyldig regulært uttrykk: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Ugyldig farge." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Filtype %(type)s støttes ikke" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Ugyldig variabel oppdaget." @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Engelsk (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabisk" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikansk" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Hviterussisk" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalansk" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tsjekkisk" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dansk" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Tysk" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Gresk" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Engelsk (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spansk" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finsk" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Fransk" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italiensk" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxembourgsk" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norsk" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Nederlandsk" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polsk" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugisisk (Brasil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugisisk" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumensk" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russisk" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovakisk" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovenian" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbisk" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Svensk" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Tyrkisk" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukrainsk" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Kinesisk forenklet" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx-administrasjon" diff --git a/src/locale/pl_PL/LC_MESSAGES/django.po b/src/locale/pl_PL/LC_MESSAGES/django.po index 5fe94fa81..6bb00b093 100644 --- a/src/locale/pl_PL/LC_MESSAGES/django.po +++ b/src/locale/pl_PL/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumenty" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Wartość musi być prawidłowym JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Nieprawidłowe wyrażenie zapytania pola niestandardowego" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Nieprawidłowa lista wyrażeń. Nie może być pusta." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Nieprawidłowy operator logiczny {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Maksymalna liczba warunków zapytania została przekroczona." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} nie jest prawidłowym polem niestandardowym." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} nie obsługuje wyrażenia zapytania {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Przekroczono maksymalną głębokość zagnieżdżenia." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Nie znaleziono pola niestandardowego" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "właściciel" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Brak" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Dowolne słowo" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Wszystkie słowa" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Dokładne dopasowanie" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Wyrażenie regularne" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Słowo rozmyte" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatyczny" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nazwa" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "dopasowanie" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algorytm dopasowania" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "bez rozróżniania wielkości znaków" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korespondenci" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "kolor" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "jest tagiem skrzynki odbiorczej" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Zaznacza ten tag jako tag skrzynki odbiorczej: Wszystkie nowo przetworzone dokumenty będą oznaczone tagami skrzynki odbiorczej." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "znacznik" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "tagi" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Nie można ustawić siebie jako nadrzędnego." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Nie można ustawić nadrzędnego jako potomnego." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "typ dokumentu" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "typy dokumentów" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "ścieżka" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" -msgstr "ścieżka zapisu" +msgstr "Ścieżka zapisu" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" -msgstr "ścieżki zapisu" +msgstr "Ścieżki zapisu" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Niezaszyfrowane" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Zaszyfrowane przy użyciu GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "tytuł" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "zawartość" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Surowe, tekstowe dane dokumentu. To pole jest używane głównie do wyszukiwania." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime type" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "suma kontrolna" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Suma kontrolna oryginalnego dokumentu." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "suma kontrolna archiwum" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Suma kontrolna zarchiwizowanego dokumentu." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" -msgstr "liczba stron" +msgstr "Liczba stron" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Ilość stron dokumentu." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "utworzono" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "zmodyfikowano" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "typ przechowywania" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "dodano" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nazwa pliku" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Aktualna nazwa pliku w pamięci" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "nazwa pliku archiwum" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Aktualna nazwa pliku archiwum w pamięci" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" -msgstr "oryginalna nazwa pliku" +msgstr "Oryginalna nazwa pliku" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Oryginalna nazwa pliku w momencie jego przesyłania" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "numer seryjny archiwum" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Pozycja tego dokumentu w archiwum dokumentów fizycznych." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumenty" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabela" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Małe karty" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Duże karty" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Tytuł" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Utworzono" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Dodano" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Tagi" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korespondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Typ dokumentu" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Ścieżka zapisu" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Notatka" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Właściciel" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Współdzielony" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Strony" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "pokaż na stronie głównej" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "pokaż na pasku bocznym" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "pole sortowania" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "sortuj malejąco" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Pokaż rozmiar strony" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Pokaż tryb wyświetlania" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Wyświetlane pola dokumentu" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "zapisany widok" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "zapisane widoki" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "tytuł zawiera" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "zawartość zawiera" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "numer archiwum jest" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "korespondentem jest" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "typ dokumentu jest" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "jest w skrzynce odbiorczej" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "ma tag" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "ma dowolny tag" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "utworzony przed" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "utworzony po" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "rok utworzenia to" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "miesiąc utworzenia to" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "dzień utworzenia to" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "dodany przed" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "dodany po" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "zmodyfikowany przed" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "zmodyfikowany po" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "nie ma tagu" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "nie ma numeru archiwum" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "tytuł lub zawartość zawiera" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "zapytanie pełnotekstowe" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "więcej takich" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "ma znaczniki w" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN większy niż" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN mniejszy niż" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "ścieżką zapisu jest" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "ma korespondenta w" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "nie ma korespondenta w" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "ma typ dokumentu w" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "nie ma typu dokumentu w" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "ma ścieżkę zapisu w" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "nie ma ścieżki zapisu w" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "właściciel to" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "ma właściciela w" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "nie ma właściciela" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "nie ma właściciela w" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "ma wartość pola dodatkowego" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "jest udostępniony przeze mnie" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "posiada pola dodatkowe" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "ma dodatkowe pole w" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "nie ma dodatkowego pola w" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "nie ma pola dodatkowego" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "zapytanie o niestandardowe pola" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "utworzono w" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "utworzono z" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "dodano do" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "dodano z" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "typ MIME to" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "typ reguły" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "wartość" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "reguła filtrowania" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "reguły filtrowania" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Zadanie automatyczne" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Zaplanowane zadanie" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Zadanie ręczne" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Przetwórz plik" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Wytrenuj klasyfikator" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Sprawdź poprawność" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Optymalizuj indeks" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID zadania" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "ID Celery dla zadania, które zostało uruchomione" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Potwierdzono" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Jeśli zadanie zostanie potwierdzone za pomocą interfejsu webowego lub API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Nazwa Pliku Zadania" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Nazwa pliku, dla którego zostało uruchomione zadanie" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Nazwa zadania" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Nazwa uruchomionego zadania" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Stan zadania" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Aktualny stan zadania" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Data i czas utworzenia" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Pole daty i czasu, gdy wynik zadania został utworzony w czasie UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Data i czas rozpoczęcia" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Pole daty i czasu, gdy zadanie rozpoczęto w czasie UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Data i czas zakończenia" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Pole daty i czasu, gdy zadanie zakończono w UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Dane wynikowe" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Dane zwrócone przez zadanie" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Typ zadania" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Typ uruchomionego zadania" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Notatka dla dokumentu" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "użytkownik" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "notatka" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notatki" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Archiwum" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Oryginał" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "wygaśnięcie" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "adres URL" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "udostępnij link" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "udostępnij linki" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Ciąg znaków" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "Adres URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Data" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Wartość logiczna" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Liczba całkowita" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Liczba rzeczywista" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Format księgowy" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Link do dokumentu" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Lista" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Pełny tekst" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "typ danych" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "dane dodatkowe" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Dodatkowe dane dla pola niestandardowego, takie jak opcje wyboru" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "pole dodatkowe" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "pola dodatkowe" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "przypisane pole dodatkowe" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "przypisanych pól dodatkowych" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Rozpoczęto pobieranie" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dodano dokument" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokument zaktualizowano" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Zaplanowane" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Folder pobierania" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Przesyłanie przez API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Pobieranie E-mail" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Interfejs webowy" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Zmodyfikowano" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Pole dodatkowe" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Typ wyzwalacza dla procesu" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtruj ścieżkę" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Pobiera tylko dokumenty ze ścieżką, która pasuje do wyspecyfikowanej. Symbol * jest dozwolony. Wielkość liter bez znaczenia." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtruj po nazwie pliku" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Przetwarzaj tylko dokumenty, które całkowicie pasują do tej nazwy pliku, jeśli jest podana. Wzorce dopasowania jak *.pdf lub *faktura* są dozwolone. Wielkość liter nie jest rozróżniana." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtruj dokumenty z tej reguły pocztowej" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "posiada wskazane tag(i)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "Zawiera wszystkie podane tagi" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "Nie zawiera żadnego z podanych tagów" + +#: documents/models.py:1087 msgid "has this document type" msgstr "posiada wskazany typ dokumentu" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "Nie posiada typów dokumentów" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "posiada wskazanego nadawcę" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "nie posiada korespondenta(-ów)" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "ma tę ścieżkę zapisu" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "nie ma tej ścieżki/ścieżek zapisu" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "filtruj zapytanie pola niestandardowego" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "Niestandardowe wyrażenie zapytania pola zakodowane w formacie JSON." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "liczba dni przesunięcia harmonogramu" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Liczba dni, o którą należy przesunąć wyzwalacz harmonogramu." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "harmonogram jest cykliczny" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Czy harmonogram ma być cykliczny." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "opóźnienie cyklicznego harmonogramu w dniach" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Liczba dni między kolejnymi wyzwalaczami cyklicznego harmonogramu." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "pole daty harmonogramu" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Pole do sprawdzenia pod kątem wyzwalacza harmonogramu." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "wyzwalacz procesu" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "wyzwalacze procesu" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "temat wiadomości e-mail" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Temat wiadomości e-mail, może zawierać znaczniki zastępcze; zobacz dokumentację." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "treść e-maila" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Treść (wiadomość) e-maila, może zawierać znaczniki zastępcze; zobacz dokumentację." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "adresaci e-maila" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Docelowe adresy e-mail oddzielone przecinkami." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "dołącz dokument do e-maila" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "adres URL webhooka" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "Docelowy adres URL powiadomienia." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "użyj parametrów" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "wyślij jako JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "parametry webhooka" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Parametry wysyłane z adresem URL webhooka, gdy treść nie jest używana." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "treść webhooka" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Treść wysyłana z adresem URL webhooka, gdy parametry nie są używane." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "nagłówki webhooka" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Nagłówki wysyłane z adresem URL webhooka." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "dołącz dokument w webhooku" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Przypisanie" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Usuwanie" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Adres e-mail" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Typ akcji w procesie" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "przypisz tytuł" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Przypisz tytuł dokumentu, musi być szablonem Jinja2, zobacz dokumentację." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "przypisz ten tag" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "przypisz ten typ dokumentu" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "przypisz tego korespondenta" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "przypisz tą ścieżkę zapisu" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "przypisz tego właściciela" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "nadaj tym użytkownikom uprawnienia do przeglądania" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "nadaj tym grupom uprawnienia do przeglądania" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "nadaj tym użytkownikom uprawnienia do zmiany" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "nadaj tym grupom uprawnienia do zmiany" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "przypisz te pola dodatkowe" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "wartości pól niestandardowych" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Opcjonalne wartości do przypisania polom niestandardowym." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "usuń ten tag/te tagi" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "usuń wszystkie tagi" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "usuń te typy dokumentów" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "usuń wszystkie typy dokumentów" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "usuń tych korespondentów" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "usuń wszystkich korespondentów" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "usuń te ścieżki zapisu" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "usuń wszystkie ścieżki zapisu" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "usuń tych właścicieli" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "usuń wszystkich właścicieli" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "usuń uprawnienia do wyświetlania dla tych użytkowników" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "usuń uprawnienia do wyświetlania dla tych grup" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "usuń uprawnienia do zmiany dla tych użytkowników" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "usuń uprawnienia do zmiany dla tych grup" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "usuń wszystkie uprawnienia" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "usuń te pola dodatkowe" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "usuń wszystkie pola dodatkowe" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "adres e-mail" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "akcja procesu" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "akcje procesu" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "kolejność" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "wyzwalacze" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "akcje" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "włączony" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "procesy" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "typ wyzwalacza przepływu pracy" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "data uruchomienia" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "uruchomienie przepływu pracy" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "uruchomienia przepływu pracy" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Nieprawidłowe wyrażenie regularne: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Nieprawidłowy kolor." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Typ pliku %(type)s nie jest obsługiwany" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "Identyfikator pola niestandardowego musi być liczbą całkowitą: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Pole niestandardowe z id %(id)s nie istnieje" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Pola niestandardowe muszą być listą liczb całkowitych lub obiektem mapującym identyfikatory na wartości." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Niektóre niestandardowe pola nie istnieją lub zostały określone dwukrotnie." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Wykryto nieprawidłową zmienną." @@ -1419,21 +1468,21 @@ msgstr "Na koniec należy wypełnić poniższy formularz:" #: documents/validators.py:24 #, python-brace-format msgid "Unable to parse URI {value}, missing scheme" -msgstr "" +msgstr "Nie można przeanalizować URI {value}, brak schematu" #: documents/validators.py:29 #, python-brace-format msgid "Unable to parse URI {value}, missing net location or path" -msgstr "" +msgstr "Nie można przeanalizować URI {value}, brak lokalizacji sieciowej lub ścieżki" #: documents/validators.py:36 msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}" -msgstr "" +msgstr "Schemat URI '{parts.scheme}' jest niedozwolony. Dozwolone schematy: {', '.join(allowed_schemes)}" #: documents/validators.py:45 #, python-brace-format msgid "Unable to parse URI {value}" -msgstr "" +msgstr "Nie można przetworzyć URI {value}" #: paperless/apps.py:11 msgid "Paperless" @@ -1627,151 +1676,151 @@ msgstr "Ustawia mapowanie kodu kreskowego tagu" msgid "paperless application settings" msgstr "paperless ustawienia aplikacji" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Angielski (USA)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "arabski" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrykanerski" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Białoruski" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bułgarski" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Kataloński" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Czeski" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Duński" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Niemiecki" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grecki" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Angielski (Wielka Brytania)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Hiszpański" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "perski" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Fiński" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francuski" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Węgierski" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Włoski" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japoński" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Koreański" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luksemburski" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norweski" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Holenderski" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polski" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugalski (Brazylia)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugalski" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumuński" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Rosyjski" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Słowacki" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Słoweński" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbski" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Szwedzki" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turecki" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukraiński" -#: paperless/settings.py:805 -msgid "Vietnamese" -msgstr "" - #: paperless/settings.py:806 +msgid "Vietnamese" +msgstr "Wietnamski" + +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Chiński uproszczony" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "chiński tradycyjny" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administracja Paperless-ngx" diff --git a/src/locale/pt_BR/LC_MESSAGES/django.po b/src/locale/pt_BR/LC_MESSAGES/django.po index 8dcdca3ab..acc9c2f77 100644 --- a/src/locale/pt_BR/LC_MESSAGES/django.po +++ b/src/locale/pt_BR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -21,1173 +21,1222 @@ msgstr "" msgid "Documents" msgstr "Documentos" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "O valor deve ser um JSON válido." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Expressão de consulta de campo personalizado inválida" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Lista de expressões inválida. Deve estar não vazia." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Operador lógico inválido {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Número máximo de condições de consulta excedido." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} não é um campo personalizado válido." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." -msgstr "{data_type} não suporta a consulta expr {expr!r}." +msgstr "{data_type} Não suporta a consulta expr {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Profundidade máxima do aninhamento excedida." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Campo personalizado não encontrado" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "proprietário" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Nenhum" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Qualquer palavra" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Todas as palavras" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Correspondência exata" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Expressão regular" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Palavra difusa" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automático" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nome" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "correspondência" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritmo de correspondência" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "diferencia maiúsculas de minúsculas" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "correspondente" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "correspondentes" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "cor" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "é etiqueta caixa de entrada" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Marca essa etiqueta como caixa de entrada: Todos os novos documentos consumidos terão as etiquetas de caixa de entrada." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etiqueta" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etiquetas" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Não é possível definir a si mesmo como pasta pai." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Não é possível definir uma subpasta como pasta pai." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "tipo de documento" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "tipos de documento" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "caminho" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "caminho de armazenamento" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "caminhos de armazenamento" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Não encriptado" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Encriptado com GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "título" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "conteúdo" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "O conteúdo de texto bruto do documento. Esse campo é usado principalmente para busca." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "tipo mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "soma de verificação" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "A soma de verificação original do documento." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "Soma de verificação de arquivamento." -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "A soma de verificação do documento arquivado." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "número de páginas" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "O número de páginas do documento." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "criado" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "modificado" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tipo de armazenamento" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "adicionado" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nome do arquivo" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Nome do arquivo atual armazenado" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "nome do arquivo para arquivamento" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Nome do arquivo para arquivamento armazenado" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "nome do arquivo original" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "O nome original do arquivo quando ele foi carregado" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "número de sério de arquivamento" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "A posição deste documento no seu arquivamento físico." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "documento" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "documentos" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Mesa" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Cartões pequenos" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Cartões grandes" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Título" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Criado" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Adicionado" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Etiquetas" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Correspondente" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Tipo de documento" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Caminho de armazenamento" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Nota" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Proprietário" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Compartilhado" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Páginas" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "exibir no painel de controle" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "exibir no painel lateral" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "ordenar campo" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "odernar reverso" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Ver tamanho da página" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Ver modo de exibição" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Campos de exibição documento" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "visualização" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "visualizações" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "título contém" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "conteúdo contém" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "NSA é" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "correspondente é" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "tipo de documento é" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "é caixa de entrada" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "contém etiqueta" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "contém qualquer etiqueta" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "criado antes de" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "criado depois de" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "ano de criação é" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "mês de criação é" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "dia de criação é" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "adicionado antes de" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "adicionado depois de" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "modificado antes de" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "modificado depois de" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "não tem etiqueta" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "não tem NSA" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "título ou conteúdo contém" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "pesquisa de texto completo" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" -msgstr "Mais como este" +msgstr "mais como este" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "contém etiquetas em" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "NSA maior que" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "NSA menor que" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "caminho de armazenamento é" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "tem correspondente em" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "não tem correspondente em" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "Possui categoria de documento em" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "Não possui categoria de documento em" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "Possui caminho de armazenamento em" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "Não possui caminho de armazenamento em" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "O proprietário é" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "Tem proprietário em" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "Não tem proprietário" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "Não tem proprietário em" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "Possui valor de campo personalizado " -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "Compartilhado por mim" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "Possui campos personalizados " -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "Possui campo personalizado dentro " -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "Não possui campo personalizado dentro " -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "Não possui campo personalizado " -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "Consulta de campos personalizados" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "Criado em" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "Criado por" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "Adicionado em" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "Adicionado por" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "Yipo MIME é" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "tipo de regra" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "valor" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "regra de filtragem" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "regras de filtragem" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Tarefa Automática" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Tarefa Programada" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Tarefa Manual" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Usar Arquivo" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Treinar Classificador" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Verificar Sanidade" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Otimizar Índice" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID da tarefa" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "ID da Celery para a tarefa que foi executada" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Confirmado" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Se a tarefa é reconhecida através do frontend ou API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Nome do arquivo da tarefa" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Nome do arquivo para o qual a tarefa foi executada" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Nome da tarefa" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Nome da tarefa que foi executada" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Estado da tarefa" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Estado atual da tarefa sendo executada" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Data/Hora de criação" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Campo Data/Hora quando o resultado da tarefa foi criado, em UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Data/Hora de início" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Campo Data/Hora quando a tarefa começou, em UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Data/Hora de conclusão" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Campo Data/Hora quando a tarefa foi concluída, em UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Dados de Resultado" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Os dados retornados pela tarefa" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Tipo de Tarefa" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "O tipo de tarefa que foi executada" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Nota para o documento" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "usuário" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "nota" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notas" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arquivo" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Original" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "validade" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "compartilhar link" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "compartilhar link" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Texto" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Data" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Booleano" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Número inteiro" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Ponto flutuante" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Unidade monetária" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Link do documento" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Selecione" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Texto longo" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "tipo de dados" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "Dados extras" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Dados extras para o campo personalizado, como opções de seleção" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "campo personalizado" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "campos personalizados" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "instância de campo personalizado" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "instâncias de campo personalizadas" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Consumo Iniciado" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Documento Adicionado" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Documento Atualizado" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Agendado" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Pasta de Consumo" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Envio por API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Busca em e-mail" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Web UI" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Modificado" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Campo personalizado" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Tipo de gatilho de fluxo de trabalho" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtro de caminho" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Apenas utilize documentos que correspondem a esse endereço se especificado. Carácteres coringa usando * são permitidos. Sem diferenciação de maiúsculas e minúsculas." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "Filtro de nome de arquivo" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Consumir somente documentos que correspondem a este nome de arquivo se especificado.\n" "Curingas como *.pdf ou *invoice* são permitidos. Sem diferenciação de maiúsculas e minúsculas." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "Filtrar documentos desta regra de endereço eletrônico" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "Possui estas etiquetas" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "possui toda(s) esta(s) etiqueta(s)" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "não possui esta(s) etiqueta(s)" + +#: documents/models.py:1087 msgid "has this document type" msgstr "Possui este tipo de documento" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "não possui este(s) tipo(s) de documento" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "Possui este correspondente" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "não possui este(s) correspondente(s)" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "possui este caminho de armazenamento" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "não possui este(s) caminho(s) de armazenamento" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "Filtrar consulta de campo personalizado" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "Expressão de consulta de campo personalizado codificada em JSON." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "agendar dias de deslocamento" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Número de dias para deslocar o gatilho do cronograma." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "agenda é recorrente" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Se o cronograma deve ser recorrente." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "agendar atraso recorrente em dias" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "O número de dias entre programas recorrentes." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "programar campo data" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "O campo para verificar se há um acionador agendado." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "programar campo data customizado" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "Gatilho do Fluxo de Trabalho" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "Gatilhos de Fluxo de Trabalho" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "assunto do email" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Atribuir um título de documento, pode incluir alguns espaços reservados, consulta a documentação." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "corpo do e-mail" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "O corpo do email, pode incluir alguns espaços reservados, consulta a documentação." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "e-mails para" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Os endereços de e-mail de destino, separados por vírgula." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "incluir documento no e-mail" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "url do gancho web" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "A URL de destino para a notificação." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "utilizar parâmetros" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "enviar como JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "parâmetros do gancho web" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Os parâmetros a enviar com a URL do webhook se o corpo não for usado." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "corpo do webhook" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "O corpo a ser enviado com a URL do webhook se os parâmetros não usados." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "cabeçalhos de webhook" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Os cabeçalhos a serem enviados com a URL do webhook." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "incluir documento no e-mail" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Atribuição" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Remover" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-mail" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Ação do tipo Fluxo de Trabalho" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "atribuir título" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Informe o título do documento (use um template Jinja2). Veja a documentação." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "atribuir esta etiqueta" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "atribuir este tipo de documento" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "atribuir este correspondente" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "atribuir este caminho de armazenamento" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "atribuir este proprietário" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "Conceder permissões de visualização para esses usuários" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "Conceda permissões de visualização a estes grupos" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "Conceder permissões de mudança a estes usuários" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "Conceder permissões de mudança para esses grupos" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "atribuir estes campos personalizados" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "valores de campo personalizados" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Valores opcionais para atribuir aos campos personalizados." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "Remova essas etiquetas" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "Remova todas as etiquetas" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "Remova estes tipos de documentos" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "Remova todos os tipos de documentos" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "Remova estas correspondências" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "Remover todas as correspondências" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "Remova estes caminhos de armazenamento" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "Remova todos os caminhos de armazenamento" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "Remover este(s) proprietário(s)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "Remover todos os proprietários" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "Remover permissão de visualização para esses usuários" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "Remover permissões de visualização para estes grupos" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "Remover permissões de alteração para esses usuários" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "Remover permissões de alteração para esses grupos" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "Remover todas as permissões" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "Remover esses campos personalizados" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "Remover todos os campos personalizados" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "e-mail" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "Ação de Fluxo de Trabalho" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "Ações de Fluxo de Trabalho" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "ordem" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "gatilhos" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "ações" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "Habilitado" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "fluxo de trabalho" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "tipo de gatilho de fluxo de trabalho" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "corrida de data" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "execução do fluxo de trabalho" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "execução de fluxo de trabalho" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Expressão regular inválida: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Cor inválida." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Tipo de arquivo %(type)s não suportado" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "O ID do campo personalizado deve ser um número inteiro: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Não existe um campo personalizado com o ID %(id)s" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Campos personalizados devem estar em uma lista de números inteiros ou em um objeto que relacione IDs a valores." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Campos personalizados inválidos ou duplicados." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Variável inválida detectada." @@ -1216,7 +1265,7 @@ msgstr "Olá de %(site_name)s!" #, python-format msgid "Thank you for using %(site_name)s!\n" "%(site_domain)s" -msgstr "Obrigado por usar %(site_name)s!\n" +msgstr "Obrigado por usar %(site_name)s!\n" "%(site_domain)s" #: documents/templates/account/login.html:5 @@ -1259,7 +1308,7 @@ msgstr "ou conecte-se com" #: documents/templates/account/password_reset.html:5 msgid "Paperless-ngx reset password request" -msgstr "Redefinição de senha Paperless-ngx" +msgstr "Solicitação de redefinição de senha Paperless-ngx" #: documents/templates/account/password_reset.html:9 msgid "Enter your email address below, and we'll email instructions for setting a new one." @@ -1629,151 +1678,151 @@ msgstr "Define o mapeamento de códigos de barras da tag" msgid "paperless application settings" msgstr "configurações do aplicativo paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Inglês (EUA)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Árabe" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Africanês" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Bielorrusso" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Búlgaro" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Catalão" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tcheco" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dinamarquês" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Alemão" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grego" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Inglês (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Espanhol" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Persa" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finlandês" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francês" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Húngaro" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italiano" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japonês" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Coreano" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburguês" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norueguês" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Holandês" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polonês" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Português (Brasil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Português" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Romeno" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russo" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Eslovaco" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Esloveno" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Sérvio" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Sueco" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turco" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ucraniano" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "vietnamita" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Chinês Simplificado" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Chinês Tradicional" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administração do Paperless-ngx" diff --git a/src/locale/pt_PT/LC_MESSAGES/django.po b/src/locale/pt_PT/LC_MESSAGES/django.po index 01f83c4af..22b32e749 100644 --- a/src/locale/pt_PT/LC_MESSAGES/django.po +++ b/src/locale/pt_PT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -21,1190 +21,1239 @@ msgstr "" msgid "Documents" msgstr "Documentos" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." -msgstr "" +msgstr "O valor deve ser JSON válido." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" -msgstr "" +msgstr "Expressão de consulta de campo personalizado inválido" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." -msgstr "" +msgstr "Lista de expressões inválida. Não deve estar vazia." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Operador lógico inválido {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." -msgstr "" +msgstr "O número máximo de condições de consulta foi excedido." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." -msgstr "" +msgstr "{name!r} não é um campo personalizado válido." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." -msgstr "" +msgstr "{data_type} não aceita a expressão de consulta {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Campo personalizado não encontrado" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "dono" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Nenhum" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Qualquer palavra" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Todas as palavras" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Detecção exata" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Expressão regular" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Palavra difusa" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automático" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nome" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "correspondência" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritmo correspondente" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "é insensível" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "correspondente" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "correspondentes" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "cor" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "é etiqueta de novo" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Marca esta etiqueta como uma etiqueta de entrada. Todos os documentos recentemente consumidos serão etiquetados com a etiqueta de entrada." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etiqueta" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etiquetas" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "tipo de documento" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "tipos de documento" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "caminho" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "local de armazenamento" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "locais de armazenamento" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Não encriptado" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Encriptado com GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "título" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "conteúdo" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Os dados de texto, em cru, do documento. Este campo é utilizado principalmente para pesquisar." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "tipo mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "soma de verificação" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "A soma de verificação do documento original." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arquivar soma de verificação" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "A soma de verificação do documento arquivado." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "número de páginas" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "O número de páginas do documento." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "criado" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "modificado" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tipo de armazenamento" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "adicionado" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nome de ficheiro" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Nome do arquivo atual no armazenamento" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "nome do ficheiro de arquivo" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Nome do arquivo atual em no armazenamento" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "nome do ficheiro original" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "O nome original do arquivo quando foi carregado" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "numero de série de arquivo" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "A posição do documento no seu arquivo físico de documentos." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "documento" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "documentos" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabela" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Cartões Pequenos" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Cartões Grandes" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Título" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Criado" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Adicionado" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Etiquetas" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Correspondente" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Tipo de Documento" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Caminho de armazenamento" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Nota" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Proprietário" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Partilhado" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Páginas" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "exibir no painel de controlo" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "mostrar na navegação lateral" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "ordenar campo" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "ordenar inversamente" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Exibir tamanho da página" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Modo de visualização" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Exibir Campos de Documento" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "vista guardada" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "vistas guardadas" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "o título contém" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "o conteúdo contém" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "O NSA é" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "o correspondente é" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "o tipo de documento é" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "está na entrada" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "tem etiqueta" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "tem qualquer etiqueta" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "criado antes" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "criado depois" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "ano criada é" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "mês criado é" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "dia criado é" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "adicionada antes" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "adicionado depois de" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "modificado antes de" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "modificado depois de" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "não tem etiqueta" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "não possui um NSA" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "título ou conteúdo contém" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "consulta de texto completo" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "mais como este" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "tem etiquetas em" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN maior que" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN menor que" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "local de armazenamento é" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "tem correspondente em" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "não tem correspondente em" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "tem categoria de documento em" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "não tem categoria de documento em" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "tem caminho de armazenamento em" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "não possui caminho de armazenamento em" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "o proprietário é" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "tem proprietário em" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "não tem proprietário" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "não tem proprietário em" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "tem valor de campo personalizado" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "é partilhado por mim" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "personalizado" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "tem um campo personalizado em" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "não tem um campo personalizado" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "não tem um campo personalizado" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" -msgstr "" +msgstr "consulta de campos personalizados" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "criado até" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "criado a partir de" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "adicionado a" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "adicionado de" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" -msgstr "" +msgstr "o tipo MIME é" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "tipo de regra" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "valor" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "regra de filtragem" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "regras de filtragem" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Tarefa Automática" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Tarefa Agendada" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Tarefa Manual" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Verificar Sanidade" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Otimizar Índice" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID da tarefa" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "ID do Celery para a tarefa que foi executada" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Confirmado" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Se a tarefa é reconhecida através do frontend ou API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Nome do Ficheiro da Tarefa" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Nome do ficheiro pelo qual a tarefa foi executada" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Nome da Tarefa" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Nome da tarefa que foi executada" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Estado da Tarefa" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Estado atual da tarefa em execução" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Data de Criação" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Campo data/hora quando o resultado da tarefa foi criado, em UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Data de Início" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Campo Data/Hora quando a tarefa foi iniciada, em UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Data de conclusão" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Campo data/hora quando a tarefa foi concluída, em UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Resultados" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Os dados devolvidos pela tarefa" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Tipo de Tarefa" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "O tipo de tarefa que foi executada" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Nota do documento" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "utilizador" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "nota" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notas" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arquivo" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Original" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "validade" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "partilhar ligação" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "compartilhar links" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Texto" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Data" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Booleano" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Inteiro" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Virgula flutuante" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Moeda" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Endereço do Documento" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Seleccionar" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Texto Longo" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "tipo de dados" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "dados extra" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "dados extra para o campo personalizado, tais como opções de selecção" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "campo personalizado" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "campos personalizados" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "instância de campo personalizado" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "instâncias de campo personalizado" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Consumo Iniciado" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Documento Adicionado" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Documento Atualizado" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Agendado" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Pasta de consumo" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Envio de Api" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Obter E-mail" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" -msgstr "" +msgstr "Web UI" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Modificado" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Campo Personalizado" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Tipo de acionamento de fluxo de trabalho" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "caminho do filtro" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Apenas consume documentos com um caminho que combina com o especificado. Wildcards especificados como * são permitidos. Não faz distinção entre maiúsculas de minúsculas." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtro do nome do ficheiro" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Consumir apenas documentos que correspondam inteiramente ao nome de arquivo se especificado. Genéricos como *.pdf ou *fatura* são permitidos. Não é sensível a letras maiúsculas/minúsculas." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtrar documentos desta regra de e-mail" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "tem esta(s) tag(s)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "tem esta categoria de documento" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "tem esta correspondência" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "agendamento é recorrente" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "Se o horário deve ser recorrente." - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "agendar atraso recorrente em dias" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "acionador do fluxo de trabalho" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "acionadores do fluxo do trabalho" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "assunto do email" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "corpo do email" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" -msgstr "incluir documento no email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "agendamento é recorrente" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." +msgstr "Se o horário deve ser recorrente." #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" +msgstr "agendar atraso recorrente em dias" + +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." -msgstr "." - -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" -msgstr "enviar como JSON" - -#: documents/models.py:1168 -msgid "webhook parameters" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "acionador do fluxo de trabalho" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "acionadores do fluxo do trabalho" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "assunto do email" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "corpo do email" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "e-mails para" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "incluir documento no email" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "." + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "usar parâmetros" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "enviar como JSON" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Atribuição" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Remoção" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Email" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Tipo do Acionador do Fluxo do Trabalho" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "atribuir título" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "atribuir esta etiqueta" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "atribuir este tipo de documento" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "atribuir este correspondente" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "atribuir este caminho de armazenamento" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "atribuir este dono" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "conceder permissões de visualização para estes utilizadores" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "conceder permissões de visualização para estes grupos" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "conceder permissões de alteração a estes utilizadores" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "conceder permissões de alteração a estes grupos" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "atribuir estes campos personalizados" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "remover este(s) etiqueta(s)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "remover todas as etiquetas" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "remover este(s) tipo(s) de documento(s)" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "remover todos os tipos de documentos" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "remover esta(s) correspondência(s)" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "remover todos os correspondentes" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "remover este(s) caminho(s) de armazenamento " -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "remover todos os caminhos de armazenamento" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "remover este(s) dono(s)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "remover todos os donos" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "remover permissões de visualização para estes utilizadores" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "remover permissões de visualização para estes grupos" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "remover permssões de alteração para estes utilizadores" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "remover permissões de alteração para estes grupos" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "remover todas as permissões" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "remover esses campos personalizados" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "remover todos os campos personalizados" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" -msgstr "" +msgstr "endereço eletrónico" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "acção do fluxo do trabalho" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "acções do fluxo do trabalho" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "ordem" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "acionadores" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "ações" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "ativado" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" -msgstr "" +msgstr "fluxo de trabalho" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Expressão regular inválida: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Cor invalida." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Tipo de arquivo %(type)s não suportado" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Variável inválida detetada." #: documents/templates/account/account_inactive.html:5 msgid "Paperless-ngx account inactive" -msgstr "" +msgstr "Conta Paperless-ngx inativa" #: documents/templates/account/account_inactive.html:9 msgid "Account inactive." -msgstr "" +msgstr "Conta inativa." #: documents/templates/account/account_inactive.html:14 msgid "This account is inactive." -msgstr "" +msgstr "Esta conta está inativa." #: documents/templates/account/account_inactive.html:16 msgid "Return to login" -msgstr "" +msgstr "Voltar ao inicio de sessão" #: documents/templates/account/email/base_message.txt:1 #, python-format @@ -1362,7 +1411,7 @@ msgstr "Aqui está uma hiperligação para os documentos." #: documents/templates/mfa/authenticate.html:7 msgid "Paperless-ngx Two-Factor Authentication" -msgstr "" +msgstr "Autenticação de dois fatores" #: documents/templates/mfa/authenticate.html:12 msgid "Your account is protected by two-factor authentication. Please enter an authenticator code:" @@ -1370,11 +1419,11 @@ msgstr "" #: documents/templates/mfa/authenticate.html:17 msgid "Code" -msgstr "" +msgstr "Código" #: documents/templates/mfa/authenticate.html:24 msgid "Cancel" -msgstr "" +msgstr "Cancelar" #: documents/templates/paperless-ngx/base.html:58 msgid "Share link was not found." @@ -1419,7 +1468,7 @@ msgstr "" #: documents/validators.py:24 #, python-brace-format msgid "Unable to parse URI {value}, missing scheme" -msgstr "" +msgstr "Não foi possível analisar o URI {value}, o esquema está em falta" #: documents/validators.py:29 #, python-brace-format @@ -1433,7 +1482,7 @@ msgstr "" #: documents/validators.py:45 #, python-brace-format msgid "Unable to parse URI {value}" -msgstr "" +msgstr "Não foi possível analisar o URI {value}" #: paperless/apps.py:11 msgid "Paperless" @@ -1525,7 +1574,7 @@ msgstr "Define o tipo de PDF de saída" #: paperless/models.py:95 msgid "Do OCR from page 1 to this value" -msgstr "" +msgstr "Fazer OCR da página 1 até este valor" #: paperless/models.py:101 msgid "Do OCR using these languages" @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "configurações do paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Inglês (EUA)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Árabe" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Africano" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Bielorrusso" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Búlgaro" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Catalão" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Checo" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dinamarquês" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Deutsch" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grego" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Inglês (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Espanhol" -#: paperless/settings.py:784 -msgid "Persian" -msgstr "" - #: paperless/settings.py:785 +msgid "Persian" +msgstr "Persa" + +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finlandês" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Français" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Húngaro" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italiano" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japonês" -#: paperless/settings.py:790 -msgid "Korean" -msgstr "" - #: paperless/settings.py:791 +msgid "Korean" +msgstr "Coreano" + +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburguês" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norueguês" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Nederlandse" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polaco" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Português (Brasil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Português" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Romeno" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Russo" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Eslovaco" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Esloveno" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Sérvio" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Sueco" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turco" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ucraniano" -#: paperless/settings.py:805 -msgid "Vietnamese" -msgstr "" - #: paperless/settings.py:806 +msgid "Vietnamese" +msgstr "Vietnamita" + +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Chinês Simplificado" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administração do Paperless-ngx" @@ -1833,15 +1882,15 @@ msgstr "Utilizar STARTTLS" #: paperless_mail/models.py:19 msgid "IMAP" -msgstr "" +msgstr "IMAP" #: paperless_mail/models.py:20 msgid "Gmail OAuth" -msgstr "" +msgstr "Gmail OAuth" #: paperless_mail/models.py:21 msgid "Outlook OAuth" -msgstr "" +msgstr "Outlook OAuth" #: paperless_mail/models.py:25 msgid "IMAP server" @@ -1881,11 +1930,11 @@ msgstr "O conjunto de caracteres a utilizar ao comunicar com um servidor de emai #: paperless_mail/models.py:60 msgid "account type" -msgstr "" +msgstr "tipo de conta" #: paperless_mail/models.py:66 msgid "refresh token" -msgstr "" +msgstr "atualizar token" #: paperless_mail/models.py:70 msgid "The refresh token to use for token authentication e.g. with oauth2." @@ -1921,23 +1970,23 @@ msgstr "Processar todos os ficheiros, incluindo ficheiros 'embutidos (inline)'." #: paperless_mail/models.py:119 msgid "System default" -msgstr "" +msgstr "Predefinição do sistema" #: paperless_mail/models.py:120 msgid "Text, then HTML" -msgstr "" +msgstr "Texto, depois HTML" #: paperless_mail/models.py:121 msgid "HTML, then text" -msgstr "" +msgstr "HTML, depois texto" #: paperless_mail/models.py:122 msgid "HTML only" -msgstr "" +msgstr "Apenas HTML" #: paperless_mail/models.py:123 msgid "Text only" -msgstr "" +msgstr "Apenas Texto" #: paperless_mail/models.py:126 msgid "Delete" diff --git a/src/locale/ro_RO/LC_MESSAGES/django.po b/src/locale/ro_RO/LC_MESSAGES/django.po index b1debeb7e..27eca8787 100644 --- a/src/locale/ro_RO/LC_MESSAGES/django.po +++ b/src/locale/ro_RO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Documente" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "proprietar" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Nimic" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Orice cuvânt" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Toate cuvintele" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Potrivire exactă" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Expresie regulată" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Cuvânt neclar" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "nume" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "potrivire" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritm de potrivire" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "nu ține cont de majuscule" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "corespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "corespondenți" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "culoare" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "este etichetă inbox" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Marchează aceasta eticheta ca etichetă inbox: Toate documentele nou consumate primesc aceasta eticheta." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etichetă" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etichete" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Nu se poate seta ca părinte." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "tip de document" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "tipuri de document" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "cale" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "cale de stocare" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "căi de stocare" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Necriptat" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Criptat cu GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "titlu" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "conținut" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Textul brut al documentului. Acest camp este folosit in principal pentru căutare." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "tip MIME" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "sumă de control" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Suma de control a documentului original." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "suma de control a arhivei" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Suma de control a documentului arhivat." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "creat" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "modificat" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tip de stocare" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "adăugat" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "nume fișier" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Numele curent al fișierului stocat" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "nume fișier arhiva" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Numele curent al arhivei stocate" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "numele original al fișierului" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Numele original al fișierului când a fost încărcat" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "număr serial in arhiva" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Poziția acestui document in arhiva fizica." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "document" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "documente" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "afișează pe tabloul de bord" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "afișează in bara laterala" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "sortează camp" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "sortează invers" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "vizualizare" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "vizualizări" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "titlul conține" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "conținutul conține" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "Avizul prealabil de expediție este" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "corespondentul este" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "tipul documentului este" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "este în inbox" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "are eticheta" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "are orice eticheta" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "creat înainte de" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "creat după" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "anul creării este" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "luna creării este" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "ziua creării este" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "adăugat înainte de" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "adăugat după" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "modificat înainte de" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "modificat după" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "nu are etichetă" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "nu are aviz prealabil de expediție" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "titlul sau conținutul conține" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "query fulltext" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" -msgstr "" +msgstr "mai multe ca aceasta" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "are etichete în" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "calea de stocare este" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "are corespondent în" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "nu are corespondent în" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "are tip de document în" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "nu are tip document în" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "are cale de stocare în" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "nu are cale de stocare în" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "proprietarul este" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "are proprietar în" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "nu are proprietar" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "nu are proprietar în" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "tip de regula" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "valoare" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "regulă de filtrare" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "reguli de filtrare" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID Sarcină" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "ID-ul sarcinii Celery care a fost rulată" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Confirmat" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Dacă sarcina este confirmată prin frontend sau API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Numele fișierului sarcină" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Numele fișierului pentru care sarcina a fost executată" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Nume sarcină" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Stare sarcină" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Stadiul actual al sarcinii în curs de desfășurare" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Data creării" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Data începerii" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Data finalizării" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Datele rezultatului" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Datele returnate de sarcină" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Notă pentru document" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "utilizator" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "notă" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "note" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arhivă" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Original" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "expirare" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "link de partajare" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "link-uri de partajare" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Şir de caractere" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "Adresă URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Dată" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Boolean" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Număr întreg" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Număr zecimal" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Link document" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "tip date" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Consumă doar documentele care se potrivesc în întregime cu acest nume de fișier, dacă este specificat. Simbolul * ține locul oricărui șir de caractere. Majusculele nu contează." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "atribuie această etichetă" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "atribuie acest tip" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "atribuie acest corespondent" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "ordonează" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Expresie regulată invalida: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Culoare invalidă." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Tip de fișier %(type)s nesuportat" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "" @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Engleză (Americană)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Cehă" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Daneză" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Germană" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Engleză (Britanică)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spaniolă" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Franceză" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italiană" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburgheză" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Olandeză" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Poloneză" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugheză (Brazilia)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugheză" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Română" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Rusă" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Suedeză" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administrare Paperless-ngx" diff --git a/src/locale/ru_RU/LC_MESSAGES/django.po b/src/locale/ru_RU/LC_MESSAGES/django.po index 5f3ac3791..93d77c84c 100644 --- a/src/locale/ru_RU/LC_MESSAGES/django.po +++ b/src/locale/ru_RU/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-17 00:36\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Документы" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Значение должно быть корректным JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Неверное выражение запроса пользовательского поля" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Недопустимый список выражений. Не может быть пустым." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Недопустимый логический оператор {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Превышено максимальное количество условий запроса." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} не является допустимым пользовательским полем." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} не поддерживает запрос {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Превышена максимальная глубина вложения." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Пользовательское поле не найдено" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "владелец" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Никакой" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Любые слова" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Все слова" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Точное соответствие" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Регулярное выражение" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "\"Нечёткий\" режим" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Автоматически" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "имя" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "соответствие" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "алгоритм сопоставления" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "без учёта регистра" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "корреспондент" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "корреспонденты" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "цвет" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "это входящий тег" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Отметить этот тег как «Входящий»: все вновь добавленные документы будут помечены тегами «Входящие»." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "тег" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "теги" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "тип документа" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "типы документов" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "путь" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "путь к хранилищу" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "пути хранения" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "не зашифровано" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Зашифровано с помощью GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "заголовок" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "содержимое" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Это поле используется в основном для поиска." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "тип Mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "контрольная сумма" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Контрольная сумма оригинального документа." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "контрольная сумма архива" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Контрольная сумма архивного документа." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "количество страниц" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Количество страниц документа." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "создано" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "изменено" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "тип хранилища" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "добавлено" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "имя файла" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Текущее имя файла в хранилище" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "имя файла архива" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Текущее имя файла архива в хранилище" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "исходное имя файла" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Исходное имя файла при его загрузке" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "архивный номер (АН)" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Позиция этого документа в вашем физическом архиве документов." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "документ" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "документы" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Таблица" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Маленькие карточки" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Большие карточки" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Название" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Создано" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Добавлено" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Теги" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Корреспондент" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Тип документа" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Путь хранения" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Заметка" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Владелец" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Общий доступ" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Страницы" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "показать на панели" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "показать в боковой панели" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "Поле сортировки" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "обратная сортировка" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Посмотреть размер страницы" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Режим отображения" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Показывать поля документа" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "сохранённое представление" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "сохраненные представления" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "заголовок содержит" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "содержимое содержит" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "АН" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "корреспондент" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "тип документа" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "во входящих" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "есть тег" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "есть любой тег" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "создан до" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "создан после" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "год создания" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "месяц создания" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "день создания" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "добавлен до" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "добавлен после" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "изменен до" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "изменен после" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "не имеет тега" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "не имеет архивного номера" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "Название или содержимое включает" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "полнотекстовый запрос" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "больше похожих" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "имеет теги в" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "АН больше чем" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "АН меньше чем" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "путь хранения является" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "имеет корреспондента в" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "не имеет корреспондента в" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "имеет тип документа в" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "не имеет тип документа в" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "имеет путь хранения в" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "не имеет пути хранения в" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "владелец" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "имеет владельца в" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "не имеет владельца" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "не имеет владельца в" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "имеет значение пользовательского поля" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "делится мною" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "имеет пользовательские поля" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "имеет пользовательское поле в" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "не имеет настраиваемого поля в" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "не имеет настраиваемого поля" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "запрос пользовательских полей" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "создано в" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "создано из" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "добавлено в" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "добавлено из" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "MIME-тип" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "Тип правила" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "значение" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "Правило фильтрации" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "правила фильтрации" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Автоматическая задача" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Запланированная задача" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Ручное задание" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Получить файл" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Тренировать Классификатор" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Проверить безопасность" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Оптимизировать индекс" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ИД задачи" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "ИД Celery для задачи, которая была выполнена" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Подтверждено" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Если задание подтверждено через внешний интерфейс или API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Имя файла задачи" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Имя файла, для которого была запущена задача" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Название Задачи" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Название задачи, которая была запущена" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Состояние задачи" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Текущее состояние выполняемой задачи" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Дата и время создания" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Поле времени даты, когда результат задачи был создан в формате UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Дата и время начала" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Поле времени и даты начала выполнения задачи в формате UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Дата и время завершения" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Поле времени и даты, когда задание было выполнено в формате UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Данные результата" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Данные, возвращаемые задачей" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Тип задачи" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Тип запущенной задачи" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Заметка для документа" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "пользователь" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "заметка" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "заметки" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Архив" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Оригинал" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "истечение" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "динамический идентификатор" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "ссылка для обмена" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "ссылки для обмена" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Строка" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "Ссылка" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Дата" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Логическое значение" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Целое число" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "С плавающей точкой" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Валюта" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Ярлык на документ" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Выбрать" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Длинный текст" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "тип данных" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "Дополнительные данные" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Дополнительные данные для пользовательского поля, такие как выбор опций" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "Пользовательское поле" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "Пользовательские поля" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "спецобразец поля" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "спецобразцы поля" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Обработка документа начата" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Документ добавлен" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Документ обновлен" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Запланировано" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Обработка из папки" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "API загрузка" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Получить почту" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Веб-интерфейс" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Изменено" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Пользовательское поле" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Tип пускового механизма автоматизации" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "фильтр путя" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Обрабатывает только документы, соответствующие этому пути если он указан. Допускаются такие символы, как *. Верхний и нижний регистр не учитываются." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "фильтр имя файла" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Обрабатывать только документы, которые полностью совпадают с именем файла (если оно указано). Маски, например *.pdf или *счет*, разрешены. Без учёта регистра." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "фильтр документов из этого правила электронной почты" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "имеет эти этикетки" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "имеет этот тип документа" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "имеет этого корреспондента" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "дни смещения расписания" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Количество дней для смещения расписания триггера." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "расписание повторяется" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Если график должен быть повторяющимся." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "задержка в повторении расписания в днях" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Количество дней между триггерами периодического расписания." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "поле даты расписания" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Поле для проверки триггера расписания." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "пользовательское поле даты расписания" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "пусковой механизм автоматизации" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "пусковые механизмы автоматизации" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "Тема письма" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Тело (сообщение) письма, может включать некоторые плейсхолдеры, см. документацию." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "текст письма" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Тело (сообщение) письма, может включать некоторые плейсхолдеры, см. документацию." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "e-mail-ы для" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Адреса электронной почты, разделенные запятыми." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "включать документ в email" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "URL-адрес вебхука" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "URL-адрес куда отправить уведомление" -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "использовать параметры" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "отправить как JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "параметры вебхука" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Параметры для отправки с URL-адресом вебхука, если тело не используется." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "тело вебхука" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Тело для отправки с URL-адресом вебхука, если параметры не используются." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "HTTP-заголовки вебхука" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "HTTP-заголовки для отправки с URL-адресом вебхука." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "включить документ в вебхук" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Задание" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Удаление" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Электронная почта" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Вебхук" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Тип действия автоматизации" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "присвоить заголовок" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "назначить этот тег" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "назначить этот тип документа" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "назначить этого корреспондента" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "назначить этот путь хранения" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "назначить этого владельца" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "предоставьте права на отображение этим пользователям" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "предоставьте права на отображение этим группам" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "предоставьте права на редактирование этим пользователям" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "предоставьте права на редактирование этим группам" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "назначьте эти спецполя" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "значения пользовательского поля" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Необязательные значения для присвоения пользовательским полям." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "удалить выбранные таг(и)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "удалить все таги" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "удалить эти тип(ы) документов" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "удалить все типы документов" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "удалить этого корреспондента(-ов)" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "удалить всех корреспондентов" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "удалить эти пути хранения" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "удалить все пути хранения" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "удалить этого владельца(-ов)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "удалить всех владельцев" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "удалить разрешения на просмотр для этих пользователей" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "удалить права просмотра для этих групп" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "удалить права на изменение для этих пользователей" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "удалить права на изменение для этих групп" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "удалить все разрешения" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "удалить эти пользовательские поля" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "удалить все пользовательские поля" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "электронная почта" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "вебхук" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "действия автоматизации" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "действия автоматизации" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "порядок" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "пусковые механизмы" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "действия" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "включено" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "рабочий процесс" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "тип триггера рабочего процесса" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "дата запуска" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "запуск рабочего процесса" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "запуски рабочего процесса" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "неверное регулярное выражение: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Неверный цвет." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Тип файла %(type)s не поддерживается" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Обнаружена неверная переменная." @@ -1627,151 +1676,151 @@ msgstr "Устанавливает сопоставление тег-штрих- msgid "paperless application settings" msgstr "настройки приложения paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Английский (США)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Арабский" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Африкаанс" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Белорусский" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Болгарский" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Каталонский" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Чешский" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Датский" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Немецкий" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Греческий" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Английский (Великобритании)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Испанский" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Персидский" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Финский" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Французский" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Венгерский" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Итальянский" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Японский" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Корейский" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Люксембургский" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Норвежский" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Датский" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Польский" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Португальский (Бразилия)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Португальский" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Румынский" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Русский" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Словацкий" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Словенский" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Сербский" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Шведский" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Турецкий" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Украинский" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Вьетнамский" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Китайский упрощенный" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Китайский (традиционный)" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Администрирование Paperless-ngx" diff --git a/src/locale/sk_SK/LC_MESSAGES/django.po b/src/locale/sk_SK/LC_MESSAGES/django.po index 0ec5a8fea..c0c8f0365 100644 --- a/src/locale/sk_SK/LC_MESSAGES/django.po +++ b/src/locale/sk_SK/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Slovak\n" "Language: sk_SK\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumenty" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Hodnota musí byť vo validnom formáte JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Neplatný výraz požiadavky na vlastné pole" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Neplatný zoznam výrazov. Nesmie byť prázdny." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Neplatný logický operátor {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Prekročili ste maximálny počet podmienok požiadavky." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} nie je platné vlastné pole." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} nepodporuje výraz požiadavky {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Bola prekročená maximálna hĺbka vetvenia." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Vlastné pole nebolo nájdené" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "vlastník" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Žiadny" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Akékoľvek slovo" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Všetky slová" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Presná zhoda" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regulárny výraz" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Podobné slovo" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automaticky" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "meno" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "zhoda" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritmus zhody" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "nerozlišuje veľké a malé písmená" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korešpondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korešpondenti" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "farba" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "je štítok schránky" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Označí tento štítok ako štítok doručenej pošty: Všetky novo rozpoznané dokumenty budú označené štítkami doručenej pošty." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "štítok" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "štítky" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "typ dokumentu" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "typy dokumentov" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "cesta" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "cesta k úložisku" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "cesty k úložisku" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Nešifrované" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Šifrované pomocou GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "názov" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "obsah" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Nespracované, iba textové údaje dokumentu. Toto pole sa primárne používa na vyhľadávanie." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME typ" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrolný súčet" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Kontrolný súčet originálneho dokumentu." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "kontrolný súčet archívu" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Kontrolný súčet archivovaného dokumentu." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "počet strán" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Počet stránok dokumentu." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "vytvorené" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "upravené" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "typ úložiska" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "pridané" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "názov súboru" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Aktuálny názov dokumentu v úložisku" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "názov archivovaného súboru" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Aktuálny názov archívneho súboru v úložisku" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "pôvodný názov súboru" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Pôvodný názov súboru pri nahratí" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "sériové číslo archívu" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Umiestnenie dokumentu vo vašom fyzickom archíve." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumenty" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabuľka" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Malé karty" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Veľké karty" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Názov" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Vytvorené" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Pridané" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Štítky" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korešpondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Typ dokumentu" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Cesta k úložisku" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Poznámka" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Vlastník" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Zdieľané" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Stránok" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "zobraziť na hlavnom paneli" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "zobraziť na bočnom paneli" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "zoraďovacie pole" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "zoradiť opačne" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Zobraziť veľkosť stránky" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Zobraziť režim zobrazenia" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Polia zobrazenia dokumentu" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "uložené zobrazenie" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "uložené zobrazenia" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "názov obsahuje" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "dokument obsahuje" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN je" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "odosielateľ je" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "typ dokumentu je" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "je v doručenej pošte" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "má štítok" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "má niektorý zo štítkov" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "vytvorený pred" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "vytvorený po" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "rok vytvorenia je" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "mesiac vytvorenia je" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "deň vytvorenia je" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "pridaný pred" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "pridaný po" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "zmenený pred" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "zmenený po" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "nemá štítok" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "nemá ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "názov alebo dokument obsahuje" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "fulltextový dopyt" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "viac podobných" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "má štítok v" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN väčšie ako" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN menšie ako" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "cesta k úložisku je" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "má korešpondenta v" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "nemá korešpondenta v" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "má typ dokumentu v" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "nemá typ dokumentu v" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "má cestu k úložisku v" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "nemá cestu k úložisku v" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "vlastníkom je" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "má vlastníka v" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "nemá vlastníka" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "nemá vlastníka v" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "má hodnotu vlastného poľa" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "je zdieľaný mnou" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "má vlastné polia" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "má vlastné pole v" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "nemá vlastné pole v" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "nemá vlastné pole" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "požiadavky na vlastné polia" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "vytvorené do" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "vytvorené z" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "pridané do" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "pridané z" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "typ mime je" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "typ pravidla" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "hodnota" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "pravidlo filtra" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "pravidlá filtra" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Automatická úloha" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Plánovaná úloha" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Manuálna úloha" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Súbor spracovania" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Trénovací klasifikátor" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Skontrolovať zdravie" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Optimalizácia indexu" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID úlohy" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID úlohy, ktorá bola vykonaná" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Potvrdené" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Ak je úloha potvrdená prostredníctvom rozhrania alebo API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Názov súboru úlohy" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Názov súboru, na ktorom bola vykonaná úloha" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Názov úlohy" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Názov úlohy, ktorá bola spustená" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Stav úlohy" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Aktuálny stav bežiacej úlohy" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Dátum a čas vytvorenia" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Dátum a čas výsledku úlohy v UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Dátum a čas začiatku" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Dátum a čas začiatku úlohy v UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Dátum a čas skončenia" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Dátum a čas skončenia úlohy v UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Výsledné dáta" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Výsledné dáta úlohy" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Typ úlohy" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Typ úlohy, ktorá bola spustená" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Poznámka k dokumentu" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "používateľ" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "poznámka" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "poznámky" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Archív" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Originál" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "vypršanie" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "odkaz pre zdieľanie" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "odkazy pre zdieľanie" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Reťazec" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "Adresa URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Dátum" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Logická hodnota" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Celé číslo" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Plávajúce číslo" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Peňažný" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Odkaz na dokument" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Vybrať" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "dátový typ" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "dodatočné údaje" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Dodatočné údaje pre vlastné pole, ako sú napr. možnosti výberu" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "vlastné pole" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "vlastné polia" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "inštancia vlastného poľa" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "inštancie vlastných polí" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Spustené spracovanie" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokument pridaný" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokument aktualizovaný" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Plánované" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Priečinok spracovania" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Nahrať pomocou API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Načítať poštu" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Webové rozhranie" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Upravené" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Vlastné pole" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Typ spúšťača pracovného postupu" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filter cesty" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Spracovávať iba dokumenty s cestou, ktorá zodpovedá tomuto výrazu (ak je zadaný). Sú povolené zástupné znaky ako napr. *. Medzi malými a veľkými písmenami sa nerozlišuje." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filter názvu súboru" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Spracuje iba dokumenty so zhodným názvom, ak je vyplnený. Použitie zástupných znakov ako *.pdf alebo *invoice* je povolené. Rozoznáva malé a veľké písmená." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtrovať dokumenty z tohto poštového pravidla" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "má tieto štítky" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "má tento typ dokumentu" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "má tohto korešpondenta" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "počet dní posunu plánu" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Počet dní, o ktoré sa má spúšťač plánu posunúť." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "plán sa opakuje" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Či by sa mal plán opakovať." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "oneskorenie opakovania plánu v dňoch" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "spúšťač pracovného postupu" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "spúšťače pracovného postupu" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "predmet e-mailu" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Predmet e-mailu, môže obsahovať niektoré zástupné znaky, viď dokumentácia." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "telo e-mailu" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Telo (správa) e-mailu, môže obsahovať niektoré zástupné znaky, viď dokumentácia." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "e-maily komu" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "" -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "" -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "" -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-mail" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "priradiť tento štítok" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "priradiť tento typ dokumentu" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "priradiť tohto odosielateľa" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "priradiť tieto vlastné polia" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Voliteľné hodnoty na priradenie k vlastným poliam." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "odstrániť všetky štítky" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "odstrániť tieto typy dokumentov" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "odstrániť všetky typy dokumentov" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "odstrániť týchto korešpondentov" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "odstrániť všetkých korešpondentov" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "odstrániť tieto cesty k úložisku" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "odstrániť všetky cesty k úložisku" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "odstrániť týchto vlastníkov" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "odstrániť všetkých vlastníkov" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "odstrániť povolenia na zobrazenie pre týchto používateľov" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "odstrániť povolenia na zobrazenie pre tieto skupiny" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "odstrániť povolenia na úpravy pre týchto používateľov" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "odstrániť povolenia na úpravy pre tieto skupiny" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "odstrániť všetky povolenia" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "odstrániť tieto vlastné polia" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "odstrániť všetky vlastné polia" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "e-mail" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "akcia pracovného postupu" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "akcie pracovného postupu" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "poradie" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "spúšťače" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "akcie" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "povolené" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "pracovný postup" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "typ spúšťača pracovného postupu" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "dátum spustenia" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "spustenie pracovného postupu" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "spustenia pracovných postupov" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Neplatný regulárny výraz: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Neplatná farba." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Typ súboru %(type)s nie je podporovaný" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Zistená neplatná premenná." @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Angličtina (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabčina" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Bieloruština" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Catalan" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Čeština" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Dánčina" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Nemčina" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Angličtina (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Španielčina" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finnish" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francúzština" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Taliančina" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburčina" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Holandčina" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polština" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugalčina (Brazília)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugalčina" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumunčina" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Ruština" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovenčina" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovinčina" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Srbčina" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Švédčina" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turečtina" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Čínština (zjednodušená)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Administrácia Paperless-ngx" diff --git a/src/locale/sl_SI/LC_MESSAGES/django.po b/src/locale/sl_SI/LC_MESSAGES/django.po index 28e5acccc..68e8f5ffe 100644 --- a/src/locale/sl_SI/LC_MESSAGES/django.po +++ b/src/locale/sl_SI/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Slovenian\n" "Language: sl_SI\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumenti" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Vrednost mora biti veljaven JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Neveljaven izraz poizvedbe po polju po meri" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Neveljaven seznam izrazov. Ne sme biti prazen." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Neveljaven logični operator {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Preseženo je bilo največje dovoljeno število pogojev poizvedbe." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} ni veljavno polje po meri." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} ne podpira izraza poizvedbe {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Presežena je bila največja globina gnezdenja." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Polja po meri ni bilo mogoče najti" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "lastnik" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Brez" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Katerakoli beseda" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Vse besede" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Točno ujemanje" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regularni izraz" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Zamegljena beseda" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Samodejno" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "ime" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "ujemanje" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritem ujemanja" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "brez razlikovanje velikosti črk" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "dopisnik" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "dopisniki" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "barva" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "je vhodna oznaka" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Označi to oznako kot vhodno oznako: vsi na novo obdelani dokumenti bodo označeni z vhodno oznako." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "oznaka" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "oznake" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Ne more se nastaviti kot nadrejeni element." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Nadrejenega elementa ni mogoče nastaviti na potomca." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "vrsta dokumenta" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "vrste dokumentov" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "pot" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "pot shranjevanja" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "poti shranjevanja" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Nešifrirano" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Šifrirano z GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "naslov" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "vsebina" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Neobdelani besedilni podatki dokumenta. To polje se uporablja predvsem za iskanje." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "vrsta mime" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrolna vsota" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Kontrolna vsota izvirnega dokumenta." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arhivska kontrolna vsota" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Kontrolna vsota arhiviranega dokumenta." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "število strani" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Število strani dokumenta." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "ustvarjeno" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "spremenjeno" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "vrsta shrambe" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "dodano" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "ime datoteke" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Trenutno ime dokumenta v shrambi" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "ime arhivske datoteke" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Trenutno ime arhivske datoteke v shrambi" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "izvirno ime datoteke" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Izvirno ime datoteke, ko je bila naložena" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "arhivska serijska številka" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Položaj tega dokumenta v vašem fizičnem arhivu dokumentov." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumenti" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabela" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Manjše kartice" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Večje kartice" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Naslov" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Ustvarjeno" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Dodano" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Oznake" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Dopisnik" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Vrsta dokumenta" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Pot do shrambe" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Opomba" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Lastnik" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Deljeno" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Strani" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "prikaži na pregledni plošči" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "prikaži v stranski vrstici" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "polje za razvrščanje" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "razvrsti obratno" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Velikost strani" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Način prikaza" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Prikaži polja dokumenta" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "shranjeni pogled" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "shranjeni pogledi" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "naslov vsebuje" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "vsebina vsebuje" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN je" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "dopisnik je" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "vrsta dokumenta je" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "je v prejetem" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "ima oznako" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "ima katero koli oznako" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "ustvarjeno pred" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "ustvarjeno po" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "leto nastanka" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "mesec nastanka" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "dan nastanka" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "dodano pred" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "dodano po" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "spremenjeno pred" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "spremenjeno po" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "nima oznake" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "nima ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "naslov ali vsebina vsebujeta" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "polnobesedilna poizvedba" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "več podobnih" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "ima oznake" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN večje kot" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN manjši od" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "pot shranjevanja je" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "ima dopisnika v" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "nima dopisnika v" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "ima vrsto dokumenta v" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "nima vrste dokumenta v" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "ima pot za shranjevanje v" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "nima poti za shranjevanje v" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "lastnik je" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "ima lastnika v" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "brez lastnika" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "nima lastnika v" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "vsebuje vrednost po meri" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "delim jaz" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "vsebuje polja po meri" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "vsebuje polje po meri v" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "ne vsebuje polja po meri v" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "ne vsebuje polja po meri" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "poizvedba polj po meri" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "ustvarjeno za" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "ustvarjeno iz" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "dodano k" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "dodano iz" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "tip mime je" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "vrsta pravila" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "vrednost" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "filtriraj pravilo" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "filtriraj pravila" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Samodejno opravilo" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Načrtovano opravilo" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Ročno opravilo" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Porabi datoteko" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Klasifikator vlakov" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Preverite razumnost" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Optimizacija indeksa" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID opravila" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID opravila, ki je bilo izvedeno" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Potrjeno" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Če je opravilo potrjeno prek uporabniškega vmesnika ali API-ja" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Ime datoteke opravila" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Ime datoteke, za katero je bilo izvedeno opravilo" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Ime opravila" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Ime naloge, ki je bila izvedena" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Status opravila" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Trenutno stanje opravila, ki se izvaja" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Ustvarjeno DatumČas" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Polje z datumom, ko je bil rezultat opravila ustvarjen (v UTC)" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Začetni DatumČas" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Polje z datumom, ko se je opravilo začelo (v UTC)" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Končan DatumČas" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Polje z datumom, ko je bilo opravilo dokončano (v UTC)" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Podatki o rezultatu" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Od opravila vrnjeni podatki" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Vrsta naloge" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Vrsta naloge, ki je bila izvedena" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Opomba za dokument" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "uporabnik" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "opomba" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "zapiski" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arhiv" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Izvirnik" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "zapadlost" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "deli povezavo" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "deli povezave" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Niz (besedilo)" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Datum" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Logična vrednost" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Celo število" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Ne celo število" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Denarno" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Povezava do dokumenta" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Izberi" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Dolgo besedilo" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "tip podatka" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "dodatni podatki" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Dodatni podatki za polje po meri, npr. opcije izbora" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "polje po meri" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "polja po meri" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "primer polja po meri" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "primeri polja po meri" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Obdelava pričeta" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokument dodan" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokument posodobljen" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Načrtovano" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Zajemalna mapa" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Api prenos" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Pridobi e-pošto" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Spletni uporabniški vmesnik" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Spremenjeno" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Polje po meri" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Tip sprožilca procesa" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtriraj pot" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Če je določena, zajemi samo dokumente s potjo, ki se ujema s to. Dovoljeni so nadomestni znaki, določeni kot *. Ni občutljivo na velikost črk." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtriraj imena datotek" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Uporabljajte samo dokumente, ki se v celoti ujemajo s tem imenom datoteke, če je navedeno. Dovoljeni so nadomestni znaki, kot sta *.pdf ali *račun*. Neobčutljiva na velike in male črke." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtriraj dokumente iz tega e-poštnega pravila" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "vsebuje te oznake" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "ima vse te oznake" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "nima teh oznak" + +#: documents/models.py:1087 msgid "has this document type" msgstr "vsebuje tip dokumenta" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "nima teh vrst dokumentov" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "vsebuje dopisnika" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "nima teh dopisnikov" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "ima to pot shranjevanja" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "nima teh poti za shranjevanje" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "filtriranje polj po meri" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "Izraz poizvedbe za polje po meri, kodiran v JSON." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "dnevi izstopa v urniku" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Število dni, za katere naj se sproži sprožilec razporeda." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "urnik se ponavlja" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Če bi moral biti urnik ponavljajoč se." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "načrtujte ponavljajočo se zamudo v dnevih" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Število dni med ponavljajočimi se sprožilci razporeda." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "polje z datumom razporeda" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Polje za preverjanje sprožilca razporeda." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "polje po meri za datum razporeda" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "sprožilec procesa" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "sprožilci procesa" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "zadeva e-pošte" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Zadeva e-poštnega sporočila lahko vključuje nekaj nadomestnih besedil, glejte dokumentacijo." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "telo e-pošte" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Telo (sporočilo) e-pošte lahko vključuje nekaj nadomestnih besedil, glejte dokumentacijo." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "e-poštna sporočila za" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Ciljni e-poštni naslovi, ločeni z vejicami." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "vključi dokument v e-pošto" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "URL spletnega kavlja" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "Ciljni URL za obvestilo." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "uporabite parametre" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "pošlji kot JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "parametri spletnega kavlja" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Parametri, ki jih je treba poslati z URL-jem spletnega kavlja, če telo ni uporabljeno." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "telo spletnega kavlja" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Telo, ki ga je treba poslati z URL-jem spletnega kavlja, če parametri niso uporabljeni." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "glave spletnega kavlja" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Glave, ki jih je treba poslati z URL-jem spletnega kavlja." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "vključi dokument v spletni kavelj" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Dodelitev" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Odstranitev" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-pošta" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Spletni kavelj" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Tip dejanja procesa" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "dodeli naslov" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Dodelite naslov dokumenta, mora biti predloga Jinja2, glejte dokumentacijo." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "dodeli to oznako" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "dodeli to vrsto dokumenta" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "dodeli tega dopisnika" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "dodeli to pot shranjevanja" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "določi tega lastnika" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "tem uporabnikom podeli dovoljenje za ogled" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "tem skupinam podeli dovoljenje za ogled" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "tem uporabnikom podeli dovoljenje za spreminjanje" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "tem skupinam podeli dovoljenje za spreminjanje" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "dodeli ta polja po meri" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "vrednosti polj po meri" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Neobvezne vrednosti, ki jih je treba dodeliti poljem po meri." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "odstrani te oznake" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "odstrani vse oznake" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "odstrani te vrste dokumentov" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "odstrani vse vrste dokumentov" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "odstrani te dopisnike" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "odstrani vse dopisnike" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "odstrani te poti do shrambe" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "odstrani vse poti do shrambe" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "odstrani te lastnike" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "odstrani vse lastnike" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "odstrani dovoljenja za ogled tem uporabnikom" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "odstrani dovoljenja za ogled tem skupinam" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "odstrani dovoljenja za spreminjanje tem uporabnikom" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "odstrani dovoljenja za spreminjanje tem skupinam" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "odstrani vsa dovoljenja" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "odstrani ta polja po meri" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "odstrani vsa polja po meri" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "e-pošta" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "spletni kavelj" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "dejanje procesa" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "dejanja procesa" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "vrstni red" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "sprožilci" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "dejanja" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "omogočeno" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "potek dela" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "vrsta sprožilca poteka dela" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "datum poteka" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "izvajanje poteka dela" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "poteka dela" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Neveljaven splošen izraz: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Napačna barva." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Vrsta datoteke %(type)s ni podprta" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "ID polja po meri mora biti celo število: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Polje po meri z ID-jem %(id)s ne obstaja" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Polja po meri morajo biti seznam celih števil ali objekt, ki preslika ID-je v vrednosti." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Nekatera polja po meri ne obstajajo ali pa so bila navedena dvakrat." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Zaznani neveljavni znaki." @@ -1627,151 +1676,151 @@ msgstr "Nastavi preslikavo črtne kode oznake" msgid "paperless application settings" msgstr "aplikacijske nastavitve paperless" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Angleščina (ZDA)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabščina" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikanščina" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Beloruščina" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bolgarščina" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalonščina" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Češčina" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Danščina" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Nemščina" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grščina" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Angleščina (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Španščina" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Perzijščina" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finščina" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francoščina" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Madžarščina" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italijanščina" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "japonščina" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Korejščina" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luksemburški" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norveščina" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Nizozemščina" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Poljščina" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugalščina (Brazilija)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugalščina" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Romunščina" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Ruščina" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovaščina" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovenščina" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Srbščina" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Švedščina" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turščina" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukrajinščina" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vietnamščina" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Poenostavljena kitajščina" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Tradicionalna kitajščina" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx administracija" diff --git a/src/locale/sr_CS/LC_MESSAGES/django.po b/src/locale/sr_CS/LC_MESSAGES/django.po index a49beb1be..72f835042 100644 --- a/src/locale/sr_CS/LC_MESSAGES/django.po +++ b/src/locale/sr_CS/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Language: sr_CS\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokumenta" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Vrednost mora da bude važeći JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Nevažeći izraz upita prilagođen polja" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Nevažeća lista izraza. Ne sme biti prazna." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Nevažeći logični operator {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Premašen je maksimalni broj uslova u upitu." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} nije validno prilagođeno polje." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} ne podržava izraz u upitu {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Premašena je maksimalna dubina grananja." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Nije pronađeno prilagođeno polje" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "vlasnik" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Nijedan" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Bilo koja reč" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Sve reči" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Tačno podudaranje" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regularni izraz" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Neodređena reč" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatski" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "naziv" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "poklapanje" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "algoritam podudaranja" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "bez razlike veliko/malo slovo" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korespondenti" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "boja" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "je oznaka prijemnog sandučeta" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Obeležava ovu oznaku kao oznaku prijemnog sandučeta: Svi novoobrađeni dokumenti biće automatski označeni oznakom prijemnog sandučeta." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "oznaka" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "oznake" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Ne može postaviti sebe kao roditelj." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Ne može se postaviti roditeljski element na potomaka." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "tip dokumenta" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "tipovi dokumenta" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "putanja" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "putanja skladišta" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "putanja skladišta" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Nešifrovano" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Šifrovano pomoću GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "naslov" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "sadržaj" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Neobrađeni tekstualni podaci dokumenta. Ovo se polje koristi prvenstveno za pretraživanje." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime tip" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrolni zbir" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Kontrolni zbir originalnog dokumenta." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arhivski zbir" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Kontrolni zbir arhivskog dokumenta." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "broj strana" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Broj stranica dokumenta." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "kreirano" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "izmenjeno" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "tip skladišta" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "dodato" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "naziv fajla" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Trenutni naziv sačuvane datoteke" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "naziv arhivskog fajla" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Trenutni naziv arhivirane sačuvane datoteke" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "originalno ime fajla" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Originalni naziv fajla kada je otpremljen" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "arhivski serijski broj" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Položaj ovog dokumenta u Vašoj fizičkoj arhivi dokumenata." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokumenta" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tabela" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Male kartice" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Velike kartice" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Naslov" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Kreirano" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Dodato" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Oznake" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korespondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Tip dokumenta" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Putanje skladišta" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Beleška" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Vlasnik" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Deljeno" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Stranice" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "prikaži na kontrolnoj tabli" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "prikaži u bočnoj traci" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "polje za sortiranje" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "obrnuto sortiranje" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Veličinа stranice za prikaz" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Režim prikaza" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Polja prikaza dokumenta" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "sačuvani prikaz" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "sačuvani prikazi" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "naslov sadrži" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "sadržaj sadrži" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN je" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "korespondent je" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "tip dokumenta je" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "je u prijemnog sandučetu" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "ima oznaku" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "ima bilo koju oznaku" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "kreiran pre" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "kreiran posle" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "godina kreiranja je" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "mesec kreiranja je" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "dan kreiranja je" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "dodat pre" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "dodat posle" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "izmenjen pre" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "izmenjen posle" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "nema oznaku" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "nema ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "naslov i sadržaj sadrži" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "upit za ceo tekst" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "više ovakvih" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "ima oznake u" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN veći od" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN manji od" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "putanja skladišta je" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "postoji korespondent" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "ne postoji korespondent" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "postoji tip dokumenta" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "ne postoji tip dokumenta u" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "ima putanju skladišta u" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "nema putanju skladišta u" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "vlasnik je" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "ima vlasnika u" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "nema vlasnika" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "nema vlasnika u" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "ima vrednost prilagođenog polja" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "deljeno je od mene" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "ima prilagođena polja" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "ima prilagođeno polje u" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "nema prilagođeno polje u" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "nema prilagođeno polje" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "upit za prilagođena polja" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "kreirano za" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "kreirano od" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "dodato za" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "dodato od" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "vrsta višenamenske ekstenzije za mejl (mime type)" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "tip pravila" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "vrednost" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "pravilo filtriranja" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "pravila filtriranja" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Automatski zadatak" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Zakazani zadatak" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Ručni zadatak" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Obradi fajl" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Treniraj klasifikator" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Proveri ispravnost" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Optimizuj indeks" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID Zadatka" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID za zadatak koji je pokrenut" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Potvrđeno" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Ako je zadatak potvrđen preko frontenda ili API-ja" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Naziv datoteke zadatka" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Naziv fajla za koji je zadatak pokrenut" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Naziv zadatka" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Naziv zadatka koji je izvršen" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Stanje zadatka" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Trenutno stanje zadatka koji se izvršava" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Datum i vreme kreiranja" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Polje datuma i vremena kada je rezultat zadatka kreiran u UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Datum i vreme početka" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Polje datuma i vremena kada je zadatak pokrenut u UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Datum i vreme završetka" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Polje datuma i vremena kada je zadatak završen u UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Podaci o rezultatu" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Podaci koje vraća zadatak" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Vrsta zadatka" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Vrsta zadatka koji je izvršen" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Napomena za dokument" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "korisnik" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "napomena" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "beleške" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arhiv" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Originalni" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "istek" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "kratki naziv" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "deljeni link" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "deljeni linkovi" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "String" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Datum" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Logičko" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Ceo broj" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Float" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monetarno" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Link dokumenta" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Odaberi" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Dugi tekst" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "tip podataka" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "dodatni podaci" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Dodatni podaci za prilagođeno polje, kao što su opcije selekcije" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "prilagođeno polje" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "dodatna polja" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "instanca prilagođenog polja" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "instance prilagođenog polja" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Obrada je započela" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokument dodat" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokument ažuriran" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Zakazano" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Folder za obradu" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Postavljanje putem API-ja" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Preuzimanje imejla" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Veb korisnički interfejs" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Izmenjeno" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Prilagođeno polje" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Tip okidača radnog toka" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtriraj putanju" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Samo obrađivati dokumenta čija putanja odgovara ovome ako je navedeno. Znakovi u vidu * su dopušteni. Neosetljivo je na mala i mala slova." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtriraj ime fajla" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Obraditi samo dokumente koji u potpunosti odgovaraju ovom nazivu datoteke ako je navedeno. Dopušteni su zamenski znakovi kao što su *.pdf ili *faktura*. Neosetljivo je na mala i mala slova." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "filtriraj dokumenta prema ovom pravilu za imejl" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "poseduje ove tagove" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "ima sve ove oznake" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "nema ove oznake" + +#: documents/models.py:1087 msgid "has this document type" msgstr "poseduje ovaj tip dokumenta" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "nema ove tipove dokumenata" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "poseduje ovog korespondenta" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "nema ove dopisnike" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "ima ovu putanju za skladištenje" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "nema ove putanje za skladištenje" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "filtriranje prilagođenog polja upita" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "JSON-kodirani izraz upita za prilagođeno polje." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "dani za pomeranje rasporeda" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Broj dana za pomeranje zakazanog okidača." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "raspored je ponavljajući" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Ukoliko raspored treba da bude ponavljajući." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "kašnjenje ponavljanja rasporeda u danima" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Broj dana između ponavljajućih zakazanih okidača." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "polje za datum rasporeda" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Polje za proveru zakazanog okidača." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "prilagođeno polje za datum rasporeda" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "okidač radnog toka" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "okidači radnog toka" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "naslov imejla" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Naslov imejla može sadržati rezervisana mesta, pogledajte dokumentaciju." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "telo imejla" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Telo (poruka) imejla može sadržati rezervisana mesta, pogledajte dokumentaciju." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "imejl adrese primaoca" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Odredišne imejl adrese, odvojene zarezima." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "uključi dokument u imejl" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "url webhook-a" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "Odredišni URL za obaveštenje." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "koristi parametre" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "pošalji kao JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "parametri webhook-a" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Parametri za slanje sa URL-om webhook-a ukoliko telo nije korišćeno." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "telo webhook-a" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Telo za slanje sa URL-om webhook-a ukoliko parametri nisu korišćeni." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "zaglavlje webhook-a" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Zaglavlja za slanje sa URL-om webhook-a." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "uključi dokument u webhook" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Dodeljivanje" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Uklanjanje" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Imejl" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Veb zakačka" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Tip akcije radnog toka" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "dodeli naslov" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Dodelite naslov dokumenta, mora biti Jinja2 šablon, pogledajte dokumentaciju." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "dodeli ovu oznaku" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "dodeli ovaj tip dokumenta" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "dodeli ovog korespondenta" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "dodeli ovu putanju za skladištenje" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "dodeli ovog vlasnika" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "dodeli pravo pregleda svim korisnicima" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "dodeli pravo pregleda ovim grupama" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "dodeli pravo promene ovim korisnicima" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "dodeli pravo promene ovim grupama" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "dodeli ova prilagođena polja" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "prilagođene vrednosti polja" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Opcione vrednosti za dodelu za prilagođena polja." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "ukloni ove oznake" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "ukloni sve oznake" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "ukloni ove tipove dokumenta" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "ukloni sve tipove dokumenta" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "ukloni ove korespondente" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "ukloni sve korespondente" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "ukloni ove putanje za skladištenje" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "ukloni sve putanje za skladištenje" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "ukloni ove vlasnike" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "ukloni sve vlasnike" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "ukloni pravo pregleda za ove korisnike" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "ukloni pravo pregleda za ove grupe" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "ukloni prava promene za ove korisnike" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "ukloni prava promene za ove grupe" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "ukloni sva prava promene" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "ukloni ova prilagođena polja" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "ukloni sva prilagođena polja" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "imejl" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "veb zakačka" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "akcija radnog toka" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "akcije radnog toka" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "raspored" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "okidači" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "akcije" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "omogućeno" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "radni tok" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "tip okidača radnog toka" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "datum pokretanja" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "pokretanje radnog toka" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "pokretanje tokova rada" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Nevažeći regularni izraz: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Nevažeća boja." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Vrsta datoteke %(type)s nije podržana" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "ID prilagođenog polja mora biti ceo broj: %(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "Prilagođeno polje sa ID-em %(id)s ne postoji" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Prilagođena polja moraju biti lista celih brojeva ili objekat koji mapira identifikatore na vrednosti." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Neka prilagođena polja ne postoje ili su navedena dva puta." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Otkrivena je nevažeća promenljiva." @@ -1627,151 +1676,151 @@ msgstr "Postavlja mapiranje barkoda oznake" msgid "paperless application settings" msgstr "podešavanje paperless aplikacije" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Engleski (US)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arapski" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrički" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Beloruski" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bugarski" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalonski" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Češki" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Danski" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Nemački" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grčki" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Engleski (UK)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Španski" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Persijski" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finski" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Francuski" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Mađarski" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italijanski" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japanski" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Korejski" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luksemburški" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norveški" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Holandski" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Poljski" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugalski (Brazil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugalski" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumunski" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Ruski" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovački" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovenački" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Srpski" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Švedski" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turski" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukrajinski" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vijetnamski" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Kineski pojednostavljen" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Tradicionalni kineski" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx administracija" diff --git a/src/locale/sv_SE/LC_MESSAGES/django.po b/src/locale/sv_SE/LC_MESSAGES/django.po index 0b13c3745..2f1c9fd0c 100644 --- a/src/locale/sv_SE/LC_MESSAGES/django.po +++ b/src/locale/sv_SE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Dokument" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Värdet måste vara giltigt JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Ogiltigt sökordsuttryck för anpassade fält" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Ogiltig uttryckslista. Får inte vara tom." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Ogiltig logisk operator {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Maximalt antal frågevillkor överskrids." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} är inte ett giltigt anpassat fält." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} stöder inte frågan expr {expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Maximalt antal nästlade nivåer överskrids." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Anpassat fält hittades inte" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "ägare" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Ingen" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Valfritt ord" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Alla ord" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Exakt matchning" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Reguljära uttryck" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Ungefärligt ord" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Automatisk" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "namn" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "träff" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "matchande algoritm" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "är ej skiftlägeskänsligt" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "korrespondent" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "korrespondenter" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "färg" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "är inkorgsetikett" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Markerar denna etikett som en inkorgsetikett: Alla nyligen konsumerade dokument kommer att märkas med inkorgsetiketter." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etikett" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etiketter" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "dokumenttyp" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "dokumenttyper" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "sökväg" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "sökväg för lagring" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "sökvägar för lagring" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Okrypterad" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Krypterad med GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "titel" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "innehåll" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Dokumentets obearbetade textdata. Detta fält används främst för sökning." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME-typ" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "kontrollsumma" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Kontrollsumman för originaldokumentet." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arkivera kontrollsumma" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Kontrollsumman för det arkiverade dokumentet." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "antal sidor" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Antal sidor i dokumentet." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "skapad" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "ändrad" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "lagringstyp" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "tillagd" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "filnamn" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Nuvarande filnamn i lagringsutrymmet" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "arkivfilnamn" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Nuvarande arkivfilnamn i lagringsutrymmet" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "ursprungligt filnamn" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Det ursprungliga namnet på filen när den laddades upp" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "serienummer (arkivering)" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Placeringen av detta dokument i ditt fysiska dokumentarkiv." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "dokument" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "dokument" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Table" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Små kort" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Stora kort" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Titel" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Skapad" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Tillagd" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Taggar" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Korrespondent" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Dokumenttyp" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Sökväg för lagring" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Anteckning" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Ägare" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Delad" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Sidor" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "visa på kontrollpanelen" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "visa i sidofältet" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "sortera fält" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "sortera omvänt" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Visa sidstorlek" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Visa visningsläge" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Dokumentets visningsfält" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "sparad vy" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "sparade vyer" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "titel innehåller" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "innehåll innehåller" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN är" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "korrespondent är" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "dokumenttyp är" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "är i inkorgen" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "har etikett" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "har någon etikett" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "skapad före" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "skapad efter" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "skapat år är" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "skapad månad är" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "skapad dag är" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "tillagd före" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "tillagd efter" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "ändrad före" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "ändrad efter" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "har inte etikett" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "har inte ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "titel eller innehåll innehåller" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "fulltextfråga" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "mer som detta" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "har taggar i" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN större än" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN mindre än" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "sökväg till lagring är" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "har korrespondent i" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "har inte korrespondent i" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "har dokumenttyp i" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "har inte dokumenttyp i" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "har sökväg till lagring i" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "har inte sökväg till lagring i" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "ägare är" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "har ägare i" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "har inte ägare" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "har inte ägare i" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "har anpassat fältvärde" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "delas av mig" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "har anpassade fält" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "har anpassade fält i" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "har inte anpassade fält i" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "har inte anpassat fält" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "regeltyp" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "värde" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "filtrera regel" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "filtrera regler" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Konsumera fil" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" -msgstr "" +msgstr "Träna Classifier" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Uppgifts-ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID för uppgiften som kördes" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Bekräftad" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Om uppgiften bekräftas via frontend eller API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Uppgiftens filnamn" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Namn på filen som aktiviteten kördes för" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Uppgiftens namn" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Uppgiftsstatus" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Nuvarande tillstånd för uppgiften som körs" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Skapad Datumtid" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Datumtidsfält när aktivitetsresultatet skapades i UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Startad datumtid" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Datumfält när uppgiften startades i UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Slutförd datumtid" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Datumtidsfält när uppgiften slutfördes i UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Resultatdata" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "De data som returneras av uppgiften" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Anteckning för dokumentet" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "användare" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "anteckning" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "anteckningar" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arkiv" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Original" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "utgångsdatum" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "permalänk" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "dela länk" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "dela länkar" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Sträng" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Datum" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Boolean" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Heltal" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Flyttal" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Monetär" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Dokumentlänk" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Välj" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "datatyp" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "extra data" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Extra data för det anpassade fältet, till exempel välja alternativ" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "anpassat fält" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "anpassade fält" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "anpassad fältinstans" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "anpassade fältinstanser" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Konsumtion påbörjad" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Dokument tillagt" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Dokument uppdaterat" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Förbruka mapp" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Api-uppladdning" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Hämta mail" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Web UI" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Ändrad" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Anpassat fält" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "filtrera filnamn" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Konsumera endast dokument som matchar exakt detta filnamn, om det är angivet. Jokertecken som *.pdf eller *faktura* är tillåtna. Ej skiftlägeskänsligt." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "har denna dokumenttyp" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "har denna korrespondent" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "e-post ämne" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" -msgstr "skicka som JSON" - -#: documents/models.py:1168 -msgid "webhook parameters" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "e-post ämne" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "skicka som JSON" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Uppdrag" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Borttagning" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-post" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "tilldela titel" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "tilldela denna etikett" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "tilldela den här dokumenttypen" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "tilldela denna korrespondent" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "tilldela denna ägare" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "bevilja visningsbehörighet för dessa användare" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "bevilja behörighet att ändra till dessa användare" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "e-post" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "ordning" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Ogiltigt reguljärt uttryck: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Ogiltig färg." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Filtypen %(type)s stöds inte" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Ogiltig variabel upptäckt." @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Engelska (USA)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arabiska" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikaans" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Belarusiska" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bulgariska" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Kataloniska" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tjeckiska" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Danska" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Tyska" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Grekiska" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Engelska (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spanska" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Finska" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Franska" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Italienska" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japanska" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Koreanska" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Luxemburgiska" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norska" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Holländska" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polska" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portugisiska (Brasilien)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portugisiska" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Rumänska" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Ryska" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovakiska" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovenska" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Serbiska" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Svenska" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Turkiska" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukrainiska" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Kinesiska (förenklad)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Kinesiska traditionell" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx administration" diff --git a/src/locale/th_TH/LC_MESSAGES/django.po b/src/locale/th_TH/LC_MESSAGES/django.po index b05cecf22..5041cafa9 100644 --- a/src/locale/th_TH/LC_MESSAGES/django.po +++ b/src/locale/th_TH/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "เอกสาร" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "ค่า ต้องอยู่ในรูปแบบ JSON ที่ถูกต้อง" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "รูปแบบการค้นหาฟิลด์ที่กำหนดเองไม่ถูกต้อง" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "รายการคำสั่งไม่ถูกต้อง ต้องไม่เว้นว่าง" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "ตัวดำเนินการเชิงตรรกะ {op!r} ไม่ถูกต้อง" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "จำนวนเงื่อนไขในการค้นหาเกินกำหนด" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} ไม่ใช่ฟิลด์ที่กำหนดเองที่ถูกต้อง" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} ไม่รองรับรูปแบบการค้นหา {expr!r}" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "จำนวนการซ้อนเงื่อนไขสูงสุดเกินขีดจำกัด" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "ไม่พบฟิลด์ที่กำหนด" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "เจ้าของ" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "ไม่ใช้งาน" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "คำใดคำหนึ่ง" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "ทุกคำ" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "ตรงกันทุกประการ" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Regular expression" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "คำไม่ชัดเจน" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "อัตโนมัติ" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "ชื่อ" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "การจำแนก" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "วิธีการจำแนก" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "ไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "จาก" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "จาก" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "สี" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "แท็กแรกเข้า" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "แท็กเอกสารใหม่ทั้งหมดด้วยแท็กนี้ (แท็กแรกเข้า)" -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "แท็ก" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "แท็ก" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "ประเภทเอกสาร" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "ประเภทเอกสาร" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "พาธ" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "พาธจัดเก็บ" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "พาธจัดเก็บ" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "ไม่เข้ารหัส" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "เข้ารหัสด้วย GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "ชื่อ" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "เนื้อหา" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "เนื้อหาของเอกสารในรูปแบบข้อความล้วน ในการค้นหาข้อมูล เนื้อหาของเอกสาร จะถูกใช้ในการค้นเป็นหลัก" -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime type" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "checksum" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "ค่า checksum ของไฟล์เอกสารต้นฉบับ" -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "archive checksum" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "ค่า checksum ของเอกสารประเภทเก็บถาวร" -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "จำนวนหน้า" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "จำนวนหน้าทั้งหมดของเอกสาร" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "สร้างเมื่อ" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "แก้ไขเมื่อ" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "วิธีการจัดเก็บ" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "นำเข้าเมื่อ" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "ชื่อไฟล์" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "ชื่อไฟล์ในพื้นที่จัดเก็บ" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "ชื่อไฟล์ที่ถูกเก็บถาวร" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "ชื่อไฟล์ที่ถูกเก็บถาวรในพื้นที่จัดเก็บ" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "ชื่อไฟล์ต้นฉบับ" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "ชื่อไฟล์ต้นฉบับที่อัพโหลดเข้ามา" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "รหัสการจัดเก็บถาวร" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "ตำแหน่งเอกสารนี้ในสถานที่จัดเก็บจริง ๆ ของคุณ" -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "เอกสาร" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "เอกสาร" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "ตาราง" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "การ์ดขนาดเล็ก" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "การ์ดขนาดใหญ่" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "ชื่อ" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "วันที่สร้าง" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "วันที่เพิ่ม" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "แท็ก" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "คนเขียน" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "ประเภทเอกสาร" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "ตำแหน่งจัดเก็บ" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "หมายเหตุ" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "เจ้าของ" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "แชร์แล้ว" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "หน้า" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "แสดงบนหน้าหลัก" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "แสดงบนเมนูด้านข้าง" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "จัดเรียงตาม" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "เรียงย้อนกลับ" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "ขนาดการแสดงผลหน้า" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "โหมดการแสดงผล" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "ฟิลด์การแสดงผลของเอกสาร" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "การค้นที่เก็บไว้" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "การค้นที่เก็บไว้" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "ชื่อมีคำว่า" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "เนื้อหาเอกสารมีคำว่า" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN คือ" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "ผู้เขียนคือ" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "ประเภทเอกสารคือ" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "อยู่ในกล่องขาเข้า" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "มีแท็ก" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "มีแท็กใดก็ตาม" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "สร้างก่อน" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "สร้างหลังจาก" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "สร้างเมื่อปี" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "สร้างเมื่อเดือน" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "สร้างเมื่อวันที่" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "นำเข้าก่อน" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "นำเข้าหลังจาก" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "แก้ไขก่อน" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "แก้ไขหลังจาก" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "ไม่มีแท็ก" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "ไม่มี ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "ชื่อหรือเนื้อหามีคำว่า" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "ค้นจากทุกอย่าง" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "เอกสารที่คล้ายกัน" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "มีแท็ก" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN มากกว่า" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN น้อยกว่า" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "พาธจัดเก็บคือ" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "ผู้เขียนคือ" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "ไม่มีผู้เขียนเป็น" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "ประเภทเอกสารคือ" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "ไม่มีประเภทเป็น" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "พาธจัดเก็บคือ" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "ไม่มีพาธจัดเก็บเป็น" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "เจ้าของคือ" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "เจ้าของคือ" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "ไม่มีเจ้าของเป็น" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "ไม่มีเจ้าของเป็น" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "มีค่าฟิลด์ที่กำหนดเอง" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "แชร์โดยฉัน" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "มีฟิลด์ที่กำหนดเอง" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "มีฟิลด์ที่กำหนดเองใน" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "ไม่มีฟิลด์ที่กำหนดเอง" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "ไม่มีฟิลด์ที่กำหนดเองใน" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "การค้นหาฟิลด์ที่กำหนดเอง" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "สร้างขึ้นเพื่อ" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "สร้างขึ้นจาก" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "เพิ่มจาก" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "ชนิดของกฎ" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "ค่า" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "กฎในการค้น" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "กฎในการค้น" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "งานอัตโนมัติ" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "งานที่กำหนดเวลาไว้" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "งานแบบแมนนวล" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "ใช้ไฟล์" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "ตรวจสอบสุขภาพจิต" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "รหัสงาน" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID ของงานที่ทำ" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "จ่ายงานแล้ว" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "กรณีที่งานได้ถูกจ่ายผ่าน frontend หรือ API แล้ว" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "ชื่อไฟล์งาน" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "ชื่อไฟล์ที่นำไปประมวลผล" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "ชื่องาน" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "สถานะงาน" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "สถานะปัจจุบันของงานที่กำลังทำ" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "วันเวลาสร้าง" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "วันเวลาเมื่องานถูกสร้างในเขตเวลา UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "วันเวลาเริ่ม" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "วันเวลาเมื่อเริ่มทำงานในเขตเวลา UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "เสร็จเมื่อ" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "วันเวลาเมื่อทำงานเสร็จสิ้นในเขตเวลา UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "ผลลัพธ์" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "ข้อมูลจากการทำงาน" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "หมายเหตุสำหรับเอกสาร" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "ผู้ใช้งาน" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "หมายเหตุ" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "หมายเหตุ" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "เก็บถาวร" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "ต้นฉบับ" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "หมดอายุ" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "slug" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "แชร์​ลิงก์" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "แชร์​ลิงก์" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "ตัวอักษร" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Boolean" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Boolean" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Integer" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Float" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "จำนวนเงิน" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "ลิงก์ของเอกสาร" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "เลือก" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "ชนิดข้อมูล" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "ข้อมูลเพิ่มเติม" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "ข้อมูลเพิ่มเติมสำหรับฟิลด์ที่กำหนดเอง เช่น ตัวเลือก" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "ฟิลด์ที่กำหนดเอง" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "ฟิลด์ที่กำหนดเอง" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "ชุดข้อมูลฟิลด์ที่กำหนดเอง" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "เริ่มใช้งาน" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "เพิ่มเอกสารแล้ว" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "ปรับปรุงเอกสารแล้ว" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "โฟลเดอร์ใช้งาน" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "ประมวลผลเอกสารที่ชื่อไฟล์ตรงกับที่ระบุ (หากมี) โดยไม่สนใจอักษรพิมพ์ใหญ่-เล็ก และสามารถระบุแบบ wildcard ได้เช่น .pdf หรือ *invoice*" -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "หัวเรื่องของอีเมล" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "เนื้อหาอีเมล" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "อีเมล์ถึง" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "เนื้อความที่จะส่งพร้อมกับ URL ของ เว็บฮุคหากไม่ได้ใช้พารามิเตอร์" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "อีเมล" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "กำหนดแท็กนี้" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "กำหนดประเภทเอกสารนี้" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "กำหนดผู้เขียนนี้" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "ลบแท็กทั้งหมด" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "ลบประเภทเอกสารทั้งหมด" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "ลบที่จัดเก็บเอกสารทั้งหมด" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "อันดับ" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "เปิดใช้งานอยู่" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Regular expression ไม่ถูกต้อง : %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "สีไม่ถูกต้อง" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "ไม่รองรับไฟล์ประเภท %(type)s" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "ตรวจพบตัวแปรไม่ถูกต้อง" @@ -1626,151 +1675,151 @@ msgstr "" msgid "paperless application settings" msgstr "" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "ภาษาอังกฤษ (สหรัฐฯ)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "ภาษาอาหรับ" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "ภาษาอาฟรีกานส์" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "ภาษาเบลารุส" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "ภาษาคาตาลัน" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "ภาษาเช็ก" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "ภาษาเดนมาร์ก" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "ภาษาเยอรมัน" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "ภาษากรีก" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "ภาษาอังกฤษ (สหราชอาณาจักร)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "ภาษาสเปน" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "ภาษาฟินแลนด์" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "ภาษาฝรั่งเศส" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "ภาษาอิตาลี" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "ภาษาลักเซมเบิร์ก" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "ภาษานอร์เวย์" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "ภาษาดัตช์" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "ภาษาโปแลนด์" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "ภาษาโปรตุเกส (บราซิล)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "ภาษาโปรตุเกส" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "ภาษาโรมาเนีย" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "ภาษารัสเซีย" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "ภาษาสโลวาเกีย" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "ภาษาสโลเวเนีย" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "ภาษาเซอร์เบีย" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "ภาษาสวีเดน" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "ภาษาตุรกี" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "ภาษายูเครน" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "ภาษาจีน (ตัวย่อ)" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "การจัดการ Paperless-ngx" diff --git a/src/locale/tr_TR/LC_MESSAGES/django.po b/src/locale/tr_TR/LC_MESSAGES/django.po index 7f89d165d..43ca3acc9 100644 --- a/src/locale/tr_TR/LC_MESSAGES/django.po +++ b/src/locale/tr_TR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Belgeler" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Değer geçerli bir JSON olmalıdır." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Geçersiz özel alan sorgu ifadesi" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Geçersiz ifade listesi. Boş olmamalıdır." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Geçersiz mantıksal işleç {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "En çok sorgu koşulu sayısı aşıldı." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} geçerli bir özel alan değil." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type}, {expr!r} sorgu ifadesini desteklemiyor." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "En çok iç içe geçme izni aşıldı." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Özel alan bulunamadı" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "sahibi" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Hiçbiri" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Herhangi bir sözcük" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Tüm sözcükler" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Tam eşleşme" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Düzenli ifade" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Bulanık sözcük" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Otomatik" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "ad" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "eşleşme" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "eşleştirme algoritması" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "duyarsızdır" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "muhatap" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "muhataplar" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "renk" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "gelen kutusu etiketi" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Bu etiketi, gelen kutusu etiketi olarak işaretle: Yeni aktarılan tüm dokümanlar gelen kutusu etiketi ile etiketlendirileceklerdir." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "etiket" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "etiketler" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Kendinizi bir üst düğüm olarak seçemezsiniz." + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "Bir üst düğüm alt düğüm olarak seçilemez." + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "belge türü" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "belge türleri" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "dizin" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "depolama dizini" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "depolama dizinleri" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Şifresiz" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "GNU Gizlilik Koruması ile şifrelendirilmiştir" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "başlık" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "içerik" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Belgenin ham, yalnızca metin verileri. Bu alan öncelikle arama için kullanılır." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME türü" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "sağlama toplamı" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Özgün belgenin sağlama toplamı." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "arşiv sağlama toplamı" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Arşivlenen belgenin sağlama toplamı." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "sayfa sayısı" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Belgedeki sayfaların sayısı." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "oluşturuldu" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "değiştirildi" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "depolama türü" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "eklendi" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "dosya adı" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Depolamadaki geçerli dosya adı" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "arşiv dosya adı" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Depolamadaki geçerli arşiv dosya adı" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "özgün dosya adı" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Yüklendiğindeki özgün dosya adı" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "arşiv seri numarası" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Bu belgenin fiziksel belge arşivinizdeki konumu." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "belge" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "belgeler" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Tablo" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Küçük Kartlar" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Büyük kartlar" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Başlık" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Oluşturuldu" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Eklendi" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Künyeler" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Muhatap" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Döküman Türü" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Dosya yolu" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Not" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Sahip" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Paylaşıldı" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Sayfalar" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "gösterge tablosunda göster" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "kenar çubuğunda göster" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "alan ile sırala" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "tersine sırala" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Dosya boyutunu görüntüle" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Ekran kipini görüntüle" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Belge görüntüleme alanları" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "kaydedilen görünüm" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "kaydedilen görünümler" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "başlık şunu içerir" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "içerik şunu içerir" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN ise" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "muhatap" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "belge türü ise" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "gelen kutusunda" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "şu künyesi var" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "herhangi bir künyesi var" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "bu tarihten önce oluşturuldu" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "bu tarihten sonra oluşturuldu" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "oluşturma yılı" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "oluşturulma ayı" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "oluşturma günü" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "bu tarihten önce eklendi" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "bu tarihten sonra eklendi" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "bu tarihten önce değiştirldi" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "bu tarihten sonra değiştirldi" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "künyeye sahip değil" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "ASN yok" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "başlık veya içerik şunu içerir" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "tam metin sorgulama" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "benzer listele" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "içerisinde etiketine sahip" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN şundan daha büyük" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN şundan daha küçük" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "depolama yolu" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "şurada muhatabı var" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "şurada muhatabı yok" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "belge türüne şurada sahip" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "belge türüne şurada sahip değil" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "şurada depolama yolu mevcut" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "şurada depolama yolu yok" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "sahibi" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "şurada sahibi" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "sahipsiz" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "şurada sahibi yok" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "özel alan değeri var" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "benimle paylaşıldı" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "özel veritabanı alanı var" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "içinde özel alan var" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "özel saha tanımlı değil" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "özel alan yok" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "özel alan sorgusu" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "şuna oluşturuldu" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "şundan oluşturuldu" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "şuna eklendi" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "şundan eklendi" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "MIME türü şu" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "kural türü" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "değer" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "süzgeç kuralı" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "süzgeç kuralları" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Otomatik Görev" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Planlı Görev" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Elle Ayarlı Görev" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Dosyayı İşle" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Eğitim Sınıflandırıcısı" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Geçerliliği kontrol edin" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "İndeksleri Optimize Et" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "Görev Kimliği" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Çalıştırılan görev için olan Celery kimliği" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Onaylandı" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Eğer görev önyüz veya API tarafından onaylanırsa" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Görev Dosya Adı" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Görevin çalıştığı dosyanın adı" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Görev Adı" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Çalışan görevin adı" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Görev Durumu" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Çalıştırılan görevin mevcut durumu" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Oluşturulan Tarih ve Zaman" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Görev sonucunun UTC'de oluşturulduğu tarih ve saat alanı" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Başlangıç Tarihi ve Zamanı" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Görevin UTC saatine göre başlatıldığı tarih ve saat alanı" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Tamamlanma tarih ve saati" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Görev UTC saatine göre tamamlandığı tarih ve saat alanı" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Sonuç Verisi" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Görevin döndürdüğü veri" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Görev Tipi" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Çalıştırılan görev tipi" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Belge için olan not" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "kullanıcı" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "not" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "notlar" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Arşiv" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Özgün" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "süre sonu" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "kısaltma" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "bağlantıyı paylaş" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "bağlantıları paylaş" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Dizi" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Tarih" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Evet/Hayır" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Tam sayı" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Ondalıklı sayı" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Parasal" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Belge Bağlantısı" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Seç" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Uzun Metin" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "veri türü" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "ekstra veri" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Seçenekler gibi özel alan için ekstra veriler" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "özel alan" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "özel alanlar" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "özel alan değeri" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "özel alan değerleri" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "İşleme başladı" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Belge eklendi" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Belge Güncellendi" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Zamanlanmış" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "İşlenecek Klasör" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "API yükle" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Posta Yükle" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Web Arayüzü" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Değiştirilmiş" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Özel Alan" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "İş Akışı Tetikleyici Tipi" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "filtre yolu" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Belirtilmişse, yalnızca bu ile eşleşen bir yola sahip belgeler işlenecektir. * olarak belirtilen joker karakterlere izin verilir. Büyük/küçük harf duyarlı değildir." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "dosya adını süz" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Yalnızca belirtilmişse bu dosya adıyla tamamen eşleşen belgeleri tüketin. *.pdf veya *fatura* gibi joker karakterlere izin verilir. BÜYÜK/küçük harf duyarsızdır." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "bu posta kuralından belgeleri filtrele" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "bu etiket(ler) e sahiptir" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "bu etiket veya etiketlerine sahip" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "bu etiket veya etiketlerine sahip değil" + +#: documents/models.py:1087 msgid "has this document type" msgstr "bu doküman tipindedir" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "bu belge tür veya türlerine sahip değil" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "bu muhatap var" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "bu muhatablara sahip değil" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "bu depolama yoluna sahip" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "bu depolama dizin veya dizinleri mevcut değil" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "özel alanlara göre filtrele" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "JSON olarak verilmiş özel alan sorgu ifadesi." + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "kayma günlerini planla" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Program tetikleyicisini dengelemek için gereken gün sayısı." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "program tekrarlanıyor" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Programın tekrarlı olması gerekiyorsa." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "gün olarak tekrar eden plan gecikmesi" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Tekrarlayan zamanlama tetikleyicileri arasındaki gün sayısı." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "planlama tarih alanı" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Zamanlama tetikleyicisini kontrol etmek için kullanılan alan." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "program tarihi özel alanı" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "iş akışı tetikleyicisi" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "iş akışı tetikleyicileri" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "e-posta konusu" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "E-postanın konusu, bazı yer tutucular içerebilir, belgelere bakın." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "e-posta gövdesi" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "E-postanın konusu, bazı yer tutucular içerebilir, belgelere bakın." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "kime" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Hedef e-posta adresleri, virgülle ayrılmış." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "belgeyi e-postaya ekle" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "webhook url" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "Bildirimin hedef URL'si." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "parametreleri kullan" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "JSON formatında gönder" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "webhook parametreleri" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Gövde kullanılmadığında webhook URL'si ile birlikte gönderilecek parametreler." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "webhook gövdesi" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Parametreler kullanılmadığında webhook URL'si ile birlikte gönderilecek gövde." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "webhook başlıkları" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Webhook URL'si ile birlikte gönderilecek başlıklar." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "belgeyi webhook içine dahil et" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Atama" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Kaldırma" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "E-posta" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Webhook Aksiyon Tipi" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "başlık ata" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "Dökuman bașlıkları, Jinja2 taslağı olmalıdır, bakınız." -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "bu künyeyi ata" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "bu dosya türünü ata" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "bu muhatabı ata" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "bu depolama yolunu atayın" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "bu sahibi ata" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "bu kullanıcılara görüntüleme izni ver" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "bu gruplara görüntüleme izni ver" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "bu kullanıcılara değişiklik yapma izni ver" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "bu gruplara değişiklik yapma izni ver" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "bu özel alanları atayın" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "özel alan değerleri" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Özel alanlara atanacak isteğe bağlı değerler." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "bu künye(ler)i kaldır" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "tüm künyeleri kaldır" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "bu belge türlerini kaldırın" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "tüm belge tiplerini kaldırın" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "bu muhatapları kaldır" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "tüm muhatapları kaldır" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "bu depolama yollarını kaldırın" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "tüm depolama yollarını kaldırın" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "bu sahip(ler)i kaldır" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "tüm sahipleri kaldır" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "bu kullanıcıların görüntüleme izinlerini kaldır" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "bu grupların görüntüleme izinlerini kaldır" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "bu kullanıcıların değişiklik yapma izinlerini kaldır" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "bu grupların değişiklik yapma izinlerini kaldır" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "tüm izinleri kaldır" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "bu özel alanları kaldır" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "tüm özel alanları kaldır" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "e-posta" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "iş akışı eylemi" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "iş akışı eylemleri" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "sıra" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "tetikleyiciler" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "eylemler" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "etkin" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "iş akışı" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "iş akışı tetikleyici tipi" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "çalışma tarihi" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "iş akışı çalıştırma" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "iş akışı çalıştırma" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Hatalı düzenli ifade: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Geçersiz renk." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Dosya türü %(type)s desteklenmiyor" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "%(id)s özel alan numarası tam sayı olmalıdır" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "%(id)s numaralı özel alan mevcut değil" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "Özel alanlar bir tam sayı olarak veya bir nesne haritası numaraları olmalıdır." + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "Bazı õzel alan numaraları mevcut değil yada iki kez tanımlanmıș." + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Geçersiz değişken algılandı." @@ -1627,151 +1676,151 @@ msgstr "Etiket barkod eşleşmesini ayarlar" msgid "paperless application settings" msgstr "paperless uygulama ayarları" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "İngilizce (Birleşik Devletler)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Arapça" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrika dili" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Belarusça" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Bulgarca" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Katalanca" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Çekçe" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Danca" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Almanca" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Yunanca" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "İngilizce (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "İspanyolca" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Farsça" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Fince" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Fransızca" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Macarca" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "İtalyanca" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Japonca" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Korece" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Lüksemburgca" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norveçce" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Hollandaca" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Polonyaca" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Portekizce (Brezilya)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Portekizce" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Romence" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Rusça" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Slovakça" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Slovakça" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Sırpça" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "İsveççe" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Türkçe" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Ukraynaca" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Vietnamca" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Basitleştirilmiş Çince" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Geleneksel Çince" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx yönetimi" diff --git a/src/locale/uk_UA/LC_MESSAGES/django.po b/src/locale/uk_UA/LC_MESSAGES/django.po index 692153ac1..7f2f264cc 100644 --- a/src/locale/uk_UA/LC_MESSAGES/django.po +++ b/src/locale/uk_UA/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Документи" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." -msgstr "" +msgstr "Значення має бути коректним JSON." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "власник" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Немає" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Будь-яке слово" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Усі слова" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Точна відповідність" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Регулярний вираз" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Приблизний пошук" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Автоматично" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "назва" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "відповідність" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "алгоритм зіставляння" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "нечутливий до регістру" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "кореспондент" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "кореспонденти" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "колір" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "є вхідним тегом" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Позначає цей тег як вхідний тег: всі нещодавно додані документи будуть відмічені вхідними тегами." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "тег" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "теги" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "тип документа" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "типи документів" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "шлях" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "шлях зберігання" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "шляхи зберігання" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Без шифрування" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Зашифровано з допомогою GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "заголовок" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "вміст" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Необроблений текст документа. Це поле використовується в переважно для пошуку." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "тип MIME" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "контрольна сума" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Контрольна сума оригінального документа." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "контрольна сума архіву" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Контрольна сума архівованого документа." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "створено" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "змінено" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "тип сховища" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "додано" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "назва файлу" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Поточна назва файлу в сховищі" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "назва файлу архіву" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Поточна назва файлу архіву в сховищі" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "оригінальна назва файлу" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Оригінальна назва файлу, коли його було завантажено" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "архівний серійний номер (АСН)" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Позиція цього документа у вашому фізичному архіві документів." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "документ" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "документи" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Таблиця" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Малі Картки" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Великі Картки" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Назва" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Створено" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Додано" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Теги" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Кореспондент" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Тип документа" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Шлях до сховища" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Примітка" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Власник" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Спільні" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "показати на панелі" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "показати в бічній панелі" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "поле сортування" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "зворотнє сортування" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Розмір перегляду сторінок" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Режим відображення" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Відображення полів документу" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "збережене представлення" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "збережені представлення" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "заголовок містить" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "вміст містить" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "АСН" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "кореспондент" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "тип документа" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "у вхідних" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "має тег" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "має будь-який тег" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "створено до" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "створено після" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "рік створення" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "місяць створення" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "день створення" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "додано до" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "додано після" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "змінено до" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "змінено після" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "не має тегу" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "не має АСН" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "заголовок або вміст містить" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "повнотекстовий запит" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "шукати подібне" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "має теги в" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "АСН більший ніж" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "АСН менший ніж" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "шлях зберігання" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "має кореспондента в" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "не має кореспондента в" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "має тип документа в" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "не має типу документа в" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "має шлях до сховища в" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "не має шляху до сховища в" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "власник є" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "має власника в" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "не має власника" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "не має власника в" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "має значення спеціального поля" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "поділився я" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "має користувацькі поля" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "має користувацькі поля у" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "не має користувацьких полей у" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "не має користувацьких полей" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "тип правила" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "значення" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "правило фільтрації" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "правила фільтрації" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID завдання" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "Celery ID завдання, яке було запущено" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Підтверджено" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Якщо завдання підтверджено через вебінтерфейс або API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Назва файлу завдання" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Назва файлу, для якого було запущено завдання" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Назва завдання" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Стан завдання" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Поточний стан завдання в обробці" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Дата і час створення" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Дата і час створення результату виконання завдання в UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Дата і час початку" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Дата і час початку виконання завдання в UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Дата і час завершення" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Дата і час завершення виконання завдання в UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Дані результату" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Дані, які повернені завданням" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Примітка до документа" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "користувач" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "примітка" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "нотатки" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Архів" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Оригінал" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "закінчується" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "слаг" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "поділитися посиланням" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "поділитися посиланнями" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Текст" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL-адреса" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Дата" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "Логічне значення" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Ціле число" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "З рухомою комою" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Монетарний" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Посилання на документ" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Вибрати" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" msgstr "" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "тип даних" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "додаткові дані" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Додаткові дані для користувальницького поля, такі як варіанти вибору" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "користувацьке поле" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "користувацькі поля" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "спеціальний екземпляр поля" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "спеціальні екземпляри поля" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Використання розпочато" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Документ додано" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Документ оновлено" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Використати теку" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Завантаження API" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Завантаження пошти" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Тип тригера робочого процесу" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "шлях фільтра" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Використовувати лише документи зі шляхом, який відповідає цьому, якщо вказано. Допускаються символи підставлення, позначені як *. Регістр не враховується." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "фільтрувати за назвою файлу" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Обробляти лише ті документи, які повністю відповідають назві файлу, якщо вказано. Шаблони, такі як *.pdf чи *invoice* дозволені. Без врахування регістру." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "фільтрувати документи з цього правила пошти" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "має цей тег(и)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "" + +#: documents/models.py:1087 msgid "has this document type" msgstr "має тип документа" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "має кореспондента" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "" + +#: documents/models.py:1117 msgid "has this storage path" msgstr "" -#: documents/models.py:1060 -msgid "schedule offset days" +#: documents/models.py:1124 +msgid "does not have these storage path(s)" msgstr "" -#: documents/models.py:1063 -msgid "The number of days to offset the schedule trigger by." -msgstr "" - -#: documents/models.py:1068 -msgid "schedule is recurring" -msgstr "" - -#: documents/models.py:1071 -msgid "If the schedule should be recurring." -msgstr "" - -#: documents/models.py:1076 -msgid "schedule recurring delay in days" -msgstr "" - -#: documents/models.py:1080 -msgid "The number of days between recurring schedule triggers." -msgstr "" - -#: documents/models.py:1085 -msgid "schedule date field" -msgstr "" - -#: documents/models.py:1090 -msgid "The field to check for a schedule trigger." -msgstr "" - -#: documents/models.py:1099 -msgid "schedule date custom field" -msgstr "" - -#: documents/models.py:1103 -msgid "workflow trigger" -msgstr "тригер робочого процесу" - -#: documents/models.py:1104 -msgid "workflow triggers" -msgstr "тригери робочого процесу" - -#: documents/models.py:1112 -msgid "email subject" -msgstr "" - -#: documents/models.py:1116 -msgid "The subject of the email, can include some placeholders, see documentation." -msgstr "" - -#: documents/models.py:1122 -msgid "email body" -msgstr "" - -#: documents/models.py:1125 -msgid "The body (message) of the email, can include some placeholders, see documentation." +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" #: documents/models.py:1131 -msgid "emails to" +msgid "JSON-encoded custom field query expression." msgstr "" -#: documents/models.py:1134 -msgid "The destination email addresses, comma separated." +#: documents/models.py:1135 +msgid "schedule offset days" msgstr "" -#: documents/models.py:1140 -msgid "include document in email" +#: documents/models.py:1138 +msgid "The number of days to offset the schedule trigger by." +msgstr "" + +#: documents/models.py:1143 +msgid "schedule is recurring" +msgstr "" + +#: documents/models.py:1146 +msgid "If the schedule should be recurring." msgstr "" #: documents/models.py:1151 -msgid "webhook url" +msgid "schedule recurring delay in days" msgstr "" -#: documents/models.py:1154 -msgid "The destination URL for the notification." +#: documents/models.py:1155 +msgid "The number of days between recurring schedule triggers." msgstr "" -#: documents/models.py:1159 -msgid "use parameters" +#: documents/models.py:1160 +msgid "schedule date field" msgstr "" -#: documents/models.py:1164 -msgid "send as JSON" +#: documents/models.py:1165 +msgid "The field to check for a schedule trigger." msgstr "" -#: documents/models.py:1168 -msgid "webhook parameters" -msgstr "" - -#: documents/models.py:1171 -msgid "The parameters to send with the webhook URL if body not used." -msgstr "" - -#: documents/models.py:1175 -msgid "webhook body" +#: documents/models.py:1174 +msgid "schedule date custom field" msgstr "" #: documents/models.py:1178 +msgid "workflow trigger" +msgstr "тригер робочого процесу" + +#: documents/models.py:1179 +msgid "workflow triggers" +msgstr "тригери робочого процесу" + +#: documents/models.py:1187 +msgid "email subject" +msgstr "" + +#: documents/models.py:1191 +msgid "The subject of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1197 +msgid "email body" +msgstr "" + +#: documents/models.py:1200 +msgid "The body (message) of the email, can include some placeholders, see documentation." +msgstr "" + +#: documents/models.py:1206 +msgid "emails to" +msgstr "" + +#: documents/models.py:1209 +msgid "The destination email addresses, comma separated." +msgstr "" + +#: documents/models.py:1215 +msgid "include document in email" +msgstr "" + +#: documents/models.py:1226 +msgid "webhook url" +msgstr "" + +#: documents/models.py:1229 +msgid "The destination URL for the notification." +msgstr "" + +#: documents/models.py:1234 +msgid "use parameters" +msgstr "" + +#: documents/models.py:1239 +msgid "send as JSON" +msgstr "" + +#: documents/models.py:1243 +msgid "webhook parameters" +msgstr "" + +#: documents/models.py:1246 +msgid "The parameters to send with the webhook URL if body not used." +msgstr "" + +#: documents/models.py:1250 +msgid "webhook body" +msgstr "" + +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Призначення" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Видалення" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Ел. пошта" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Тип дії робочого процесу" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "призначити назву" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "призначити цей тег" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "призначити цей тип документа" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "призначити цього кореспондента" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "призначити шлях до сховища" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "призначити власника" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "надати дозволи на перегляд цим користувачам" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "надати дозволи на перегляд цим групам" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "надати дозволи на зміну цим користувачам" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "надати дозволи на зміну цим групам" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "призначити користувацькі поля" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "видалити тег(и)" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "видалити всі теги" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "видалити тип(и) документів" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "видалити всі типи документів" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "видалити кореспондента (-ів)" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "видалити всіх кореспондентів" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "видалити шлях для зберігання" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "видалити всі шляхи зберігання" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "видалити власника (-ів)" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "видалити всіх власників" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "видалити дозволи на перегляд для цих користувачів" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "видалити дозволи на перегляд для цих груп" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "видалити дозволи на редагування для цих користувачів" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "видалити дозволи на редагування для цих груп" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "видалити всі дозволи" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "видалити користувацькі поля" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "видалити всі користувацькі поля" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "дія робочого циклу" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "дії робочого циклу" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "порядок" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "тригери" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "дії" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "ввімкнено" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Неправильний регулярний вираз: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Неправильний колір." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Тип файлу %(type)s не підтримується" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Виявлено неправильну змінну." @@ -1627,151 +1676,151 @@ msgstr "" msgid "paperless application settings" msgstr "налаштування програми документообігу" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Англійська (США)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Арабська" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Африкаанс" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Білоруська" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Болгарська" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Каталонська" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Чеська" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Данська" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "Німецька" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Грецька" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Англійська (Велика Британія)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Іспанська" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Фінська" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Французька" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Угорська" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Італійська" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Японська" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Корейська" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Люксембурзька" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Норвезька" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Нідерландська" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Польська" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Португальська (Бразилія)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Португальська" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Румунська" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Російська" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Словацька" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Словенська" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Сербська" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Шведська" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Турецька" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Українська" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Китайська спрощена" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Адміністрування Paperless-ngx" diff --git a/src/locale/vi_VN/LC_MESSAGES/django.po b/src/locale/vi_VN/LC_MESSAGES/django.po index 6d627cade..35db0547c 100644 --- a/src/locale/vi_VN/LC_MESSAGES/django.po +++ b/src/locale/vi_VN/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "Tài liệu" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "Giá trị phải là JSON hợp lệ." -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "Biểu thức truy vấn trường tùy chỉnh không hợp lệ" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "Danh sách biểu thức không hợp lệ. Phải không rỗng." -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "Toán tử lô-gic không hợp lệ {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "Đã vượt quá số điều kiện truy vấn tối đa." -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} không phải là trường tùy chỉnh hợp lệ." -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} không hỗ trợ expr truy vấn{expr!r}." -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "Đã vượt quá độ sâu lồng nhau tối đa." -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Không tìm thấy trường tùy chỉnh" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "chủ sở hữu" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "Trống rỗng" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "Từ bất kỳ" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "Tất cả các từ" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "Khớp chính xác" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "Biểu thức chính quy" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "Từ mờ" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "Tự động" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "tên" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "phù hợp" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "thuật toán tìm kiếm" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "không nhạy cảm" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "tác giả" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "người viết" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "màu" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "là thẻ hộp thư đến" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "Đánh dấu thẻ này là thẻ hộp thư đến: Tất cả các tài liệu mới được đưa vào sẽ được gắn thẻ hộp thư đến." -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "gắn thẻ" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "thẻ" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "Không thể tự đặt thành thư mục gốc" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "loại tài liệu" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "các loại tài liệu" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "đường dẫn" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "đường dẫn lưu trữ" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "các đường dẫn lưu trữ" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "Không mã hoá" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "Được mã hóa với GNU Privacy Guard" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "chức danh" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "nội dung" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "Dữ liệu thô, chỉ có văn bản của tài liệu. Trường này được dùng trước hết để tìm kiếm." -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "kiểu MIME" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "giá trị tổng kiểm" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "Kiểm tra tổng của tài liệu gốc." -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "tổng kiểm tra lưu trữ" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "Tổng kiểm tra của tài liệu đã lưu trữ." -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "số trang" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "Số trang của tài liệu." -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "đã tạo" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "được sửa đổi" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "loại lưu trữ" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "đã thêm" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "tên tập tin" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "Tên tệp hiện thời trong kho lưu trữ" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "tên tệp lưu trữ" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "Tên tệp lưu trữ hiện tại trong bộ nhớ" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "tên tệp gốc" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "Tên gốc của tệp khi được tải lên" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "lưu trữ số sê-ri" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "Vị trí của tài liệu này trong kho lưu trữ tài liệu vật lý của bạn." -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "tài liệu" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "tài liệu" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "Bảng" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "Thẻ Nhỏ" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "Thẻ Lớn" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "Tựa đề" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "Đã tạo" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "Đã thêm" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "Thẻ" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "Phóng viên" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "Loại Tài liệu" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "Đường dẫn Lưu trữ" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "Lưu ý" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "Chủ sở hữu" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "Đã chia sẻ" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "Số trang" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "hiển thị trên bảng điều khiển" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "hiển thị trong thanh bên" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "trường sắp xếp" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "sắp xếp ngược" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "Xem kích thước trang" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "Xem chế độ hiển thị" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "Trường hiển thị tài liệu" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "dạng xem đã lưu" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "dạng xem đã lưu" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "tiêu đề có chứa" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "nội dung chứa" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN là" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "phóng viên là" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "loại tài liệu là" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "ở trong hộp thư đến" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "có thẻ" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "có bất kỳ thẻ nào" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "được tạo trước" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "được tạo sau" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "ngày tạo" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "tháng đã tạo là" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "ngày tạo là" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "được thêm trước" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "được thêm sau" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "được sửa đổi trước" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "được sửa đổi sau" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "không có thẻ" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "không có ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "tiêu đề hoặc nội dung chứa" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "truy vấn văn bản đầy đủ" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "như thế này" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "có thẻ trong" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN lớn hơn" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN nhỏ hơn" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "đường dẫn lưu trữ" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "có thông tín viên ở" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "không có cộng tác viên trong" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "có loại tài liệu trong" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "không có loại tài liệu trong" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "có đường dẫn lưu trữ trong" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "không có đường dẫn lưu trữ trong" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "chủ sở hữu là" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "có chủ sở hữu trong" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "không có chủ sở hữu" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "không có chủ sở hữu trong" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "có giá trị trường tùy chỉnh" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "được tôi chia sẻ" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "có trường tùy chỉnh" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "có trường tùy chỉnh trong" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "không có trường tùy chỉnh trong" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "không có trường tùy chỉnh" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "truy vấn trường tùy chỉnh" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "đã tạo tới" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "được tạo từ" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "đã thêm vào" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "được thêm từ" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "loại mime là" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "loại quy tắc" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "giá trị" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "quy tắc bộ lọc" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "quy tắc bộ lọc" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "Nhiệm vụ Tự động" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "Nhiệm vụ Đã lập lịch" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "Nhiệm vụ Thủ công" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "Sử dụng Tệp" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "Đào tạo Classifier" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "Kiểm Tra Sự Tỉnh Táo" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "Tối ưu hóa Chỉ mục" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "ID nhiệm vụ" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "ID Cần tây cho Nhiệm vụ đã chạy" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "Được công nhận" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "Nếu nhiệm vụ được xác nhận thông qua frontend hoặc API" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "Tên tệp Nhiệm vụ" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "Tên của tệp đã chạy Nhiệm vụ" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "Tên Nhiệm vụ" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "Tên của nhiệm vụ đã chạy" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "Trạng thái Nhiệm vụ" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "Trạng thái hiện tại của nhiệm vụ đang chạy" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "Ngày Giờ Tạo" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "Trường ngày giờ khi kết quả nhiệm vụ được tạo theo UTC" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "Ngày Giờ bắt đầu" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "Trường ngày giờ khi bắt đầu nhiệm vụ theo UTC" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "Ngày Giờ Hoàn thành" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "Trường ngày giờ khi nhiệm vụ hoàn tất theo UTC" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "Dữ liệu Kết quả" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "Dữ liệu được trả về bởi nhiệm vụ" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "Loại Nhiệm vụ" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "Loại nhiệm vụ đã chạy" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "Ghi chú cho tài liệu" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "người dùng" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "ghi chú" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "lưu ý" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "Lưu trữ" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "Gốc" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "hết hạn" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "con sên" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "chia sẻ liên kết" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "chia sẻ liên kết" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "Chuỗi" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "Ngày" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "kiểu Boolean" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "Số nguyên" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "Nổi" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "Tiền tệ" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "Nối kết Tài liệu" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "Chọn" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Văn bản dài" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "kiểu dữ liệu" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "dữ liệu bổ sung" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "Dữ liệu phụ cho trường tùy chỉnh, ví dụ như lựa chọn các tùy chọn" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "trường chuyên biệt" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "trường tùy chỉnh" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "phiên bản trường tùy chỉnh" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "phiên bản trường tùy chỉnh" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "Tiêu thụ Đã bắt đầu" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "Tài liệu đã thêm" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "Tài liệu được Cập nhật" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "Đã lên lịch" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "Sử dụng Thư mục" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Tải lên Api" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "Tìm nạp Thư" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "Giao diện Web" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "Đã sửa đổi" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "Trường tùy chỉnh" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "Loại kích hoạt quy trình làm việc" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "đường dẫn bộ lọc" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "Chỉ sử dụng tài liệu với đường dẫn trùng khớp với mục này nếu được chỉ định. Ký tự đại diện được chỉ định là * được phép. Phân biệt chữ hoa chữ thường." -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "tên tệp lọc" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "Chỉ dùng các tài liệu hoàn toàn khớp với tên tệp này nếu được chỉ ra. Đã cho phép các ký tự đại diện như *.pdf hoặc *hóa đơn*. Phân biệt chữ hoa chữ thường." -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "lọc tài liệu từ quy tắc thư này" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "có những thẻ này" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "có tất cả thẻ này" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "không có các thẻ này" + +#: documents/models.py:1087 msgid "has this document type" msgstr "có loại tài liệu này" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "không có các loại tài liệu này" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "có phóng viên này" -#: documents/models.py:1056 +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "không có các biên tập viên này" + +#: documents/models.py:1117 msgid "has this storage path" +msgstr "có đường dẫn lưu trữ này" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "không có các đường dẫn lưu trữ này" + +#: documents/models.py:1128 +msgid "filter custom field query" msgstr "" -#: documents/models.py:1060 +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "lịch trình ngày bù trừ" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "Số ngày để bù đắp bộ kích hoạt lịch trình." -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "lịch biểu lặp lại" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "Nếu lịch biểu nên được lặp lại." -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "lên lịch sự chậm trễ lặp lại trong ngày" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "Số ngày giữa các bộ kích hoạt lịch trình lặp lại." -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "trường lịch biểu ngày" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "Trường để kiểm tra bộ kích hoạt lịch trình." -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "trường tùy chỉnh ngày lịch biểu" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "bộ kích hoạt quy trình làm việc" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "quy trình kích hoạt" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "chủ đề email" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "Chủ đề của email, có thể bao gồm một số trình giữ chỗ, xem tài liệu." -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "nội dung email" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "Nội dung email có thể bao gồm một số trình giữ chỗ, xem tài liệu." -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "email đến" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "Các địa chỉ email đích, phân tách bằng dấu phẩy." -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "bao gồm tài liệu trong email" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "url của webhook" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "URL đích của thông báo." -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "dùng tham số" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "gửi ở dạng JSON" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "tham số webhook" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "Các tham số để gửi cùng với URL webhook nếu nội dung không được sử dụng." -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "nội dung webhook" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "Nội dung để gửi bằng URL webhook nếu các tham số không được sử dụng." -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "đầu đề webhook" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Tiêu đề để gửi bằng URL webhook." -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "bao gồm tài liệu trong webhook" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "Nhiệm vụ" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "Loại bỏ" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "Gửi Email" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "Loại Hành động Quy trình làm việc" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "gán tiêu đề" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." msgstr "" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "gán thẻ này" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "gán loại tài liệu này" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "gán phóng viên này" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "gán đường dẫn lưu trữ này" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "gán chủ sở hữu này" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "cấp quyền xem cho những người dùng này" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "cấp quyền xem cho những nhóm này" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "cho phép thay đổi quyền đối với những người dùng này" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "cho phép thay đổi các quyền đối với những nhóm này" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "gán các trường tùy chỉnh này" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "giá trị trường tùy chỉnh" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "Các giá trị tùy chọn để gán cho trường tùy chỉnh." -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "loại bỏ các thẻ này" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "loại bỏ tất cả các thẻ" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "xóa (các) loại tài liệu này" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "loại bỏ tất cả các loại tài liệu" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "xóa (các) phóng viên này" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "xóa tất cả người viết" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "loại bỏ (các) đường dẫn lưu trữ này" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "loại bỏ tất cả đường dẫn lưu trữ" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "xóa những chủ sở hữu này" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "loại bỏ tất cả chủ sở hữu" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "loại bỏ quyền xem của những người dùng này" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "loại bỏ quyền xem của những nhóm này" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "loại bỏ quyền thay đổi cho những người dùng này" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "loại bỏ quyền thay đổi cho những nhóm này" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "loại bỏ tất cả cấp phép" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "loại bỏ các trường tùy chỉnh này" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "loại bỏ tất cả trường tùy chỉnh" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "gửi email" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "hành động quy trình" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "hành động quy trình" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "đặt hàng" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "lẫy" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "hành động" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "cho phép" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "quy trình" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "loại kích hoạt quy trình làm việc" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "ngày chạy" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "dòng công việc chạy" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "dòng công việc chạy" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "Biểu thức chính quy không hợp lệ: %(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "Màu không hợp lệ." -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "Loại tập tin %(type)s không được hỗ trợ" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "Đã phát hiện biến số không hợp lệ." @@ -1627,151 +1676,151 @@ msgstr "Đặt ánh xạ mã vạch thẻ" msgid "paperless application settings" msgstr "thiết đặt ứng dụng không cần giấy tờ" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "Tiếng Anh (Mỹ)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "Tiếng Ả Rập" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Tiếng Afrikaans" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "Tiếng Belarus" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "Tiếng Bulgaria" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Tiếng Catalan" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "Tiếng Séc" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "Tiếng Đan Mạch" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "German" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Hy Lạp" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "Tiếng Anh (GB)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "Spanish" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "Ba Tư" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "Tiếng Phần Lan" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "Pháp" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "Tiếng Hungary" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "Tiếng Ý" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "Tiếng Nhật" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "Tiếng Hàn" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "Tiếng Luxembourg" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Tiếng Na Uy" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "Hà Lan" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "Tiếng Ba Lan" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "Tiếng Bồ Đào Nha (Brazil)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "Bồ Đào Nha" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "Tiếng Rumani" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "Tiếng Nga" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "Tiếng Slovak" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "Tiếng Slovenia" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "Tiếng Serbia" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "Thụy Điển" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "Tiếng Thổ Nhĩ Kỳ" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "Tiếng Ukraine" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "Tiếng Việt" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "Tiếng Hoa Giản thể" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "Tiếng Hoa Truyền thống" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Quản trị" diff --git a/src/locale/zh_CN/LC_MESSAGES/django.po b/src/locale/zh_CN/LC_MESSAGES/django.po index 19fb67230..3c8cd1744 100644 --- a/src/locale/zh_CN/LC_MESSAGES/django.po +++ b/src/locale/zh_CN/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "文档" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "值必须是有效的 JSON 格式。" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "无效的自定义字段查询表达式" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "无效的表达式列表。必须不为空。" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "无效的逻辑运算符 {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "超出查询条件的最大数量。" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} 不是一个有效的自定义字段。" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} 不支持查询表达式 {expr!r}。" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "超出最大嵌套深度。" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "Custom field not found" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "所有者" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "无" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "任意单词" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "所有单词" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "精确匹配" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "正则表达式" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "模糊单词" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "自动" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "名称" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "匹配" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "匹配算法" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "忽略大小写" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "联系人" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "联系人" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "颜色" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "收件箱标签" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "将此标签标记为收件箱标签:所有新处理的文档将被标记为收件箱标签。" -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "标签" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "标签" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "不能将自己设置为父级。" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "不能将父级设置为子级。" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "文档类型" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "文档类型" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "路径" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "保存路径" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "保存路径" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "未加密" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "使用 GNU 隐私防护(GPG)加密" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "标题" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "内容" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "文档的原始、纯文本的数据。这个字段主要用于搜索。" -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "mime 类型" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "校验和" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "原始文档的校验和。" -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "存档校验和" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "已归档文档的校验和。" -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "页数" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "文档页数。" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "已创建" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "已修改" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "存储类型" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "已添加" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "文件名" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "当前存储中的文件名" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "归档文件名" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "当前存储中的归档文件名" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "原文件名" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "文件上传时的原始名称" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "归档序列号" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "此文档在您的物理文档归档中的位置。" -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "文档" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "文档" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "表格" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "小卡片" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "大卡片" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "标题" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "创建时间" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "添加时间" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "标签" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "联系人" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "文档类型" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "保存路径" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "备注" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "所有者" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "已共享" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "ASN" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "页" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "在仪表盘显示" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "在侧边栏显示" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "排序字段" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "反向排序" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "查看页面大小" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "查看显示模式" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "文档显示字段" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "保存的视图" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "保存的视图" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "标题包含" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "内容包含" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "ASN 为" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "联系人是" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "文档类型是" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "在收件箱中" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "有标签" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "有任意标签" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "在此时间之前创建" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "在此时间之后创建" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "创建年份是" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "创建月份是" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "创建日期是" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "添加早于" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "添加晚于" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "修改早于" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "修改晚于" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "没有标签" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "没有 ASN" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "标题或内容包含" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "全文检索" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "如同这个" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "有标签包含于" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "ASN 大于" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "ASN 小于" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "保存路径" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "联系人" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "没有联系人" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "文档类型" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "没有文档类型" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "存储路径" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "没有存储路径" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "所有者是" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "已经设置所有者" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "没有所有者" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "没有所有者" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "添加自定义字段值" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "由我共享" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "具有自定义字段" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "具有自定义字段在其中" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "没有自定义字段在其中" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "没有自定义字段" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "自定义字段查询" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "创建到" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "创建于" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "添加到" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "添加于" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "MIME 类型是" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "规则类型" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "值" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "过滤规则" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "过滤规则" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "自动任务" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "计划任务" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "手动任务" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "处理文件" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "训练分类器" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "检查健全性" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "索引优化" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "任务ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "正在运行的任务的 Celery ID" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "已确认" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "如果任务通过前端或 API 确认" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "任务文件名" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "正在运行的任务文件名称" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "任务名称" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "运行的任务名称" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "任务状态" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "当前任务运行状态" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "创建日期" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "任务结果创建时间(UTC)" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "开始时间" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "任务开始时间(UTC)" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "完成时间" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "任务完成时间(UTC)" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "结果数据" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "任务返回的数据" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "任务类型" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "运行的任务类型" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "文档备注" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "用户" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "备注" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "备注" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "归档" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "原版" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "过期时间" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "缩写" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "分享链接" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "分享链接" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "字符串" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL链接" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "日期" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "布尔型" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "整数" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "浮点数" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "货币" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "文档链接" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "选择" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "Good" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "数据类型" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "额外数据" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "自定义字段的额外数据,例如选择选项" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "自定义字段" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "自定义字段" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "自定义字段实例" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "自定义字段实例" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "消费已开始" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "文档已添加" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "文档已更新" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "已预约" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "消费文件夹" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "Api上传" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "邮件获取" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "网页界面 (Web UI)" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "修改时间" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "自定义字段" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "工作流触发器类型" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "过滤路径" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "只消耗匹配了指定路径的文档。路径指定中允许使用*作为通配符,大小写不敏感。" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "过滤文件名" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "如果指定了文件名,只处理完全匹配此文件名的文档。允许使用通配符,如 *.pdf 或 *发票*。不区分大小写。" -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "从邮件规则中过滤文档" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" -msgstr "含有这些标签" +msgstr "有这些标签(s)" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "包含所有这些标签(s)" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "不包含这些标签(s)" + +#: documents/models.py:1087 msgid "has this document type" msgstr "具有此文档类型" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "不包含这些文档类型(s)" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "已有此联系人" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "不包含这些往来方(s)" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "使用此存储路径" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "不包含这些存储路径(s)" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "自定义字段查询筛选" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "JSON编码的自定义字段查询表达式。" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "预约偏移天数" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "预约触发器的偏移天数。" -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "预约已设定循环" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "预约是否应该循环。" -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "预约循环延迟天数" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "预约触发器循环间隔天数。" -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "预约日期字段" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "预约触发器对应的字段" -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "预约自定义日期字段" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "工作流触发器" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "工作流触发器" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "邮件主题" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "邮件主题,可以包含一些占位符,参见文档。" -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "邮件正文" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "邮件正文(内容),可以包含一些占位符,参见文档。" -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "发送邮件至" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "目标邮箱地址,以逗号分隔。" -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "在邮件中添加文档" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "webhook链接" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "通知的目标地址" -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "使用参数" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "以 JSON 格式发送" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "webhook 参数" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "要添加的webhook参数(不使用负载时)" -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "webhook负载" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "要添加的webhook负载(不使用参数时)" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "webhook标头" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "要添加的webhook标头" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "在webhook中添加文档" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "分配任务" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "移除" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "电子邮件" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "工作流动作类型" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "指定标题" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "分配文档标题,必须为 Jinja2 模板,参见文档。" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "分配此标签" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "分配此文档类型" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "分配此联系人" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "指定存储路径" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "指定所有者" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "为这些用户授予观看权限" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "为这些用户组授予观看权限" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "为这些用户授予修改权限" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "为这些用户组授予修改权限" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "分配这些自定义字段" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "自定义字段值" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "给自定义字段分配可选值。" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "移除这些标签" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "删除所有的标签" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "移除这些文档类型 " -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "移除所有文档类型" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "移除这些通讯员" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "移除所有通讯员" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "移除这些存储路径" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "移除全部存储路径" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "移除这些所有者 " -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "移除所有所有者" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "移除这些用户的查看权限" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "移除这些组的查看权限" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "为这些用户授予修改权限" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "移除这些组的更改权限" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "移除所有权限" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "移除这些自定义字段" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "移除所有自定义字段" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "电子邮件" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "工作流动作" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "工作流动作" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "排序" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "触发器" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "动作" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "已启用" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "工作流" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "工作流触发类型" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "运行日期" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "工作流运行" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "工作流运行" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "无效的正则表达式:%(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "无效的颜色" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "不支持文件类型 %(type)s" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "自定义字段 id 必须是数字:%(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "自定义字段 id %(id)s 不存在" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "自定义字段必须为整数列表,或是一个将ID映射到值的对象。" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "部分自定义字段不存在或重复指定。" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "检测到无效变量。" @@ -1428,12 +1477,12 @@ msgstr "无法解析 URI {value},缺少网络位置或路径" #: documents/validators.py:36 msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}" -msgstr "" +msgstr "URI 格式 '{parts.scheme}' 不支持。支持的格式有:{', '.join(allowed_schemes)}" #: documents/validators.py:45 #, python-brace-format msgid "Unable to parse URI {value}" -msgstr "" +msgstr "无法解析 URI {value}" #: paperless/apps.py:11 msgid "Paperless" @@ -1581,197 +1630,197 @@ msgstr "应用程序图标" #: paperless/models.py:197 msgid "Enables barcode scanning" -msgstr "" +msgstr "启用条形码扫描" #: paperless/models.py:203 msgid "Enables barcode TIFF support" -msgstr "" +msgstr "启用条形码TIFF 支持" #: paperless/models.py:209 msgid "Sets the barcode string" -msgstr "" +msgstr "设置条形码序列" #: paperless/models.py:217 msgid "Retains split pages" -msgstr "" +msgstr "获取拆分页面" #: paperless/models.py:223 msgid "Enables ASN barcode" -msgstr "" +msgstr "启用 ASN 条形码" #: paperless/models.py:229 msgid "Sets the ASN barcode prefix" -msgstr "" +msgstr "设置 ASN 条码前缀" #: paperless/models.py:237 msgid "Sets the barcode upscale factor" -msgstr "" +msgstr "设置条形码的放大比例" #: paperless/models.py:244 msgid "Sets the barcode DPI" -msgstr "" +msgstr "设置条形码 DPI" #: paperless/models.py:251 msgid "Sets the maximum pages for barcode" -msgstr "" +msgstr "设置条形码最大页面" #: paperless/models.py:258 msgid "Enables tag barcode" -msgstr "" +msgstr "启用条形码标签" #: paperless/models.py:264 msgid "Sets the tag barcode mapping" -msgstr "" +msgstr "设置标签条码映射" #: paperless/models.py:269 msgid "paperless application settings" msgstr "无纸应用设置" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "英语(美国)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "阿拉伯语" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "Afrikaans 荷兰语" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "白俄罗斯语" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "保加利亚语" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "Catalan 加泰罗尼亚语" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "捷克语" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "丹麦语" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "德语" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "Greek 希腊语" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "英语(英国)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "西班牙语" -#: paperless/settings.py:784 -msgid "Persian" -msgstr "" - #: paperless/settings.py:785 +msgid "Persian" +msgstr "波斯文" + +#: paperless/settings.py:786 msgid "Finnish" msgstr "已完成" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "法语" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "匈牙利语" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "意大利语" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "日语" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "韩语" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "卢森堡语" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "Norwegian 挪威语" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "荷兰语" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "波兰语" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "葡萄牙语 (巴西)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "葡萄牙语" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "罗马尼亚语" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "俄语" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "斯洛伐克语" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "斯洛语尼亚语" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "塞尔维亚语" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "瑞典语" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "土耳其语" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "乌克兰语" -#: paperless/settings.py:805 -msgid "Vietnamese" -msgstr "" - #: paperless/settings.py:806 +msgid "Vietnamese" +msgstr "越南语" + +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "简体中文" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "繁体中文" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx 管理" diff --git a/src/locale/zh_TW/LC_MESSAGES/django.po b/src/locale/zh_TW/LC_MESSAGES/django.po index 72dbb8728..a10f31bc9 100644 --- a/src/locale/zh_TW/LC_MESSAGES/django.po +++ b/src/locale/zh_TW/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: paperless-ngx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-14 03:21+0000\n" -"PO-Revision-Date: 2025-09-14 03:22\n" +"POT-Creation-Date: 2025-12-12 17:41+0000\n" +"PO-Revision-Date: 2025-12-12 17:44\n" "Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" @@ -21,1172 +21,1221 @@ msgstr "" msgid "Documents" msgstr "文件" -#: documents/filters.py:386 +#: documents/filters.py:395 msgid "Value must be valid JSON." msgstr "參數值必須是有效的 JSON。" -#: documents/filters.py:405 +#: documents/filters.py:414 msgid "Invalid custom field query expression" msgstr "無效的自訂欄位查詢表達式" -#: documents/filters.py:415 +#: documents/filters.py:424 msgid "Invalid expression list. Must be nonempty." msgstr "無效的表達式列表,不能為空。" -#: documents/filters.py:436 +#: documents/filters.py:445 msgid "Invalid logical operator {op!r}" msgstr "無效的邏輯運算符 {op!r}" -#: documents/filters.py:450 +#: documents/filters.py:459 msgid "Maximum number of query conditions exceeded." msgstr "超過查詢條件的最大數量。" -#: documents/filters.py:515 +#: documents/filters.py:524 msgid "{name!r} is not a valid custom field." msgstr "{name!r} 不是有效的自訂欄位。" -#: documents/filters.py:552 +#: documents/filters.py:561 msgid "{data_type} does not support query expr {expr!r}." msgstr "{data_type} 不支援查詢表達式 {expr!r}。" -#: documents/filters.py:660 +#: documents/filters.py:669 documents/models.py:135 msgid "Maximum nesting depth exceeded." msgstr "超過最大巢狀深度。" -#: documents/filters.py:845 +#: documents/filters.py:854 msgid "Custom field not found" msgstr "找不到自訂欄位" -#: documents/models.py:36 documents/models.py:735 +#: documents/models.py:38 documents/models.py:768 msgid "owner" msgstr "擁有者" -#: documents/models.py:53 documents/models.py:950 +#: documents/models.py:55 documents/models.py:983 msgid "None" msgstr "無" -#: documents/models.py:54 documents/models.py:951 +#: documents/models.py:56 documents/models.py:984 msgid "Any word" msgstr "任何字詞" -#: documents/models.py:55 documents/models.py:952 +#: documents/models.py:57 documents/models.py:985 msgid "All words" msgstr "所有字詞" -#: documents/models.py:56 documents/models.py:953 +#: documents/models.py:58 documents/models.py:986 msgid "Exact match" msgstr "完全符合" -#: documents/models.py:57 documents/models.py:954 +#: documents/models.py:59 documents/models.py:987 msgid "Regular expression" msgstr "正則表達式" -#: documents/models.py:58 documents/models.py:955 +#: documents/models.py:60 documents/models.py:988 msgid "Fuzzy word" msgstr "模糊字詞" -#: documents/models.py:59 +#: documents/models.py:61 msgid "Automatic" msgstr "自動" -#: documents/models.py:62 documents/models.py:423 documents/models.py:1451 +#: documents/models.py:64 documents/models.py:456 documents/models.py:1526 #: paperless_mail/models.py:23 paperless_mail/models.py:143 msgid "name" msgstr "名稱" -#: documents/models.py:64 documents/models.py:1019 +#: documents/models.py:66 documents/models.py:1052 msgid "match" msgstr "比對" -#: documents/models.py:67 documents/models.py:1022 +#: documents/models.py:69 documents/models.py:1055 msgid "matching algorithm" msgstr "比對演算法" -#: documents/models.py:72 documents/models.py:1027 +#: documents/models.py:74 documents/models.py:1060 msgid "is insensitive" msgstr "不區分大小寫" -#: documents/models.py:95 documents/models.py:146 +#: documents/models.py:97 documents/models.py:170 msgid "correspondent" msgstr "關聯方" -#: documents/models.py:96 +#: documents/models.py:98 msgid "correspondents" msgstr "關聯方" -#: documents/models.py:100 +#: documents/models.py:102 msgid "color" msgstr "顏色" -#: documents/models.py:103 +#: documents/models.py:107 msgid "is inbox tag" msgstr "收件匣標籤" -#: documents/models.py:106 +#: documents/models.py:110 msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgstr "將此標籤設為收件匣標籤:所有新處理的文件將自動標記收件匣標籤。" -#: documents/models.py:112 +#: documents/models.py:116 msgid "tag" msgstr "標籤" -#: documents/models.py:113 documents/models.py:184 +#: documents/models.py:117 documents/models.py:208 msgid "tags" msgstr "標籤" -#: documents/models.py:118 documents/models.py:166 +#: documents/models.py:123 +msgid "Cannot set itself as parent." +msgstr "無法將項目設為自己的父項。" + +#: documents/models.py:125 +msgid "Cannot set parent to a descendant." +msgstr "無法將父項目設為其子代項目。" + +#: documents/models.py:142 documents/models.py:190 msgid "document type" msgstr "文件類型" -#: documents/models.py:119 +#: documents/models.py:143 msgid "document types" msgstr "文件類型" -#: documents/models.py:124 +#: documents/models.py:148 msgid "path" msgstr "路徑" -#: documents/models.py:128 documents/models.py:155 +#: documents/models.py:152 documents/models.py:179 msgid "storage path" msgstr "儲存路徑" -#: documents/models.py:129 +#: documents/models.py:153 msgid "storage paths" msgstr "儲存路徑" -#: documents/models.py:136 +#: documents/models.py:160 msgid "Unencrypted" msgstr "未加密" -#: documents/models.py:137 +#: documents/models.py:161 msgid "Encrypted with GNU Privacy Guard" msgstr "已使用 GNU Privacy Guard 進行加密" -#: documents/models.py:158 +#: documents/models.py:182 msgid "title" msgstr "標題" -#: documents/models.py:170 documents/models.py:649 +#: documents/models.py:194 documents/models.py:682 msgid "content" msgstr "內容" -#: documents/models.py:173 +#: documents/models.py:197 msgid "The raw, text-only data of the document. This field is primarily used for searching." msgstr "文件的原始純文字資料。此欄位主要用於搜尋。" -#: documents/models.py:178 +#: documents/models.py:202 msgid "mime type" msgstr "MIME 類型" -#: documents/models.py:188 +#: documents/models.py:212 msgid "checksum" msgstr "總和檢查碼" -#: documents/models.py:192 +#: documents/models.py:216 msgid "The checksum of the original document." msgstr "原始文件的總和檢查碼。" -#: documents/models.py:196 +#: documents/models.py:220 msgid "archive checksum" msgstr "封存總和檢查碼" -#: documents/models.py:201 +#: documents/models.py:225 msgid "The checksum of the archived document." msgstr "封存文件的總和檢查碼。" -#: documents/models.py:205 +#: documents/models.py:229 msgid "page count" msgstr "頁數" -#: documents/models.py:212 +#: documents/models.py:236 msgid "The number of pages of the document." msgstr "文件的頁數。" -#: documents/models.py:217 documents/models.py:655 documents/models.py:693 -#: documents/models.py:765 documents/models.py:824 +#: documents/models.py:241 documents/models.py:688 documents/models.py:726 +#: documents/models.py:798 documents/models.py:857 msgid "created" msgstr "建立日期" -#: documents/models.py:223 +#: documents/models.py:247 msgid "modified" msgstr "修改日期" -#: documents/models.py:230 +#: documents/models.py:254 msgid "storage type" msgstr "儲存空間類型" -#: documents/models.py:238 +#: documents/models.py:262 msgid "added" msgstr "新增日期" -#: documents/models.py:245 +#: documents/models.py:269 msgid "filename" msgstr "檔案名稱" -#: documents/models.py:251 +#: documents/models.py:275 msgid "Current filename in storage" msgstr "儲存中的現行檔案名稱" -#: documents/models.py:255 +#: documents/models.py:279 msgid "archive filename" msgstr "封存檔案名稱" -#: documents/models.py:261 +#: documents/models.py:285 msgid "Current archive filename in storage" msgstr "儲存空間中,目前的封存檔案名稱" -#: documents/models.py:265 +#: documents/models.py:289 msgid "original filename" msgstr "原始檔案名稱" -#: documents/models.py:271 +#: documents/models.py:295 msgid "The original name of the file when it was uploaded" msgstr "上傳時的原始檔案名稱" -#: documents/models.py:278 +#: documents/models.py:302 msgid "archive serial number" msgstr "封存序號" -#: documents/models.py:288 +#: documents/models.py:312 msgid "The position of this document in your physical document archive." msgstr "實體紙本文件的存放位置。" -#: documents/models.py:294 documents/models.py:666 documents/models.py:720 -#: documents/models.py:1494 +#: documents/models.py:318 documents/models.py:699 documents/models.py:753 +#: documents/models.py:1569 msgid "document" msgstr "文件" -#: documents/models.py:295 +#: documents/models.py:319 msgid "documents" msgstr "文件" -#: documents/models.py:404 +#: documents/models.py:437 msgid "Table" msgstr "表格" -#: documents/models.py:405 +#: documents/models.py:438 msgid "Small Cards" msgstr "小卡片" -#: documents/models.py:406 +#: documents/models.py:439 msgid "Large Cards" msgstr "大卡片" -#: documents/models.py:409 +#: documents/models.py:442 msgid "Title" msgstr "標題" -#: documents/models.py:410 documents/models.py:971 +#: documents/models.py:443 documents/models.py:1004 msgid "Created" msgstr "建立時間" -#: documents/models.py:411 documents/models.py:970 +#: documents/models.py:444 documents/models.py:1003 msgid "Added" msgstr "新增時間" -#: documents/models.py:412 +#: documents/models.py:445 msgid "Tags" msgstr "標籤" -#: documents/models.py:413 +#: documents/models.py:446 msgid "Correspondent" msgstr "關聯方" -#: documents/models.py:414 +#: documents/models.py:447 msgid "Document Type" msgstr "文件類型" -#: documents/models.py:415 +#: documents/models.py:448 msgid "Storage Path" msgstr "儲存路徑" -#: documents/models.py:416 +#: documents/models.py:449 msgid "Note" msgstr "註解" -#: documents/models.py:417 +#: documents/models.py:450 msgid "Owner" msgstr "擁有者" -#: documents/models.py:418 +#: documents/models.py:451 msgid "Shared" msgstr "已共用" -#: documents/models.py:419 +#: documents/models.py:452 msgid "ASN" msgstr "封存序號 (ASN)" -#: documents/models.py:420 +#: documents/models.py:453 msgid "Pages" msgstr "頁面" -#: documents/models.py:426 +#: documents/models.py:459 msgid "show on dashboard" msgstr "顯示於資訊主頁" -#: documents/models.py:429 +#: documents/models.py:462 msgid "show in sidebar" msgstr "顯示於側邊欄" -#: documents/models.py:433 +#: documents/models.py:466 msgid "sort field" msgstr "排序欄位" -#: documents/models.py:438 +#: documents/models.py:471 msgid "sort reverse" msgstr "倒序排序" -#: documents/models.py:441 +#: documents/models.py:474 msgid "View page size" msgstr "頁面大小" -#: documents/models.py:449 +#: documents/models.py:482 msgid "View display mode" msgstr "顯示模式" -#: documents/models.py:456 +#: documents/models.py:489 msgid "Document display fields" msgstr "文件顯示欄位" -#: documents/models.py:463 documents/models.py:526 +#: documents/models.py:496 documents/models.py:559 msgid "saved view" msgstr "已儲存的檢視表" -#: documents/models.py:464 +#: documents/models.py:497 msgid "saved views" msgstr "已儲存的檢視表" -#: documents/models.py:472 +#: documents/models.py:505 msgid "title contains" msgstr "標題包含" -#: documents/models.py:473 +#: documents/models.py:506 msgid "content contains" msgstr "內容包含" -#: documents/models.py:474 +#: documents/models.py:507 msgid "ASN is" msgstr "封存序號 (ASN) 為" -#: documents/models.py:475 +#: documents/models.py:508 msgid "correspondent is" msgstr "關聯方為" -#: documents/models.py:476 +#: documents/models.py:509 msgid "document type is" msgstr "文件類型為" -#: documents/models.py:477 +#: documents/models.py:510 msgid "is in inbox" msgstr "在收件匣內" -#: documents/models.py:478 +#: documents/models.py:511 msgid "has tag" msgstr "具有標籤" -#: documents/models.py:479 +#: documents/models.py:512 msgid "has any tag" msgstr "具有任何標籤" -#: documents/models.py:480 +#: documents/models.py:513 msgid "created before" msgstr "建立於該日期之前" -#: documents/models.py:481 +#: documents/models.py:514 msgid "created after" msgstr "建立於該日期之後" -#: documents/models.py:482 +#: documents/models.py:515 msgid "created year is" msgstr "建立年份為" -#: documents/models.py:483 +#: documents/models.py:516 msgid "created month is" msgstr "建立月份為" -#: documents/models.py:484 +#: documents/models.py:517 msgid "created day is" msgstr "建立日期為" -#: documents/models.py:485 +#: documents/models.py:518 msgid "added before" msgstr "加入於該日期之前" -#: documents/models.py:486 +#: documents/models.py:519 msgid "added after" msgstr "加入於該日期之後" -#: documents/models.py:487 +#: documents/models.py:520 msgid "modified before" msgstr "修改於該日期之前" -#: documents/models.py:488 +#: documents/models.py:521 msgid "modified after" msgstr "修改於該日期之後" -#: documents/models.py:489 +#: documents/models.py:522 msgid "does not have tag" msgstr "沒有標籤" -#: documents/models.py:490 +#: documents/models.py:523 msgid "does not have ASN" msgstr "沒有封存序號 (ASN)" -#: documents/models.py:491 +#: documents/models.py:524 msgid "title or content contains" msgstr "標題或內容包含" -#: documents/models.py:492 +#: documents/models.py:525 msgid "fulltext query" msgstr "全文查詢" -#: documents/models.py:493 +#: documents/models.py:526 msgid "more like this" msgstr "其他類似內容" -#: documents/models.py:494 +#: documents/models.py:527 msgid "has tags in" msgstr "標籤包含" -#: documents/models.py:495 +#: documents/models.py:528 msgid "ASN greater than" msgstr "封存序號 (ASN) 大於" -#: documents/models.py:496 +#: documents/models.py:529 msgid "ASN less than" msgstr "封存序號 (ASN) 小於" -#: documents/models.py:497 +#: documents/models.py:530 msgid "storage path is" msgstr "儲存路徑為" -#: documents/models.py:498 +#: documents/models.py:531 msgid "has correspondent in" msgstr "關聯方包含" -#: documents/models.py:499 +#: documents/models.py:532 msgid "does not have correspondent in" msgstr "關聯方不包含" -#: documents/models.py:500 +#: documents/models.py:533 msgid "has document type in" msgstr "文件類型包含" -#: documents/models.py:501 +#: documents/models.py:534 msgid "does not have document type in" msgstr "文件類型不包含" -#: documents/models.py:502 +#: documents/models.py:535 msgid "has storage path in" msgstr "儲存路徑包含" -#: documents/models.py:503 +#: documents/models.py:536 msgid "does not have storage path in" msgstr "儲存路徑不包含" -#: documents/models.py:504 +#: documents/models.py:537 msgid "owner is" msgstr "擁有者為" -#: documents/models.py:505 +#: documents/models.py:538 msgid "has owner in" msgstr "擁有者包含" -#: documents/models.py:506 +#: documents/models.py:539 msgid "does not have owner" msgstr "沒有擁有者" -#: documents/models.py:507 +#: documents/models.py:540 msgid "does not have owner in" msgstr "擁有者不包含" -#: documents/models.py:508 +#: documents/models.py:541 msgid "has custom field value" msgstr "具有自訂欄位值" -#: documents/models.py:509 +#: documents/models.py:542 msgid "is shared by me" msgstr "由我共用" -#: documents/models.py:510 +#: documents/models.py:543 msgid "has custom fields" msgstr "具有自訂欄位" -#: documents/models.py:511 +#: documents/models.py:544 msgid "has custom field in" msgstr "自訂欄位包含" -#: documents/models.py:512 +#: documents/models.py:545 msgid "does not have custom field in" msgstr "自訂欄位不包含" -#: documents/models.py:513 +#: documents/models.py:546 msgid "does not have custom field" msgstr "沒有自訂欄位" -#: documents/models.py:514 +#: documents/models.py:547 msgid "custom fields query" msgstr "自訂欄位查詢" -#: documents/models.py:515 +#: documents/models.py:548 msgid "created to" msgstr "建立日期至" -#: documents/models.py:516 +#: documents/models.py:549 msgid "created from" msgstr "建立日期從" -#: documents/models.py:517 +#: documents/models.py:550 msgid "added to" msgstr "新增日期至" -#: documents/models.py:518 +#: documents/models.py:551 msgid "added from" msgstr "新增日期從" -#: documents/models.py:519 +#: documents/models.py:552 msgid "mime type is" msgstr "MIME 類型為" -#: documents/models.py:529 +#: documents/models.py:562 msgid "rule type" msgstr "規則類型" -#: documents/models.py:531 +#: documents/models.py:564 msgid "value" msgstr "參數值" -#: documents/models.py:534 +#: documents/models.py:567 msgid "filter rule" msgstr "篩選規則" -#: documents/models.py:535 +#: documents/models.py:568 msgid "filter rules" msgstr "篩選規則" -#: documents/models.py:559 +#: documents/models.py:592 msgid "Auto Task" msgstr "自動任務" -#: documents/models.py:560 +#: documents/models.py:593 msgid "Scheduled Task" msgstr "排程任務" -#: documents/models.py:561 +#: documents/models.py:594 msgid "Manual Task" msgstr "手動任務" -#: documents/models.py:564 +#: documents/models.py:597 msgid "Consume File" msgstr "處理文件" -#: documents/models.py:565 +#: documents/models.py:598 msgid "Train Classifier" msgstr "分類器訓練" -#: documents/models.py:566 +#: documents/models.py:599 msgid "Check Sanity" msgstr "系統健全性檢查" -#: documents/models.py:567 +#: documents/models.py:600 msgid "Index Optimize" msgstr "索引最佳化" -#: documents/models.py:572 +#: documents/models.py:605 msgid "Task ID" msgstr "任務 ID" -#: documents/models.py:573 +#: documents/models.py:606 msgid "Celery ID for the Task that was run" msgstr "已執行任務的 Celery ID" -#: documents/models.py:578 +#: documents/models.py:611 msgid "Acknowledged" msgstr "已確認" -#: documents/models.py:579 +#: documents/models.py:612 msgid "If the task is acknowledged via the frontend or API" msgstr "如果任務已由前端 / API 確認" -#: documents/models.py:585 +#: documents/models.py:618 msgid "Task Filename" msgstr "任務檔案名稱" -#: documents/models.py:586 +#: documents/models.py:619 msgid "Name of the file which the Task was run for" msgstr "執行任務的目標檔案名稱" -#: documents/models.py:593 +#: documents/models.py:626 msgid "Task Name" msgstr "任務名稱" -#: documents/models.py:594 +#: documents/models.py:627 msgid "Name of the task that was run" msgstr "執行任務的名稱" -#: documents/models.py:601 +#: documents/models.py:634 msgid "Task State" msgstr "任務狀態" -#: documents/models.py:602 +#: documents/models.py:635 msgid "Current state of the task being run" msgstr "目前執行中任務的狀態" -#: documents/models.py:608 +#: documents/models.py:641 msgid "Created DateTime" msgstr "建立時間" -#: documents/models.py:609 +#: documents/models.py:642 msgid "Datetime field when the task result was created in UTC" msgstr "任務結果建立時的 UTC 日期時間欄位" -#: documents/models.py:615 +#: documents/models.py:648 msgid "Started DateTime" msgstr "開始時間" -#: documents/models.py:616 +#: documents/models.py:649 msgid "Datetime field when the task was started in UTC" msgstr "任務開始時的 UTC 日期時間欄位" -#: documents/models.py:622 +#: documents/models.py:655 msgid "Completed DateTime" msgstr "完成時間" -#: documents/models.py:623 +#: documents/models.py:656 msgid "Datetime field when the task was completed in UTC" msgstr "任務完成時的 UTC 日期時間欄位" -#: documents/models.py:629 +#: documents/models.py:662 msgid "Result Data" msgstr "結果資料" -#: documents/models.py:631 +#: documents/models.py:664 msgid "The data returned by the task" msgstr "任務回傳的資料" -#: documents/models.py:639 +#: documents/models.py:672 msgid "Task Type" msgstr "任務類型" -#: documents/models.py:640 +#: documents/models.py:673 msgid "The type of task that was run" msgstr "執行任務的種類" -#: documents/models.py:651 +#: documents/models.py:684 msgid "Note for the document" msgstr "文件註解" -#: documents/models.py:675 +#: documents/models.py:708 msgid "user" msgstr "使用者" -#: documents/models.py:680 +#: documents/models.py:713 msgid "note" msgstr "註解" -#: documents/models.py:681 +#: documents/models.py:714 msgid "notes" msgstr "註解" -#: documents/models.py:689 +#: documents/models.py:722 msgid "Archive" msgstr "封存" -#: documents/models.py:690 +#: documents/models.py:723 msgid "Original" msgstr "原始檔" -#: documents/models.py:701 paperless_mail/models.py:75 +#: documents/models.py:734 paperless_mail/models.py:75 msgid "expiration" msgstr "過期時間" -#: documents/models.py:708 +#: documents/models.py:741 msgid "slug" msgstr "縮寫" -#: documents/models.py:740 +#: documents/models.py:773 msgid "share link" msgstr "共用連結" -#: documents/models.py:741 +#: documents/models.py:774 msgid "share links" msgstr "共用連結" -#: documents/models.py:753 +#: documents/models.py:786 msgid "String" msgstr "字串" -#: documents/models.py:754 +#: documents/models.py:787 msgid "URL" msgstr "URL" -#: documents/models.py:755 +#: documents/models.py:788 msgid "Date" msgstr "日期" -#: documents/models.py:756 +#: documents/models.py:789 msgid "Boolean" msgstr "布林值" -#: documents/models.py:757 +#: documents/models.py:790 msgid "Integer" msgstr "整數" -#: documents/models.py:758 +#: documents/models.py:791 msgid "Float" msgstr "浮點數" -#: documents/models.py:759 +#: documents/models.py:792 msgid "Monetary" msgstr "貨幣" -#: documents/models.py:760 +#: documents/models.py:793 msgid "Document Link" msgstr "文件連結" -#: documents/models.py:761 +#: documents/models.py:794 msgid "Select" msgstr "選取" -#: documents/models.py:762 +#: documents/models.py:795 msgid "Long Text" -msgstr "" +msgstr "長文字" -#: documents/models.py:774 +#: documents/models.py:807 msgid "data type" msgstr "資料類型" -#: documents/models.py:781 +#: documents/models.py:814 msgid "extra data" msgstr "額外資料" -#: documents/models.py:785 +#: documents/models.py:818 msgid "Extra data for the custom field, such as select options" msgstr "自訂欄位的額外資料,例如選項清單" -#: documents/models.py:791 +#: documents/models.py:824 msgid "custom field" msgstr "自訂欄位" -#: documents/models.py:792 +#: documents/models.py:825 msgid "custom fields" msgstr "自訂欄位" -#: documents/models.py:892 +#: documents/models.py:925 msgid "custom field instance" msgstr "自訂實例" -#: documents/models.py:893 +#: documents/models.py:926 msgid "custom field instances" msgstr "自訂實例" -#: documents/models.py:958 +#: documents/models.py:991 msgid "Consumption Started" msgstr "開始處理" -#: documents/models.py:959 +#: documents/models.py:992 msgid "Document Added" msgstr "文件新增日期" -#: documents/models.py:960 +#: documents/models.py:993 msgid "Document Updated" msgstr "已更新文件" -#: documents/models.py:961 +#: documents/models.py:994 msgid "Scheduled" msgstr "已排程" -#: documents/models.py:964 +#: documents/models.py:997 msgid "Consume Folder" msgstr "處理資料夾" -#: documents/models.py:965 +#: documents/models.py:998 msgid "Api Upload" msgstr "API 上傳" -#: documents/models.py:966 +#: documents/models.py:999 msgid "Mail Fetch" msgstr "郵件擷取" -#: documents/models.py:967 +#: documents/models.py:1000 msgid "Web UI" msgstr "網頁介面" -#: documents/models.py:972 +#: documents/models.py:1005 msgid "Modified" msgstr "已修改" -#: documents/models.py:973 +#: documents/models.py:1006 msgid "Custom Field" msgstr "自訂欄位" -#: documents/models.py:976 +#: documents/models.py:1009 msgid "Workflow Trigger Type" msgstr "工作流程觸發器類型" -#: documents/models.py:988 +#: documents/models.py:1021 msgid "filter path" msgstr "篩選路徑" -#: documents/models.py:993 +#: documents/models.py:1026 msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive." msgstr "若有指定,只會處理路徑符合此條件的文件。可使用 * 作為萬用字元。不區分大小寫。" -#: documents/models.py:1000 +#: documents/models.py:1033 msgid "filter filename" msgstr "篩選檔案名稱" -#: documents/models.py:1005 paperless_mail/models.py:200 +#: documents/models.py:1038 paperless_mail/models.py:200 msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." msgstr "若有指定,只會處理檔名完全符合此條件的文件。可使用萬用字元,如 *.pdf 或 *invoice*。不區分大小寫。" -#: documents/models.py:1016 +#: documents/models.py:1049 msgid "filter documents from this mail rule" msgstr "依此郵件規則篩選文件" -#: documents/models.py:1032 +#: documents/models.py:1065 msgid "has these tag(s)" msgstr "具有這些標籤" -#: documents/models.py:1040 +#: documents/models.py:1072 +msgid "has all of these tag(s)" +msgstr "標籤符合" + +#: documents/models.py:1079 +msgid "does not have these tag(s)" +msgstr "標籤不包含" + +#: documents/models.py:1087 msgid "has this document type" msgstr "具有此文件類型" -#: documents/models.py:1048 +#: documents/models.py:1094 +msgid "does not have these document type(s)" +msgstr "文件類型不包含" + +#: documents/models.py:1102 msgid "has this correspondent" msgstr "具有此關聯方" -#: documents/models.py:1056 -msgid "has this storage path" -msgstr "" +#: documents/models.py:1109 +msgid "does not have these correspondent(s)" +msgstr "關聯方不包含" -#: documents/models.py:1060 +#: documents/models.py:1117 +msgid "has this storage path" +msgstr "使用此儲存路徑" + +#: documents/models.py:1124 +msgid "does not have these storage path(s)" +msgstr "儲存路徑不包含" + +#: documents/models.py:1128 +msgid "filter custom field query" +msgstr "篩選自訂欄位查詢" + +#: documents/models.py:1131 +msgid "JSON-encoded custom field query expression." +msgstr "JSON-encoded 的自訂欄位查詢表達式。" + +#: documents/models.py:1135 msgid "schedule offset days" msgstr "排程調整天數" -#: documents/models.py:1063 +#: documents/models.py:1138 msgid "The number of days to offset the schedule trigger by." msgstr "排程觸發器的調整天數。" -#: documents/models.py:1068 +#: documents/models.py:1143 msgid "schedule is recurring" msgstr "排程是否重複執行" -#: documents/models.py:1071 +#: documents/models.py:1146 msgid "If the schedule should be recurring." msgstr "排程是否重複執行。" -#: documents/models.py:1076 +#: documents/models.py:1151 msgid "schedule recurring delay in days" msgstr "重複排程的延後天數" -#: documents/models.py:1080 +#: documents/models.py:1155 msgid "The number of days between recurring schedule triggers." msgstr "排程觸發器的重複間隔天數。" -#: documents/models.py:1085 +#: documents/models.py:1160 msgid "schedule date field" msgstr "排程日期欄位" -#: documents/models.py:1090 +#: documents/models.py:1165 msgid "The field to check for a schedule trigger." msgstr "用於檢查排程觸發器的欄位。" -#: documents/models.py:1099 +#: documents/models.py:1174 msgid "schedule date custom field" msgstr "排程日期自訂欄位" -#: documents/models.py:1103 +#: documents/models.py:1178 msgid "workflow trigger" msgstr "工作流程觸發器" -#: documents/models.py:1104 +#: documents/models.py:1179 msgid "workflow triggers" msgstr "工作流程觸發器" -#: documents/models.py:1112 +#: documents/models.py:1187 msgid "email subject" msgstr "電子郵件主旨" -#: documents/models.py:1116 +#: documents/models.py:1191 msgid "The subject of the email, can include some placeholders, see documentation." msgstr "電子郵件的主旨,可包含預留位置,詳見說明文件。" -#: documents/models.py:1122 +#: documents/models.py:1197 msgid "email body" msgstr "電子郵件正文" -#: documents/models.py:1125 +#: documents/models.py:1200 msgid "The body (message) of the email, can include some placeholders, see documentation." msgstr "電子郵件的正文(郵件內文),可包含預留位置,詳見說明文件。" -#: documents/models.py:1131 +#: documents/models.py:1206 msgid "emails to" msgstr "收件者" -#: documents/models.py:1134 +#: documents/models.py:1209 msgid "The destination email addresses, comma separated." msgstr "電子郵件的目的地位址(如要新增多個收件者,請在每個電子郵件地址之間加上半形逗號)。" -#: documents/models.py:1140 +#: documents/models.py:1215 msgid "include document in email" msgstr "在電子郵件中附加文件" -#: documents/models.py:1151 +#: documents/models.py:1226 msgid "webhook url" msgstr "Webhook URL" -#: documents/models.py:1154 +#: documents/models.py:1229 msgid "The destination URL for the notification." msgstr "通知的目的地 URL。" -#: documents/models.py:1159 +#: documents/models.py:1234 msgid "use parameters" msgstr "使用設定參數" -#: documents/models.py:1164 +#: documents/models.py:1239 msgid "send as JSON" msgstr "以 JSON 傳送" -#: documents/models.py:1168 +#: documents/models.py:1243 msgid "webhook parameters" msgstr "Webhook 參數" -#: documents/models.py:1171 +#: documents/models.py:1246 msgid "The parameters to send with the webhook URL if body not used." msgstr "當未提供 Body 時,將透過 Webhook URL 傳送參數。" -#: documents/models.py:1175 +#: documents/models.py:1250 msgid "webhook body" msgstr "Webhook Body" -#: documents/models.py:1178 +#: documents/models.py:1253 msgid "The body to send with the webhook URL if parameters not used." msgstr "當未提供參數時,將透過 Webhook URL 傳送 Body。" -#: documents/models.py:1182 +#: documents/models.py:1257 msgid "webhook headers" msgstr "Webhook 標頭" -#: documents/models.py:1185 +#: documents/models.py:1260 msgid "The headers to send with the webhook URL." msgstr "Webhook URL 需附帶的標頭 (Header)。" -#: documents/models.py:1190 +#: documents/models.py:1265 msgid "include document in webhook" msgstr "在 Webhook 中附加文件" -#: documents/models.py:1201 +#: documents/models.py:1276 msgid "Assignment" msgstr "指派" -#: documents/models.py:1205 +#: documents/models.py:1280 msgid "Removal" msgstr "移除" -#: documents/models.py:1209 documents/templates/account/password_reset.html:15 +#: documents/models.py:1284 documents/templates/account/password_reset.html:15 msgid "Email" msgstr "電子郵件" -#: documents/models.py:1213 +#: documents/models.py:1288 msgid "Webhook" msgstr "Webhook" -#: documents/models.py:1217 +#: documents/models.py:1292 msgid "Workflow Action Type" msgstr "工作流程動作類型" -#: documents/models.py:1223 +#: documents/models.py:1298 msgid "assign title" msgstr "指派標題" -#: documents/models.py:1227 +#: documents/models.py:1302 msgid "Assign a document title, must be a Jinja2 template, see documentation." -msgstr "" +msgstr "指派文件標題,必須是 Jinja2 模板,詳見說明文件。" -#: documents/models.py:1235 paperless_mail/models.py:274 +#: documents/models.py:1310 paperless_mail/models.py:274 msgid "assign this tag" msgstr "指派標籤" -#: documents/models.py:1244 paperless_mail/models.py:282 +#: documents/models.py:1319 paperless_mail/models.py:282 msgid "assign this document type" msgstr "指派文件類型" -#: documents/models.py:1253 paperless_mail/models.py:296 +#: documents/models.py:1328 paperless_mail/models.py:296 msgid "assign this correspondent" msgstr "指派此關聯方" -#: documents/models.py:1262 +#: documents/models.py:1337 msgid "assign this storage path" msgstr "指派儲存路徑" -#: documents/models.py:1271 +#: documents/models.py:1346 msgid "assign this owner" msgstr "指派擁有者" -#: documents/models.py:1278 +#: documents/models.py:1353 msgid "grant view permissions to these users" msgstr "授予這些使用者檢視權限" -#: documents/models.py:1285 +#: documents/models.py:1360 msgid "grant view permissions to these groups" msgstr "授予這些群組檢視權限" -#: documents/models.py:1292 +#: documents/models.py:1367 msgid "grant change permissions to these users" msgstr "授予這些使用者修改權限" -#: documents/models.py:1299 +#: documents/models.py:1374 msgid "grant change permissions to these groups" msgstr "授予這些群組修改權限" -#: documents/models.py:1306 +#: documents/models.py:1381 msgid "assign these custom fields" msgstr "指派這些自訂欄位" -#: documents/models.py:1310 +#: documents/models.py:1385 msgid "custom field values" msgstr "自訂欄位值" -#: documents/models.py:1314 +#: documents/models.py:1389 msgid "Optional values to assign to the custom fields." msgstr "指派於自訂欄位的選用參數值。" -#: documents/models.py:1323 +#: documents/models.py:1398 msgid "remove these tag(s)" msgstr "移除這些標籤" -#: documents/models.py:1328 +#: documents/models.py:1403 msgid "remove all tags" msgstr "移除全部標籤" -#: documents/models.py:1335 +#: documents/models.py:1410 msgid "remove these document type(s)" msgstr "移除這些文件類型" -#: documents/models.py:1340 +#: documents/models.py:1415 msgid "remove all document types" msgstr "移除全部文件類型" -#: documents/models.py:1347 +#: documents/models.py:1422 msgid "remove these correspondent(s)" msgstr "移除關聯方" -#: documents/models.py:1352 +#: documents/models.py:1427 msgid "remove all correspondents" msgstr "移除全部關聯方" -#: documents/models.py:1359 +#: documents/models.py:1434 msgid "remove these storage path(s)" msgstr "移除這些儲存路徑" -#: documents/models.py:1364 +#: documents/models.py:1439 msgid "remove all storage paths" msgstr "移除全部儲存路徑" -#: documents/models.py:1371 +#: documents/models.py:1446 msgid "remove these owner(s)" msgstr "移除這些擁有者" -#: documents/models.py:1376 +#: documents/models.py:1451 msgid "remove all owners" msgstr "移除全部擁有者" -#: documents/models.py:1383 +#: documents/models.py:1458 msgid "remove view permissions for these users" msgstr "移除這些使用者的檢視權限" -#: documents/models.py:1390 +#: documents/models.py:1465 msgid "remove view permissions for these groups" msgstr "移除這些群組的檢視權限" -#: documents/models.py:1397 +#: documents/models.py:1472 msgid "remove change permissions for these users" msgstr "移除這些使用者的修改權限" -#: documents/models.py:1404 +#: documents/models.py:1479 msgid "remove change permissions for these groups" msgstr "移除這些群組的修改權限" -#: documents/models.py:1409 +#: documents/models.py:1484 msgid "remove all permissions" msgstr "移除全部權限" -#: documents/models.py:1416 +#: documents/models.py:1491 msgid "remove these custom fields" msgstr "移除這些自訂欄位" -#: documents/models.py:1421 +#: documents/models.py:1496 msgid "remove all custom fields" msgstr "移除全部自訂欄位" -#: documents/models.py:1430 +#: documents/models.py:1505 msgid "email" msgstr "電子郵件" -#: documents/models.py:1439 +#: documents/models.py:1514 msgid "webhook" msgstr "Webhook" -#: documents/models.py:1443 +#: documents/models.py:1518 msgid "workflow action" msgstr "工作流程動作" -#: documents/models.py:1444 +#: documents/models.py:1519 msgid "workflow actions" msgstr "工作流程動作" -#: documents/models.py:1453 paperless_mail/models.py:145 +#: documents/models.py:1528 paperless_mail/models.py:145 msgid "order" msgstr "排序" -#: documents/models.py:1459 +#: documents/models.py:1534 msgid "triggers" msgstr "觸發器" -#: documents/models.py:1466 +#: documents/models.py:1541 msgid "actions" msgstr "動作" -#: documents/models.py:1469 paperless_mail/models.py:154 +#: documents/models.py:1544 paperless_mail/models.py:154 msgid "enabled" msgstr "已啟用" -#: documents/models.py:1480 +#: documents/models.py:1555 msgid "workflow" msgstr "工作流程" -#: documents/models.py:1484 +#: documents/models.py:1559 msgid "workflow trigger type" msgstr "工作流程觸發器類型" -#: documents/models.py:1498 +#: documents/models.py:1573 msgid "date run" msgstr "執行日期" -#: documents/models.py:1504 +#: documents/models.py:1579 msgid "workflow run" msgstr "執行工作流程" -#: documents/models.py:1505 +#: documents/models.py:1580 msgid "workflow runs" msgstr "執行工作流程" -#: documents/serialisers.py:139 -#, python-format -msgid "Invalid regular expression: %(error)s" -msgstr "無效的正則表達式:%(error)s" - -#: documents/serialisers.py:565 +#: documents/serialisers.py:640 msgid "Invalid color." msgstr "無效的顏色。" -#: documents/serialisers.py:1700 +#: documents/serialisers.py:1826 #, python-format msgid "File type %(type)s not supported" msgstr "不支援檔案類型 %(type)s" -#: documents/serialisers.py:1794 +#: documents/serialisers.py:1870 +#, python-format +msgid "Custom field id must be an integer: %(id)s" +msgstr "自定欄位 ID 必須是整數:%(id)s" + +#: documents/serialisers.py:1877 +#, python-format +msgid "Custom field with id %(id)s does not exist" +msgstr "自定欄位 ID %(id)s 不存在" + +#: documents/serialisers.py:1894 documents/serialisers.py:1904 +msgid "Custom fields must be a list of integers or an object mapping ids to values." +msgstr "自定欄位必須為整數列表,或是將 ID 對應到數值的物件。" + +#: documents/serialisers.py:1899 +msgid "Some custom fields don't exist or were specified twice." +msgstr "部分自定欄位不存在或重復指定。" + +#: documents/serialisers.py:2014 msgid "Invalid variable detected." msgstr "偵測到無效的變數。" @@ -1627,151 +1676,151 @@ msgstr "設定標籤條碼對應" msgid "paperless application settings" msgstr "Paperless 應用程式設定" -#: paperless/settings.py:772 +#: paperless/settings.py:773 msgid "English (US)" msgstr "英文(美國)" -#: paperless/settings.py:773 +#: paperless/settings.py:774 msgid "Arabic" msgstr "阿拉伯文" -#: paperless/settings.py:774 +#: paperless/settings.py:775 msgid "Afrikaans" msgstr "南非荷蘭文" -#: paperless/settings.py:775 +#: paperless/settings.py:776 msgid "Belarusian" msgstr "白俄羅斯文" -#: paperless/settings.py:776 +#: paperless/settings.py:777 msgid "Bulgarian" msgstr "保加利亞文" -#: paperless/settings.py:777 +#: paperless/settings.py:778 msgid "Catalan" msgstr "加泰羅尼亞文" -#: paperless/settings.py:778 +#: paperless/settings.py:779 msgid "Czech" msgstr "捷克文" -#: paperless/settings.py:779 +#: paperless/settings.py:780 msgid "Danish" msgstr "丹麥文" -#: paperless/settings.py:780 +#: paperless/settings.py:781 msgid "German" msgstr "德文" -#: paperless/settings.py:781 +#: paperless/settings.py:782 msgid "Greek" msgstr "希臘文" -#: paperless/settings.py:782 +#: paperless/settings.py:783 msgid "English (GB)" msgstr "英文(英國)" -#: paperless/settings.py:783 +#: paperless/settings.py:784 msgid "Spanish" msgstr "西班牙文" -#: paperless/settings.py:784 +#: paperless/settings.py:785 msgid "Persian" msgstr "波斯文" -#: paperless/settings.py:785 +#: paperless/settings.py:786 msgid "Finnish" msgstr "芬蘭文" -#: paperless/settings.py:786 +#: paperless/settings.py:787 msgid "French" msgstr "法文" -#: paperless/settings.py:787 +#: paperless/settings.py:788 msgid "Hungarian" msgstr "匈牙利文" -#: paperless/settings.py:788 +#: paperless/settings.py:789 msgid "Italian" msgstr "義大利文" -#: paperless/settings.py:789 +#: paperless/settings.py:790 msgid "Japanese" msgstr "日文" -#: paperless/settings.py:790 +#: paperless/settings.py:791 msgid "Korean" msgstr "韓文" -#: paperless/settings.py:791 +#: paperless/settings.py:792 msgid "Luxembourgish" msgstr "盧森堡文" -#: paperless/settings.py:792 +#: paperless/settings.py:793 msgid "Norwegian" msgstr "挪威文" -#: paperless/settings.py:793 +#: paperless/settings.py:794 msgid "Dutch" msgstr "荷蘭文" -#: paperless/settings.py:794 +#: paperless/settings.py:795 msgid "Polish" msgstr "波蘭文" -#: paperless/settings.py:795 +#: paperless/settings.py:796 msgid "Portuguese (Brazil)" msgstr "葡萄牙文(巴西)" -#: paperless/settings.py:796 +#: paperless/settings.py:797 msgid "Portuguese" msgstr "葡萄牙文" -#: paperless/settings.py:797 +#: paperless/settings.py:798 msgid "Romanian" msgstr "羅馬尼亞文" -#: paperless/settings.py:798 +#: paperless/settings.py:799 msgid "Russian" msgstr "俄文" -#: paperless/settings.py:799 +#: paperless/settings.py:800 msgid "Slovak" msgstr "斯洛伐克文" -#: paperless/settings.py:800 +#: paperless/settings.py:801 msgid "Slovenian" msgstr "斯洛維尼亞文" -#: paperless/settings.py:801 +#: paperless/settings.py:802 msgid "Serbian" msgstr "塞爾維亞文" -#: paperless/settings.py:802 +#: paperless/settings.py:803 msgid "Swedish" msgstr "瑞典文" -#: paperless/settings.py:803 +#: paperless/settings.py:804 msgid "Turkish" msgstr "土耳其文" -#: paperless/settings.py:804 +#: paperless/settings.py:805 msgid "Ukrainian" msgstr "烏克蘭文" -#: paperless/settings.py:805 +#: paperless/settings.py:806 msgid "Vietnamese" msgstr "越南文" -#: paperless/settings.py:806 +#: paperless/settings.py:807 msgid "Chinese Simplified" msgstr "簡體中文" -#: paperless/settings.py:807 +#: paperless/settings.py:808 msgid "Chinese Traditional" msgstr "繁體中文" -#: paperless/urls.py:368 +#: paperless/urls.py:370 msgid "Paperless-ngx administration" msgstr "Paperless-ngx 系統管理" diff --git a/src/paperless/adapter.py b/src/paperless/adapter.py index f8517a3aa..bd6a86f77 100644 --- a/src/paperless/adapter.py +++ b/src/paperless/adapter.py @@ -3,12 +3,15 @@ from urllib.parse import quote from allauth.account.adapter import DefaultAccountAdapter from allauth.core import context +from allauth.headless.tokens.strategies.sessions import SessionTokenStrategy from allauth.socialaccount.adapter import DefaultSocialAccountAdapter from django.conf import settings from django.contrib.auth.models import Group from django.contrib.auth.models import User from django.forms import ValidationError +from django.http import HttpRequest from django.urls import reverse +from rest_framework.authtoken.models import Token from documents.models import Document from paperless.signals import handle_social_account_updated @@ -137,3 +140,33 @@ class CustomSocialAccountAdapter(DefaultSocialAccountAdapter): user.save() handle_social_account_updated(None, request, sociallogin) return user + + def on_authentication_error( + self, + request, + provider, + error=None, + exception=None, + extra_context=None, + ): + """ + Just log errors and pass them along. + """ + logger.warning( + f"Social authentication error for provider `{provider!s}`: {error!s} ({exception!s})", + ) + return super().on_authentication_error( + request, + provider, + error, + exception, + extra_context, + ) + + +class DrfTokenStrategy(SessionTokenStrategy): + def create_access_token(self, request: HttpRequest) -> str | None: + if not request.user.is_authenticated: + return None + token, _ = Token.objects.get_or_create(user=request.user) + return token.key diff --git a/src/paperless/apps.py b/src/paperless/apps.py index 819d8d5ff..e95c77ae4 100644 --- a/src/paperless/apps.py +++ b/src/paperless/apps.py @@ -10,7 +10,7 @@ class PaperlessConfig(AppConfig): verbose_name = _("Paperless") - def ready(self): + def ready(self) -> None: from django.contrib.auth.signals import user_login_failed user_login_failed.connect(handle_failed_login) diff --git a/src/paperless/auth.py b/src/paperless/auth.py index c68d63cf0..2503fb8cb 100644 --- a/src/paperless/auth.py +++ b/src/paperless/auth.py @@ -14,7 +14,7 @@ logger = logging.getLogger("paperless.auth") class AutoLoginMiddleware(MiddlewareMixin): - def process_request(self, request: HttpRequest): + def process_request(self, request: HttpRequest) -> None: # Dont use auto-login with token request if request.path.startswith("/api/token/") and request.method == "POST": return None diff --git a/src/paperless/config.py b/src/paperless/config.py index fb3139d79..65d790ff4 100644 --- a/src/paperless/config.py +++ b/src/paperless/config.py @@ -116,6 +116,7 @@ class BarcodeConfig(BaseConfig): barcode_max_pages: int = dataclasses.field(init=False) barcode_enable_tag: bool = dataclasses.field(init=False) barcode_tag_mapping: dict[str, str] = dataclasses.field(init=False) + barcode_tag_split: bool = dataclasses.field(init=False) def __post_init__(self) -> None: app_config = self._get_config_instance() @@ -153,6 +154,9 @@ class BarcodeConfig(BaseConfig): self.barcode_tag_mapping = ( app_config.barcode_tag_mapping or settings.CONSUMER_TAG_BARCODE_MAPPING ) + self.barcode_tag_split = ( + app_config.barcode_tag_split or settings.CONSUMER_TAG_BARCODE_SPLIT + ) @dataclasses.dataclass @@ -169,3 +173,37 @@ class GeneralConfig(BaseConfig): self.app_title = app_config.app_title or None self.app_logo = app_config.app_logo.url if app_config.app_logo else None + + +@dataclasses.dataclass +class AIConfig(BaseConfig): + """ + AI related settings that require global scope + """ + + ai_enabled: bool = dataclasses.field(init=False) + llm_embedding_backend: str = dataclasses.field(init=False) + llm_embedding_model: str = dataclasses.field(init=False) + llm_backend: str = dataclasses.field(init=False) + llm_model: str = dataclasses.field(init=False) + llm_api_key: str = dataclasses.field(init=False) + llm_endpoint: str = dataclasses.field(init=False) + + def __post_init__(self) -> None: + app_config = self._get_config_instance() + + self.ai_enabled = app_config.ai_enabled or settings.AI_ENABLED + self.llm_embedding_backend = ( + app_config.llm_embedding_backend or settings.LLM_EMBEDDING_BACKEND + ) + self.llm_embedding_model = ( + app_config.llm_embedding_model or settings.LLM_EMBEDDING_MODEL + ) + self.llm_backend = app_config.llm_backend or settings.LLM_BACKEND + self.llm_model = app_config.llm_model or settings.LLM_MODEL + self.llm_api_key = app_config.llm_api_key or settings.LLM_API_KEY + self.llm_endpoint = app_config.llm_endpoint or settings.LLM_ENDPOINT + + @property + def llm_index_enabled(self) -> bool: + return bool(self.ai_enabled and self.llm_embedding_backend) diff --git a/src/paperless/consumers.py b/src/paperless/consumers.py index 3d045f444..40f9a006f 100644 --- a/src/paperless/consumers.py +++ b/src/paperless/consumers.py @@ -34,20 +34,20 @@ class StatusConsumer(WebsocketConsumer): ) raise AcceptConnection - def disconnect(self, close_code): + def disconnect(self, close_code) -> None: async_to_sync(self.channel_layer.group_discard)( "status_updates", self.channel_name, ) - def status_update(self, event): + def status_update(self, event) -> None: if not self._authenticated(): self.close() else: if self._can_view(event["data"]): self.send(json.dumps(event)) - def documents_deleted(self, event): + def documents_deleted(self, event) -> None: if not self._authenticated(): self.close() else: diff --git a/src/paperless/db.py b/src/paperless/db.py deleted file mode 100644 index 286ccb094..000000000 --- a/src/paperless/db.py +++ /dev/null @@ -1,17 +0,0 @@ -import gnupg -from django.conf import settings - - -class GnuPG: - """ - A handy singleton to use when handling encrypted files. - """ - - gpg = gnupg.GPG(gnupghome=settings.GNUPG_HOME) - - @classmethod - def decrypted(cls, file_handle, passphrase=None): - if not passphrase: - passphrase = settings.PASSPHRASE - - return cls.gpg.decrypt_file(file_handle, passphrase=passphrase).data diff --git a/src/paperless/db_cache.py b/src/paperless/db_cache.py index b8268b5c0..9a3c88415 100644 --- a/src/paperless/db_cache.py +++ b/src/paperless/db_cache.py @@ -13,5 +13,5 @@ def custom_get_table_cache_key(db_alias, table): return PREFIX + get_table_cache_key(db_alias, table) -def invalidate_db_cache(): +def invalidate_db_cache() -> None: return cachalot_invalidate(cache_alias="read-cache") diff --git a/src/paperless/migrations/0005_applicationconfiguration_ai_enabled_and_more.py b/src/paperless/migrations/0005_applicationconfiguration_ai_enabled_and_more.py new file mode 100644 index 000000000..f8a71ea6b --- /dev/null +++ b/src/paperless/migrations/0005_applicationconfiguration_ai_enabled_and_more.py @@ -0,0 +1,84 @@ +# Generated by Django 5.2.6 on 2025-09-30 17:43 + +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + dependencies = [ + ("paperless", "0004_applicationconfiguration_barcode_asn_prefix_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="applicationconfiguration", + name="ai_enabled", + field=models.BooleanField( + default=False, + null=True, + verbose_name="Enables AI features", + ), + ), + migrations.AddField( + model_name="applicationconfiguration", + name="llm_api_key", + field=models.CharField( + blank=True, + max_length=1024, + null=True, + verbose_name="Sets the LLM API key", + ), + ), + migrations.AddField( + model_name="applicationconfiguration", + name="llm_backend", + field=models.CharField( + blank=True, + choices=[("openai", "OpenAI"), ("ollama", "Ollama")], + max_length=128, + null=True, + verbose_name="Sets the LLM backend", + ), + ), + migrations.AddField( + model_name="applicationconfiguration", + name="llm_embedding_backend", + field=models.CharField( + blank=True, + choices=[("openai", "OpenAI"), ("huggingface", "Huggingface")], + max_length=128, + null=True, + verbose_name="Sets the LLM embedding backend", + ), + ), + migrations.AddField( + model_name="applicationconfiguration", + name="llm_embedding_model", + field=models.CharField( + blank=True, + max_length=128, + null=True, + verbose_name="Sets the LLM embedding model", + ), + ), + migrations.AddField( + model_name="applicationconfiguration", + name="llm_endpoint", + field=models.CharField( + blank=True, + max_length=256, + null=True, + verbose_name="Sets the LLM endpoint, optional", + ), + ), + migrations.AddField( + model_name="applicationconfiguration", + name="llm_model", + field=models.CharField( + blank=True, + max_length=128, + null=True, + verbose_name="Sets the LLM model", + ), + ), + ] diff --git a/src/paperless/migrations/0006_applicationconfiguration_barcode_tag_split.py b/src/paperless/migrations/0006_applicationconfiguration_barcode_tag_split.py new file mode 100644 index 000000000..03b2d14cc --- /dev/null +++ b/src/paperless/migrations/0006_applicationconfiguration_barcode_tag_split.py @@ -0,0 +1,21 @@ +# Generated by Django 5.1.7 on 2025-12-15 21:30 + +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + dependencies = [ + ("paperless", "0005_applicationconfiguration_ai_enabled_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="applicationconfiguration", + name="barcode_tag_split", + field=models.BooleanField( + null=True, + verbose_name="Enables splitting on tag barcodes", + ), + ), + ] diff --git a/src/paperless/models.py b/src/paperless/models.py index 1c44f1414..725bff683 100644 --- a/src/paperless/models.py +++ b/src/paperless/models.py @@ -74,6 +74,20 @@ class ColorConvertChoices(models.TextChoices): CMYK = ("CMYK", _("CMYK")) +class LLMEmbeddingBackend(models.TextChoices): + OPENAI = ("openai", _("OpenAI")) + HUGGINGFACE = ("huggingface", _("Huggingface")) + + +class LLMBackend(models.TextChoices): + """ + Matches to --llm-backend + """ + + OPENAI = ("openai", _("OpenAI")) + OLLAMA = ("ollama", _("Ollama")) + + class ApplicationConfiguration(AbstractSingletonModel): """ Settings which are common across more than 1 parser @@ -265,6 +279,66 @@ class ApplicationConfiguration(AbstractSingletonModel): null=True, ) + # PAPERLESS_CONSUMER_TAG_BARCODE_SPLIT + barcode_tag_split = models.BooleanField( + verbose_name=_("Enables splitting on tag barcodes"), + null=True, + ) + + """ + AI related settings + """ + + ai_enabled = models.BooleanField( + verbose_name=_("Enables AI features"), + null=True, + default=False, + ) + + llm_embedding_backend = models.CharField( + verbose_name=_("Sets the LLM embedding backend"), + blank=True, + null=True, + max_length=128, + choices=LLMEmbeddingBackend.choices, + ) + + llm_embedding_model = models.CharField( + verbose_name=_("Sets the LLM embedding model"), + blank=True, + null=True, + max_length=128, + ) + + llm_backend = models.CharField( + verbose_name=_("Sets the LLM backend"), + blank=True, + null=True, + max_length=128, + choices=LLMBackend.choices, + ) + + llm_model = models.CharField( + verbose_name=_("Sets the LLM model"), + blank=True, + null=True, + max_length=128, + ) + + llm_api_key = models.CharField( + verbose_name=_("Sets the LLM API key"), + blank=True, + null=True, + max_length=1024, + ) + + llm_endpoint = models.CharField( + verbose_name=_("Sets the LLM endpoint, optional"), + blank=True, + null=True, + max_length=256, + ) + class Meta: verbose_name = _("paperless application settings") diff --git a/src/paperless/serialisers.py b/src/paperless/serialisers.py index 754a3c594..97a2bee7e 100644 --- a/src/paperless/serialisers.py +++ b/src/paperless/serialisers.py @@ -9,6 +9,8 @@ from allauth.socialaccount.models import SocialApp from django.contrib.auth.models import Group from django.contrib.auth.models import Permission from django.contrib.auth.models import User +from django.contrib.auth.password_validation import validate_password +from django.core.files.uploadedfile import UploadedFile from rest_framework import serializers from rest_framework.authtoken.serializers import AuthTokenSerializer @@ -19,6 +21,23 @@ from paperless_mail.serialisers import ObfuscatedPasswordField logger = logging.getLogger("paperless.settings") +class PasswordValidationMixin: + def _has_real_password(self, value: str | None) -> bool: + return bool(value) and value.replace("*", "") != "" + + def validate_password(self, value: str) -> str: + if not self._has_real_password(value): + return value + + request = self.context.get("request") if hasattr(self, "context") else None + user = self.instance or ( + request.user if request and hasattr(request, "user") else None + ) + validate_password(value, user) # raise ValidationError if invalid + + return value + + class PaperlessAuthTokenSerializer(AuthTokenSerializer): code = serializers.CharField( label="MFA Code", @@ -49,7 +68,7 @@ class PaperlessAuthTokenSerializer(AuthTokenSerializer): return attrs -class UserSerializer(serializers.ModelSerializer): +class UserSerializer(PasswordValidationMixin, serializers.ModelSerializer): password = ObfuscatedPasswordField(required=False) user_permissions = serializers.SlugRelatedField( many=True, @@ -87,11 +106,11 @@ class UserSerializer(serializers.ModelSerializer): return obj.get_group_permissions() def update(self, instance, validated_data): - if "password" in validated_data: - if len(validated_data.get("password").replace("*", "")) > 0: - instance.set_password(validated_data.get("password")) - instance.save() - validated_data.pop("password") + password = validated_data.pop("password", None) + if self._has_real_password(password): + instance.set_password(password) + instance.save() + super().update(instance, validated_data) return instance @@ -102,12 +121,7 @@ class UserSerializer(serializers.ModelSerializer): user_permissions = None if "user_permissions" in validated_data: user_permissions = validated_data.pop("user_permissions") - password = None - if ( - "password" in validated_data - and len(validated_data.get("password").replace("*", "")) > 0 - ): - password = validated_data.pop("password") + password = validated_data.pop("password", None) user = User.objects.create(**validated_data) # set groups if groups: @@ -116,7 +130,7 @@ class UserSerializer(serializers.ModelSerializer): if user_permissions: user.user_permissions.set(user_permissions) # set password - if password: + if self._has_real_password(password): user.set_password(password) user.save() return user @@ -156,7 +170,7 @@ class SocialAccountSerializer(serializers.ModelSerializer): return "Unknown App" -class ProfileSerializer(serializers.ModelSerializer): +class ProfileSerializer(PasswordValidationMixin, serializers.ModelSerializer): email = serializers.EmailField(allow_blank=True, required=False) password = ObfuscatedPasswordField(required=False, allow_null=False) auth_token = serializers.SlugRelatedField(read_only=True, slug_field="key") @@ -192,6 +206,10 @@ class ProfileSerializer(serializers.ModelSerializer): class ApplicationConfigurationSerializer(serializers.ModelSerializer): user_args = serializers.JSONField(binary=True, allow_null=True) barcode_tag_mapping = serializers.JSONField(binary=True, allow_null=True) + llm_api_key = ObfuscatedPasswordField( + required=False, + allow_null=True, + ) def run_validation(self, data): # Empty strings treated as None to avoid unexpected behavior @@ -201,6 +219,11 @@ class ApplicationConfigurationSerializer(serializers.ModelSerializer): data["barcode_tag_mapping"] = None if "language" in data and data["language"] == "": data["language"] = None + if "llm_api_key" in data and data["llm_api_key"] is not None: + if data["llm_api_key"] == "": + data["llm_api_key"] = None + elif len(data["llm_api_key"].replace("*", "")) == 0: + del data["llm_api_key"] return super().run_validation(data) def update(self, instance, validated_data): @@ -208,7 +231,7 @@ class ApplicationConfigurationSerializer(serializers.ModelSerializer): instance.app_logo.delete() return super().update(instance, validated_data) - def validate_app_logo(self, file): + def validate_app_logo(self, file: UploadedFile): if file and magic.from_buffer(file.read(2048), mime=True) == "image/svg+xml": reject_dangerous_svg(file) return file diff --git a/src/paperless/settings.py b/src/paperless/settings.py index bd2e71dd5..490727e8f 100644 --- a/src/paperless/settings.py +++ b/src/paperless/settings.py @@ -8,11 +8,11 @@ import os import tempfile from os import PathLike from pathlib import Path -from platform import machine from typing import Final from urllib.parse import urlparse from celery.schedules import crontab +from compression_middleware.middleware import CompressionMiddleware from dateparser.languages.loader import LocaleDataLoader from django.utils.translation import gettext_lazy as _ from dotenv import load_dotenv @@ -230,6 +230,28 @@ def _parse_beat_schedule() -> dict: "expires": 59.0 * 60.0, }, }, + { + "name": "Rebuild LLM index", + "env_key": "PAPERLESS_LLM_INDEX_TASK_CRON", + # Default daily at 02:10 + "env_default": "10 2 * * *", + "task": "documents.tasks.llmindex_index", + "options": { + # 1 hour before default schedule sends again + "expires": 23.0 * 60.0 * 60.0, + }, + }, + { + "name": "Cleanup expired share link bundles", + "env_key": "PAPERLESS_SHARE_LINK_BUNDLE_CLEANUP_CRON", + # Default daily at 02:00 + "env_default": "0 2 * * *", + "task": "documents.tasks.cleanup_expired_share_link_bundles", + "options": { + # 1 hour before default schedule sends again + "expires": 23.0 * 60.0 * 60.0, + }, + }, ] for task in tasks: # Either get the environment setting or use the default @@ -268,6 +290,7 @@ MEDIA_ROOT = __get_path("PAPERLESS_MEDIA_ROOT", BASE_DIR.parent / "media") ORIGINALS_DIR = MEDIA_ROOT / "documents" / "originals" ARCHIVE_DIR = MEDIA_ROOT / "documents" / "archive" THUMBNAIL_DIR = MEDIA_ROOT / "documents" / "thumbnails" +SHARE_LINK_BUNDLE_DIR = MEDIA_ROOT / "documents" / "share_link_bundles" DATA_DIR = __get_path("PAPERLESS_DATA_DIR", BASE_DIR.parent / "data") @@ -288,6 +311,7 @@ MODEL_FILE = __get_path( "PAPERLESS_MODEL_FILE", DATA_DIR / "classification_model.pickle", ) +LLM_INDEX_DIR = DATA_DIR / "llm_index" LOGGING_DIR = __get_path("PAPERLESS_LOGGING_DIR", DATA_DIR / "log") @@ -322,6 +346,7 @@ INSTALLED_APPS = [ "paperless_tesseract.apps.PaperlessTesseractConfig", "paperless_text.apps.PaperlessTextConfig", "paperless_mail.apps.PaperlessMailConfig", + "paperless_remote.apps.PaperlessRemoteParserConfig", "django.contrib.admin", "rest_framework", "rest_framework.authtoken", @@ -332,6 +357,7 @@ INSTALLED_APPS = [ "allauth.account", "allauth.socialaccount", "allauth.mfa", + "allauth.headless", "drf_spectacular", "drf_spectacular_sidecar", "treenode", @@ -380,6 +406,19 @@ MIDDLEWARE = [ if __get_boolean("PAPERLESS_ENABLE_COMPRESSION", "yes"): # pragma: no cover MIDDLEWARE.insert(0, "compression_middleware.middleware.CompressionMiddleware") +# Workaround to not compress streaming responses (e.g. chat). +# See https://github.com/friedelwolff/django-compression-middleware/pull/7 +original_process_response = CompressionMiddleware.process_response + + +def patched_process_response(self, request, response): + if getattr(request, "compress_exempt", False): + return response + return original_process_response(self, request, response) + + +CompressionMiddleware.process_response = patched_process_response + ROOT_URLCONF = "paperless.urls" @@ -423,14 +462,9 @@ ASGI_APPLICATION = "paperless.asgi.application" STATIC_URL = os.getenv("PAPERLESS_STATIC_URL", BASE_URL + "static/") WHITENOISE_STATIC_PREFIX = "/static/" -if machine().lower() == "aarch64": # pragma: no cover - _static_backend = "django.contrib.staticfiles.storage.StaticFilesStorage" -else: - _static_backend = "whitenoise.storage.CompressedStaticFilesStorage" - STORAGES = { "staticfiles": { - "BACKEND": _static_backend, + "BACKEND": "whitenoise.storage.CompressedStaticFilesStorage", }, "default": {"BACKEND": "django.core.files.storage.FileSystemStorage"}, } @@ -518,6 +552,12 @@ SOCIALACCOUNT_PROVIDERS = json.loads( ) SOCIAL_ACCOUNT_DEFAULT_GROUPS = __get_list("PAPERLESS_SOCIAL_ACCOUNT_DEFAULT_GROUPS") SOCIAL_ACCOUNT_SYNC_GROUPS = __get_boolean("PAPERLESS_SOCIAL_ACCOUNT_SYNC_GROUPS") +SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM: Final[str] = os.getenv( + "PAPERLESS_SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM", + "groups", +) + +HEADLESS_TOKEN_STRATEGY = "paperless.adapter.DrfTokenStrategy" MFA_TOTP_ISSUER = "Paperless-ngx" @@ -590,6 +630,10 @@ X_FRAME_OPTIONS = "SAMEORIGIN" # The next 3 settings can also be set using just PAPERLESS_URL CSRF_TRUSTED_ORIGINS = __get_list("PAPERLESS_CSRF_TRUSTED_ORIGINS") +if DEBUG: + # Allow access from the angular development server during debugging + CSRF_TRUSTED_ORIGINS.append("http://localhost:4200") + # We allow CORS from localhost:8000 CORS_ALLOWED_ORIGINS = __get_list( "PAPERLESS_CORS_ALLOWED_HOSTS", @@ -600,6 +644,8 @@ if DEBUG: # Allow access from the angular development server during debugging CORS_ALLOWED_ORIGINS.append("http://localhost:4200") +CORS_ALLOW_CREDENTIALS = True + CORS_EXPOSE_HEADERS = [ "Content-Disposition", ] @@ -786,6 +832,7 @@ LANGUAGES = [ ("fi-fi", _("Finnish")), ("fr-fr", _("French")), ("hu-hu", _("Hungarian")), + ("id-id", _("Indonesian")), ("it-it", _("Italian")), ("ja-jp", _("Japanese")), ("ko-kr", _("Korean")), @@ -872,6 +919,7 @@ LOGGING = { "loggers": { "paperless": {"handlers": ["file_paperless"], "level": "DEBUG"}, "paperless_mail": {"handlers": ["file_mail"], "level": "DEBUG"}, + "paperless_ai": {"handlers": ["file_paperless"], "level": "DEBUG"}, "ocrmypdf": {"handlers": ["file_paperless"], "level": "INFO"}, "celery": {"handlers": ["file_celery"], "level": "DEBUG"}, "kombu": {"handlers": ["file_celery"], "level": "DEBUG"}, @@ -922,7 +970,7 @@ CELERY_ACCEPT_CONTENT = ["application/json", "application/x-python-serialize"] CELERY_BEAT_SCHEDULE = _parse_beat_schedule() # https://docs.celeryq.dev/en/stable/userguide/configuration.html#beat-schedule-filename -CELERY_BEAT_SCHEDULE_FILENAME = DATA_DIR / "celerybeat-schedule.db" +CELERY_BEAT_SCHEDULE_FILENAME = str(DATA_DIR / "celerybeat-schedule.db") # Cachalot: Database read cache. @@ -1003,29 +1051,42 @@ THREADS_PER_WORKER = os.getenv( # Paperless Specific Settings # ############################################################################### -CONSUMER_POLLING = int(os.getenv("PAPERLESS_CONSUMER_POLLING", 0)) +IGNORABLE_FILES: Final[list[str]] = [ + ".DS_Store", + ".DS_STORE", + "._*", + ".stfolder/*", + ".stversions/*", + ".localized/*", + "desktop.ini", + "@eaDir/*", + "Thumbs.db", +] -CONSUMER_POLLING_DELAY = int(os.getenv("PAPERLESS_CONSUMER_POLLING_DELAY", 5)) +CONSUMER_POLLING_INTERVAL = float(os.getenv("PAPERLESS_CONSUMER_POLLING_INTERVAL", 0)) -CONSUMER_POLLING_RETRY_COUNT = int( - os.getenv("PAPERLESS_CONSUMER_POLLING_RETRY_COUNT", 5), -) - -CONSUMER_INOTIFY_DELAY: Final[float] = __get_float( - "PAPERLESS_CONSUMER_INOTIFY_DELAY", - 0.5, -) +CONSUMER_STABILITY_DELAY = float(os.getenv("PAPERLESS_CONSUMER_STABILITY_DELAY", 5)) CONSUMER_DELETE_DUPLICATES = __get_boolean("PAPERLESS_CONSUMER_DELETE_DUPLICATES") CONSUMER_RECURSIVE = __get_boolean("PAPERLESS_CONSUMER_RECURSIVE") -# Ignore glob patterns, relative to PAPERLESS_CONSUMPTION_DIR +# Ignore regex patterns, matched against filename only CONSUMER_IGNORE_PATTERNS = list( json.loads( os.getenv( "PAPERLESS_CONSUMER_IGNORE_PATTERNS", - '[".DS_Store", ".DS_STORE", "._*", ".stfolder/*", ".stversions/*", ".localized/*", "desktop.ini", "@eaDir/*", "Thumbs.db"]', + json.dumps([]), + ), + ), +) + +# Directories to always ignore. These are matched by directory name, not full path +CONSUMER_IGNORE_DIRS = list( + json.loads( + os.getenv( + "PAPERLESS_CONSUMER_IGNORE_DIRS", + json.dumps([]), ), ), ) @@ -1088,6 +1149,10 @@ CONSUMER_TAG_BARCODE_MAPPING = dict( ), ) +CONSUMER_TAG_BARCODE_SPLIT: Final[bool] = __get_boolean( + "PAPERLESS_CONSUMER_TAG_BARCODE_SPLIT", +) + CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED: Final[bool] = __get_boolean( "PAPERLESS_CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED", ) @@ -1161,19 +1226,6 @@ EMAIL_PARSE_DEFAULT_LAYOUT = __get_int( 1, # MailRule.PdfLayout.TEXT_HTML but that can't be imported here ) -# Pre-2.x versions of Paperless stored your documents locally with GPG -# encryption, but that is no longer the default. This behaviour is still -# available, but it must be explicitly enabled by setting -# `PAPERLESS_PASSPHRASE` in your environment or config file. The default is to -# store these files unencrypted. -# -# Translation: -# * If you're a new user, you can safely ignore this setting. -# * If you're upgrading from 1.x, this must be set, OR you can run -# `./manage.py change_storage_type gpg unencrypted` to decrypt your files, -# after which you can unset this value. -PASSPHRASE = os.getenv("PAPERLESS_PASSPHRASE") - # Trigger a script after every successful document consumption? PRE_CONSUME_SCRIPT = os.getenv("PAPERLESS_PRE_CONSUME_SCRIPT") POST_CONSUME_SCRIPT = os.getenv("PAPERLESS_POST_CONSUME_SCRIPT") @@ -1310,7 +1362,7 @@ def _get_nltk_language_setting(ocr_lang: str) -> str | None: The common intersection between all languages in those 3 is handled here """ - ocr_lang = ocr_lang.split("+")[0] + ocr_lang = ocr_lang.split("+", maxsplit=1)[0] iso_code_to_nltk = { "dan": "danish", "nld": "dutch", @@ -1389,3 +1441,23 @@ WEBHOOKS_ALLOW_INTERNAL_REQUESTS = __get_boolean( "PAPERLESS_WEBHOOKS_ALLOW_INTERNAL_REQUESTS", "true", ) + +############################################################################### +# Remote Parser # +############################################################################### +REMOTE_OCR_ENGINE = os.getenv("PAPERLESS_REMOTE_OCR_ENGINE") +REMOTE_OCR_API_KEY = os.getenv("PAPERLESS_REMOTE_OCR_API_KEY") +REMOTE_OCR_ENDPOINT = os.getenv("PAPERLESS_REMOTE_OCR_ENDPOINT") + +################################################################################ +# AI Settings # +################################################################################ +AI_ENABLED = __get_boolean("PAPERLESS_AI_ENABLED", "NO") +LLM_EMBEDDING_BACKEND = os.getenv( + "PAPERLESS_AI_LLM_EMBEDDING_BACKEND", +) # "huggingface" or "openai" +LLM_EMBEDDING_MODEL = os.getenv("PAPERLESS_AI_LLM_EMBEDDING_MODEL") +LLM_BACKEND = os.getenv("PAPERLESS_AI_LLM_BACKEND") # "ollama" or "openai" +LLM_MODEL = os.getenv("PAPERLESS_AI_LLM_MODEL") +LLM_API_KEY = os.getenv("PAPERLESS_AI_LLM_API_KEY") +LLM_ENDPOINT = os.getenv("PAPERLESS_AI_LLM_ENDPOINT") diff --git a/src/paperless/signals.py b/src/paperless/signals.py index a173ccc2e..1ed88c051 100644 --- a/src/paperless/signals.py +++ b/src/paperless/signals.py @@ -38,10 +38,23 @@ def handle_social_account_updated(sender, request, sociallogin, **kwargs): """ from django.contrib.auth.models import Group - social_account_groups = sociallogin.account.extra_data.get( - "groups", + extra_data = sociallogin.account.extra_data or {} + social_account_groups = extra_data.get( + settings.SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM, [], - ) # None if not found + ) # pre-allauth 65.11.0 structure + + if not social_account_groups: + # allauth 65.11.0+ nests claims under `userinfo`/`id_token` + social_account_groups = ( + extra_data.get("userinfo", {}).get( + settings.SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM, + ) + or extra_data.get("id_token", {}).get( + settings.SOCIAL_ACCOUNT_SYNC_GROUPS_CLAIM, + ) + or [] + ) if settings.SOCIAL_ACCOUNT_SYNC_GROUPS and social_account_groups is not None: groups = Group.objects.filter(name__in=social_account_groups) logger.debug( diff --git a/src/paperless/tests/test_adapter.py b/src/paperless/tests/test_adapter.py index b87c47096..767749dd2 100644 --- a/src/paperless/tests/test_adapter.py +++ b/src/paperless/tests/test_adapter.py @@ -4,6 +4,7 @@ from allauth.account.adapter import get_adapter from allauth.core import context from allauth.socialaccount.adapter import get_adapter as get_social_adapter from django.conf import settings +from django.contrib.auth.models import AnonymousUser from django.contrib.auth.models import Group from django.contrib.auth.models import User from django.forms import ValidationError @@ -11,10 +12,13 @@ from django.http import HttpRequest from django.test import TestCase from django.test import override_settings from django.urls import reverse +from rest_framework.authtoken.models import Token + +from paperless.adapter import DrfTokenStrategy class TestCustomAccountAdapter(TestCase): - def test_is_open_for_signup(self): + def test_is_open_for_signup(self) -> None: adapter = get_adapter() # With no accounts, signups should be allowed @@ -30,7 +34,7 @@ class TestCustomAccountAdapter(TestCase): settings.ACCOUNT_ALLOW_SIGNUPS = False self.assertFalse(adapter.is_open_for_signup(None)) - def test_is_safe_url(self): + def test_is_safe_url(self) -> None: request = HttpRequest() request.get_host = mock.Mock(return_value="example.com") with context.request_context(request): @@ -54,8 +58,8 @@ class TestCustomAccountAdapter(TestCase): # False because request host is not in allowed hosts self.assertFalse(adapter.is_safe_url(url)) - @mock.patch("allauth.core.ratelimit._consume_rate", return_value=True) - def test_pre_authenticate(self, mock_consume_rate): + @mock.patch("allauth.core.internal.ratelimit.consume", return_value=True) + def test_pre_authenticate(self, mock_consume) -> None: adapter = get_adapter() request = HttpRequest() request.get_host = mock.Mock(return_value="example.com") @@ -67,7 +71,7 @@ class TestCustomAccountAdapter(TestCase): with self.assertRaises(ValidationError): adapter.pre_authenticate(request) - def test_get_reset_password_from_key_url(self): + def test_get_reset_password_from_key_url(self) -> None: request = HttpRequest() request.get_host = mock.Mock(return_value="foo.org") with context.request_context(request): @@ -89,7 +93,7 @@ class TestCustomAccountAdapter(TestCase): ) @override_settings(ACCOUNT_DEFAULT_GROUPS=["group1", "group2"]) - def test_save_user_adds_groups(self): + def test_save_user_adds_groups(self) -> None: Group.objects.create(name="group1") user = User.objects.create_user("testuser") adapter = get_adapter() @@ -106,7 +110,7 @@ class TestCustomAccountAdapter(TestCase): self.assertTrue(user.groups.filter(name="group1").exists()) self.assertFalse(user.groups.filter(name="group2").exists()) - def test_fresh_install_save_creates_superuser(self): + def test_fresh_install_save_creates_superuser(self) -> None: adapter = get_adapter() form = mock.Mock( cleaned_data={ @@ -129,7 +133,7 @@ class TestCustomAccountAdapter(TestCase): class TestCustomSocialAccountAdapter(TestCase): - def test_is_open_for_signup(self): + def test_is_open_for_signup(self) -> None: adapter = get_social_adapter() # Test when SOCIALACCOUNT_ALLOW_SIGNUPS is True @@ -140,7 +144,7 @@ class TestCustomSocialAccountAdapter(TestCase): settings.SOCIALACCOUNT_ALLOW_SIGNUPS = False self.assertFalse(adapter.is_open_for_signup(None, None)) - def test_get_connect_redirect_url(self): + def test_get_connect_redirect_url(self) -> None: adapter = get_social_adapter() request = None socialaccount = None @@ -153,7 +157,7 @@ class TestCustomSocialAccountAdapter(TestCase): ) @override_settings(SOCIAL_ACCOUNT_DEFAULT_GROUPS=["group1", "group2"]) - def test_save_user_adds_groups(self): + def test_save_user_adds_groups(self) -> None: Group.objects.create(name="group1") adapter = get_social_adapter() request = HttpRequest() @@ -167,3 +171,88 @@ class TestCustomSocialAccountAdapter(TestCase): self.assertEqual(user.groups.count(), 1) self.assertTrue(user.groups.filter(name="group1").exists()) self.assertFalse(user.groups.filter(name="group2").exists()) + + def test_error_logged_on_authentication_error(self) -> None: + adapter = get_social_adapter() + request = HttpRequest() + with self.assertLogs("paperless.auth", level="INFO") as log_cm: + adapter.on_authentication_error( + request, + provider="test-provider", + error="Error", + exception="Test authentication error", + ) + self.assertTrue( + any("Test authentication error" in message for message in log_cm.output), + ) + + +class TestDrfTokenStrategy(TestCase): + def test_create_access_token_creates_new_token(self) -> None: + """ + GIVEN: + - A user with no existing DRF token + WHEN: + - create_access_token is called + THEN: + - A new token is created and its key is returned + """ + + user = User.objects.create_user("testuser") + request = HttpRequest() + request.user = user + + strategy = DrfTokenStrategy() + token_key = strategy.create_access_token(request) + + # Verify a token was created + self.assertIsNotNone(token_key) + self.assertTrue(Token.objects.filter(user=user).exists()) + + # Verify the returned key matches the created token + token = Token.objects.get(user=user) + self.assertEqual(token_key, token.key) + + def test_create_access_token_returns_existing_token(self) -> None: + """ + GIVEN: + - A user with an existing DRF token + WHEN: + - create_access_token is called again + THEN: + - The same token key is returned (no new token created) + """ + + user = User.objects.create_user("testuser") + existing_token = Token.objects.create(user=user) + + request = HttpRequest() + request.user = user + + strategy = DrfTokenStrategy() + token_key = strategy.create_access_token(request) + + # Verify the existing token key is returned + self.assertEqual(token_key, existing_token.key) + + # Verify only one token exists (no duplicate created) + self.assertEqual(Token.objects.filter(user=user).count(), 1) + + def test_create_access_token_returns_none_for_unauthenticated_user(self) -> None: + """ + GIVEN: + - An unauthenticated request + WHEN: + - create_access_token is called + THEN: + - None is returned and no token is created + """ + + request = HttpRequest() + request.user = AnonymousUser() + + strategy = DrfTokenStrategy() + token_key = strategy.create_access_token(request) + + self.assertIsNone(token_key) + self.assertEqual(Token.objects.count(), 0) diff --git a/src/paperless/tests/test_checks.py b/src/paperless/tests/test_checks.py index 781956ff6..30fdde182 100644 --- a/src/paperless/tests/test_checks.py +++ b/src/paperless/tests/test_checks.py @@ -15,14 +15,14 @@ from paperless.checks import settings_values_check class TestChecks(DirectoriesMixin, TestCase): - def test_binaries(self): + def test_binaries(self) -> None: self.assertEqual(binaries_check(None), []) @override_settings(CONVERT_BINARY="uuuhh") - def test_binaries_fail(self): + def test_binaries_fail(self) -> None: self.assertEqual(len(binaries_check(None)), 1) - def test_paths_check(self): + def test_paths_check(self) -> None: self.assertEqual(paths_check(None), []) @override_settings( @@ -30,14 +30,14 @@ class TestChecks(DirectoriesMixin, TestCase): DATA_DIR=Path("whatever"), CONSUMPTION_DIR=Path("idontcare"), ) - def test_paths_check_dont_exist(self): + def test_paths_check_dont_exist(self) -> None: msgs = paths_check(None) self.assertEqual(len(msgs), 3, str(msgs)) for msg in msgs: self.assertTrue(msg.msg.endswith("is set but doesn't exist.")) - def test_paths_check_no_access(self): + def test_paths_check_no_access(self) -> None: Path(self.dirs.data_dir).chmod(0o000) Path(self.dirs.media_dir).chmod(0o000) Path(self.dirs.consumption_dir).chmod(0o000) @@ -53,16 +53,16 @@ class TestChecks(DirectoriesMixin, TestCase): self.assertTrue(msg.msg.endswith("is not writeable")) @override_settings(DEBUG=False) - def test_debug_disabled(self): + def test_debug_disabled(self) -> None: self.assertEqual(debug_mode_check(None), []) @override_settings(DEBUG=True) - def test_debug_enabled(self): + def test_debug_enabled(self) -> None: self.assertEqual(len(debug_mode_check(None)), 1) class TestSettingsChecksAgainstDefaults(DirectoriesMixin, TestCase): - def test_all_valid(self): + def test_all_valid(self) -> None: """ GIVEN: - Default settings @@ -77,7 +77,7 @@ class TestSettingsChecksAgainstDefaults(DirectoriesMixin, TestCase): class TestOcrSettingsChecks(DirectoriesMixin, TestCase): @override_settings(OCR_OUTPUT_TYPE="notapdf") - def test_invalid_output_type(self): + def test_invalid_output_type(self) -> None: """ GIVEN: - Default settings @@ -95,7 +95,7 @@ class TestOcrSettingsChecks(DirectoriesMixin, TestCase): self.assertIn('OCR output type "notapdf"', msg.msg) @override_settings(OCR_MODE="makeitso") - def test_invalid_ocr_type(self): + def test_invalid_ocr_type(self) -> None: """ GIVEN: - Default settings @@ -113,7 +113,7 @@ class TestOcrSettingsChecks(DirectoriesMixin, TestCase): self.assertIn('OCR output mode "makeitso"', msg.msg) @override_settings(OCR_MODE="skip_noarchive") - def test_deprecated_ocr_type(self): + def test_deprecated_ocr_type(self) -> None: """ GIVEN: - Default settings @@ -131,7 +131,7 @@ class TestOcrSettingsChecks(DirectoriesMixin, TestCase): self.assertIn("deprecated", msg.msg) @override_settings(OCR_SKIP_ARCHIVE_FILE="invalid") - def test_invalid_ocr_skip_archive_file(self): + def test_invalid_ocr_skip_archive_file(self) -> None: """ GIVEN: - Default settings @@ -149,7 +149,7 @@ class TestOcrSettingsChecks(DirectoriesMixin, TestCase): self.assertIn('OCR_SKIP_ARCHIVE_FILE setting "invalid"', msg.msg) @override_settings(OCR_CLEAN="cleanme") - def test_invalid_ocr_clean(self): + def test_invalid_ocr_clean(self) -> None: """ GIVEN: - Default settings @@ -169,7 +169,7 @@ class TestOcrSettingsChecks(DirectoriesMixin, TestCase): class TestTimezoneSettingsChecks(DirectoriesMixin, TestCase): @override_settings(TIME_ZONE="TheMoon\\MyCrater") - def test_invalid_timezone(self): + def test_invalid_timezone(self) -> None: """ GIVEN: - Default settings @@ -189,7 +189,7 @@ class TestTimezoneSettingsChecks(DirectoriesMixin, TestCase): class TestBarcodeSettingsChecks(DirectoriesMixin, TestCase): @override_settings(CONSUMER_BARCODE_SCANNER="Invalid") - def test_barcode_scanner_invalid(self): + def test_barcode_scanner_invalid(self) -> None: msgs = settings_values_check(None) self.assertEqual(len(msgs), 1) @@ -198,7 +198,7 @@ class TestBarcodeSettingsChecks(DirectoriesMixin, TestCase): self.assertIn('Invalid Barcode Scanner "Invalid"', msg.msg) @override_settings(CONSUMER_BARCODE_SCANNER="") - def test_barcode_scanner_empty(self): + def test_barcode_scanner_empty(self) -> None: msgs = settings_values_check(None) self.assertEqual(len(msgs), 1) @@ -207,14 +207,14 @@ class TestBarcodeSettingsChecks(DirectoriesMixin, TestCase): self.assertIn('Invalid Barcode Scanner ""', msg.msg) @override_settings(CONSUMER_BARCODE_SCANNER="PYZBAR") - def test_barcode_scanner_valid(self): + def test_barcode_scanner_valid(self) -> None: msgs = settings_values_check(None) self.assertEqual(len(msgs), 0) class TestEmailCertSettingsChecks(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @override_settings(EMAIL_CERTIFICATE_FILE=Path("/tmp/not_actually_here.pem")) - def test_not_valid_file(self): + def test_not_valid_file(self) -> None: """ GIVEN: - Default settings @@ -236,7 +236,7 @@ class TestEmailCertSettingsChecks(DirectoriesMixin, FileSystemAssertsMixin, Test class TestAuditLogChecks(TestCase): - def test_was_enabled_once(self): + def test_was_enabled_once(self) -> None: """ GIVEN: - Audit log is not enabled diff --git a/src/paperless/tests/test_db_cache.py b/src/paperless/tests/test_db_cache.py index ae9066ca1..f190bb7d6 100644 --- a/src/paperless/tests/test_db_cache.py +++ b/src/paperless/tests/test_db_cache.py @@ -15,7 +15,7 @@ from paperless.settings import _parse_cachalot_settings from paperless.settings import _parse_caches -def test_all_redis_caches_have_same_custom_prefix(monkeypatch): +def test_all_redis_caches_have_same_custom_prefix(monkeypatch) -> None: """ Check that when setting a custom Redis prefix, it is set for both the Django default cache and the read cache. @@ -29,7 +29,7 @@ def test_all_redis_caches_have_same_custom_prefix(monkeypatch): class TestDbCacheSettings: - def test_cachalot_default_settings(self): + def test_cachalot_default_settings(self) -> None: # Cachalot must be installed even if disabled, # so the cache can be invalidated anytime assert "cachalot" not in settings.INSTALLED_APPS @@ -62,7 +62,7 @@ class TestDbCacheSettings: "PAPERLESS_READ_CACHE_TTL": "7200", }, ) - def test_cachalot_custom_settings(self): + def test_cachalot_custom_settings(self) -> None: settings = _parse_cachalot_settings() assert settings["CACHALOT_ENABLED"] @@ -95,7 +95,7 @@ class TestDbCacheSettings: self, env_var_ttl: int, expected_cachalot_timeout: int, - ): + ) -> None: with patch.dict(os.environ, {"PAPERLESS_READ_CACHE_TTL": f"{env_var_ttl}"}): cachalot_timeout = _parse_cachalot_settings()["CACHALOT_TIMEOUT"] assert cachalot_timeout == expected_cachalot_timeout @@ -106,7 +106,7 @@ class TestDbCacheSettings: CACHALOT_TIMEOUT=1, ) @pytest.mark.django_db(transaction=True) -def test_cache_hit_when_enabled(): +def test_cache_hit_when_enabled() -> None: cachalot_settings.reload() assert cachalot_settings.CACHALOT_ENABLED @@ -141,7 +141,7 @@ def test_cache_hit_when_enabled(): @pytest.mark.django_db(transaction=True) -def test_cache_is_disabled_by_default(): +def test_cache_is_disabled_by_default() -> None: cachalot_settings.reload() # Invalidate the cache just in case invalidate_db_cache() diff --git a/src/paperless/tests/test_remote_user.py b/src/paperless/tests/test_remote_user.py index 78b3393d5..f98097d03 100644 --- a/src/paperless/tests/test_remote_user.py +++ b/src/paperless/tests/test_remote_user.py @@ -12,14 +12,14 @@ from paperless.settings import _parse_remote_user_settings class TestRemoteUser(DirectoriesMixin, APITestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.user = User.objects.create_superuser( username="temp_admin", ) - def test_remote_user(self): + def test_remote_user(self) -> None: """ GIVEN: - Configured user @@ -54,7 +54,7 @@ class TestRemoteUser(DirectoriesMixin, APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) - def test_remote_user_api(self): + def test_remote_user_api(self) -> None: """ GIVEN: - Configured user @@ -100,7 +100,7 @@ class TestRemoteUser(DirectoriesMixin, APITestCase): ], }, ) - def test_remote_user_api_disabled(self): + def test_remote_user_api_disabled(self) -> None: """ GIVEN: - Configured user @@ -123,7 +123,7 @@ class TestRemoteUser(DirectoriesMixin, APITestCase): [status.HTTP_401_UNAUTHORIZED, status.HTTP_403_FORBIDDEN], ) - def test_remote_user_header_setting(self): + def test_remote_user_header_setting(self) -> None: """ GIVEN: - Remote user header name is set diff --git a/src/paperless/tests/test_settings.py b/src/paperless/tests/test_settings.py index 10995291e..02db82ef2 100644 --- a/src/paperless/tests/test_settings.py +++ b/src/paperless/tests/test_settings.py @@ -21,7 +21,7 @@ class TestIgnoreDateParsing(TestCase): Tests the parsing of the PAPERLESS_IGNORE_DATES setting value """ - def _parse_checker(self, test_cases): + def _parse_checker(self, test_cases) -> None: """ Helper function to check ignore date parsing @@ -34,7 +34,7 @@ class TestIgnoreDateParsing(TestCase): expected_date_set, ) - def test_no_ignore_dates_set(self): + def test_no_ignore_dates_set(self) -> None: """ GIVEN: - No ignore dates are set @@ -43,7 +43,7 @@ class TestIgnoreDateParsing(TestCase): """ self.assertSetEqual(_parse_ignore_dates(""), set()) - def test_single_ignore_dates_set(self): + def test_single_ignore_dates_set(self) -> None: """ GIVEN: - Ignore dates are set per certain inputs @@ -70,7 +70,7 @@ class TestIgnoreDateParsing(TestCase): class TestThreadCalculation(TestCase): - def test_workers_threads(self): + def test_workers_threads(self) -> None: """ GIVEN: - Certain CPU counts @@ -96,7 +96,7 @@ class TestThreadCalculation(TestCase): class TestRedisSocketConversion(TestCase): - def test_redis_socket_parsing(self): + def test_redis_socket_parsing(self) -> None: """ GIVEN: - Various Redis connection URI formats @@ -160,8 +160,10 @@ class TestCeleryScheduleParsing(TestCase): SANITY_EXPIRE_TIME = ((7.0 * 24.0) - 1.0) * 60.0 * 60.0 EMPTY_TRASH_EXPIRE_TIME = 23.0 * 60.0 * 60.0 RUN_SCHEDULED_WORKFLOWS_EXPIRE_TIME = 59.0 * 60.0 + LLM_INDEX_EXPIRE_TIME = 23.0 * 60.0 * 60.0 + CLEANUP_EXPIRED_SHARE_BUNDLES_EXPIRE_TIME = 23.0 * 60.0 * 60.0 - def test_schedule_configuration_default(self): + def test_schedule_configuration_default(self) -> None: """ GIVEN: - No configured task schedules @@ -204,11 +206,25 @@ class TestCeleryScheduleParsing(TestCase): "schedule": crontab(minute="5", hour="*/1"), "options": {"expires": self.RUN_SCHEDULED_WORKFLOWS_EXPIRE_TIME}, }, + "Rebuild LLM index": { + "task": "documents.tasks.llmindex_index", + "schedule": crontab(minute=10, hour=2), + "options": { + "expires": self.LLM_INDEX_EXPIRE_TIME, + }, + }, + "Cleanup expired share link bundles": { + "task": "documents.tasks.cleanup_expired_share_link_bundles", + "schedule": crontab(minute=0, hour=2), + "options": { + "expires": self.CLEANUP_EXPIRED_SHARE_BUNDLES_EXPIRE_TIME, + }, + }, }, schedule, ) - def test_schedule_configuration_changed(self): + def test_schedule_configuration_changed(self) -> None: """ GIVEN: - Email task is configured non-default @@ -256,11 +272,25 @@ class TestCeleryScheduleParsing(TestCase): "schedule": crontab(minute="5", hour="*/1"), "options": {"expires": self.RUN_SCHEDULED_WORKFLOWS_EXPIRE_TIME}, }, + "Rebuild LLM index": { + "task": "documents.tasks.llmindex_index", + "schedule": crontab(minute=10, hour=2), + "options": { + "expires": self.LLM_INDEX_EXPIRE_TIME, + }, + }, + "Cleanup expired share link bundles": { + "task": "documents.tasks.cleanup_expired_share_link_bundles", + "schedule": crontab(minute=0, hour=2), + "options": { + "expires": self.CLEANUP_EXPIRED_SHARE_BUNDLES_EXPIRE_TIME, + }, + }, }, schedule, ) - def test_schedule_configuration_disabled(self): + def test_schedule_configuration_disabled(self) -> None: """ GIVEN: - Search index task is disabled @@ -300,11 +330,25 @@ class TestCeleryScheduleParsing(TestCase): "schedule": crontab(minute="5", hour="*/1"), "options": {"expires": self.RUN_SCHEDULED_WORKFLOWS_EXPIRE_TIME}, }, + "Rebuild LLM index": { + "task": "documents.tasks.llmindex_index", + "schedule": crontab(minute=10, hour=2), + "options": { + "expires": self.LLM_INDEX_EXPIRE_TIME, + }, + }, + "Cleanup expired share link bundles": { + "task": "documents.tasks.cleanup_expired_share_link_bundles", + "schedule": crontab(minute=0, hour=2), + "options": { + "expires": self.CLEANUP_EXPIRED_SHARE_BUNDLES_EXPIRE_TIME, + }, + }, }, schedule, ) - def test_schedule_configuration_disabled_all(self): + def test_schedule_configuration_disabled_all(self) -> None: """ GIVEN: - All tasks are disabled @@ -322,6 +366,8 @@ class TestCeleryScheduleParsing(TestCase): "PAPERLESS_INDEX_TASK_CRON": "disable", "PAPERLESS_EMPTY_TRASH_TASK_CRON": "disable", "PAPERLESS_WORKFLOW_SCHEDULED_TASK_CRON": "disable", + "PAPERLESS_LLM_INDEX_TASK_CRON": "disable", + "PAPERLESS_SHARE_LINK_BUNDLE_CLEANUP_CRON": "disable", }, ): schedule = _parse_beat_schedule() @@ -333,7 +379,7 @@ class TestCeleryScheduleParsing(TestCase): class TestDBSettings(TestCase): - def test_db_timeout_with_sqlite(self): + def test_db_timeout_with_sqlite(self) -> None: """ GIVEN: - PAPERLESS_DB_TIMEOUT is set @@ -357,7 +403,7 @@ class TestDBSettings(TestCase): databases["default"]["OPTIONS"], ) - def test_db_timeout_with_not_sqlite(self): + def test_db_timeout_with_not_sqlite(self) -> None: """ GIVEN: - PAPERLESS_DB_TIMEOUT is set but db is not sqlite @@ -391,7 +437,7 @@ class TestDBSettings(TestCase): class TestPaperlessURLSettings(TestCase): - def test_paperless_url(self): + def test_paperless_url(self) -> None: """ GIVEN: - PAPERLESS_URL is set @@ -415,7 +461,7 @@ class TestPaperlessURLSettings(TestCase): class TestPathSettings(TestCase): - def test_default_paths(self): + def test_default_paths(self) -> None: """ GIVEN: - PAPERLESS_FORCE_SCRIPT_NAME is not set @@ -435,7 +481,7 @@ class TestPathSettings(TestCase): ) # LOGOUT_REDIRECT_URL @mock.patch("os.environ", {"PAPERLESS_FORCE_SCRIPT_NAME": "/paperless"}) - def test_subpath(self): + def test_subpath(self) -> None: """ GIVEN: - PAPERLESS_FORCE_SCRIPT_NAME is set @@ -461,7 +507,7 @@ class TestPathSettings(TestCase): "PAPERLESS_LOGOUT_REDIRECT_URL": "/foobar/", }, ) - def test_subpath_with_explicit_logout_url(self): + def test_subpath_with_explicit_logout_url(self) -> None: """ GIVEN: - PAPERLESS_FORCE_SCRIPT_NAME is set and so is PAPERLESS_LOGOUT_REDIRECT_URL @@ -491,5 +537,5 @@ class TestPathSettings(TestCase): ("en+zh-Hans+zh-Hant", ["en", "zh-Hans", "zh-Hant", "zh"]), ], ) -def test_parser_date_parser_languages(languages, expected): +def test_parser_date_parser_languages(languages, expected) -> None: assert sorted(_parse_dateparser_languages(languages)) == sorted(expected) diff --git a/src/paperless/tests/test_signals.py b/src/paperless/tests/test_signals.py index a77580b7b..0cf087b1e 100644 --- a/src/paperless/tests/test_signals.py +++ b/src/paperless/tests/test_signals.py @@ -12,14 +12,14 @@ from paperless.signals import handle_social_account_updated class TestFailedLoginLogging(TestCase): - def setUp(self): + def setUp(self) -> None: super().setUp() self.creds = { "username": "john lennon", } - def test_unauthenticated(self): + def test_unauthenticated(self) -> None: """ GIVEN: - Request with no authentication provided @@ -39,7 +39,7 @@ class TestFailedLoginLogging(TestCase): ], ) - def test_none(self): + def test_none(self) -> None: """ GIVEN: - Request with no IP possible @@ -60,7 +60,7 @@ class TestFailedLoginLogging(TestCase): ], ) - def test_public(self): + def test_public(self) -> None: """ GIVEN: - Request with publicly routeable IP @@ -83,7 +83,7 @@ class TestFailedLoginLogging(TestCase): ], ) - def test_private(self): + def test_private(self) -> None: """ GIVEN: - Request with private range IP @@ -110,7 +110,7 @@ class TestFailedLoginLogging(TestCase): class TestSyncSocialLoginGroups(TestCase): @override_settings(SOCIAL_ACCOUNT_SYNC_GROUPS=True) - def test_sync_enabled(self): + def test_sync_enabled(self) -> None: """ GIVEN: - Enabled group syncing, a user, and a social login @@ -137,7 +137,7 @@ class TestSyncSocialLoginGroups(TestCase): self.assertEqual(list(user.groups.all()), [group]) @override_settings(SOCIAL_ACCOUNT_SYNC_GROUPS=False) - def test_sync_disabled(self): + def test_sync_disabled(self) -> None: """ GIVEN: - Disabled group syncing, a user, and a social login @@ -164,7 +164,7 @@ class TestSyncSocialLoginGroups(TestCase): self.assertEqual(list(user.groups.all()), []) @override_settings(SOCIAL_ACCOUNT_SYNC_GROUPS=True) - def test_no_groups(self): + def test_no_groups(self) -> None: """ GIVEN: - Enabled group syncing, a user, and a social login with no groups @@ -192,6 +192,68 @@ class TestSyncSocialLoginGroups(TestCase): ) self.assertEqual(list(user.groups.all()), []) + @override_settings(SOCIAL_ACCOUNT_SYNC_GROUPS=True) + def test_userinfo_groups(self) -> None: + """ + GIVEN: + - Enabled group syncing, and `groups` nested under `userinfo` + WHEN: + - The social login is updated via signal after login + THEN: + - The user's groups are updated using `userinfo.groups` + """ + group = Group.objects.create(name="group1") + user = User.objects.create_user(username="testuser") + sociallogin = Mock( + user=user, + account=Mock( + extra_data={ + "userinfo": { + "groups": ["group1"], + }, + }, + ), + ) + + handle_social_account_updated( + sender=None, + request=HttpRequest(), + sociallogin=sociallogin, + ) + + self.assertEqual(list(user.groups.all()), [group]) + + @override_settings(SOCIAL_ACCOUNT_SYNC_GROUPS=True) + def test_id_token_groups_fallback(self) -> None: + """ + GIVEN: + - Enabled group syncing, and `groups` only under `id_token` + WHEN: + - The social login is updated via signal after login + THEN: + - The user's groups are updated using `id_token.groups` + """ + group = Group.objects.create(name="group1") + user = User.objects.create_user(username="testuser") + sociallogin = Mock( + user=user, + account=Mock( + extra_data={ + "id_token": { + "groups": ["group1"], + }, + }, + ), + ) + + handle_social_account_updated( + sender=None, + request=HttpRequest(), + sociallogin=sociallogin, + ) + + self.assertEqual(list(user.groups.all()), [group]) + class TestUserGroupDeletionCleanup(TestCase): """ @@ -199,7 +261,7 @@ class TestUserGroupDeletionCleanup(TestCase): from ui_settings """ - def test_user_group_deletion_cleanup(self): + def test_user_group_deletion_cleanup(self) -> None: """ GIVEN: - Existing user @@ -240,7 +302,7 @@ class TestUserGroupDeletionCleanup(TestCase): self.assertEqual(permissions.get("default_view_groups"), []) self.assertEqual(permissions.get("default_change_groups"), []) - def test_user_group_deletion_error_handling(self): + def test_user_group_deletion_error_handling(self) -> None: """ GIVEN: - Existing user and group diff --git a/src/paperless/tests/test_websockets.py b/src/paperless/tests/test_websockets.py index e5358d611..eef7d00f3 100644 --- a/src/paperless/tests/test_websockets.py +++ b/src/paperless/tests/test_websockets.py @@ -19,7 +19,7 @@ TEST_CHANNEL_LAYERS = { @override_settings(CHANNEL_LAYERS=TEST_CHANNEL_LAYERS) class TestWebSockets(TestCase): - async def test_no_auth(self): + async def test_no_auth(self) -> None: communicator = WebsocketCommunicator(application, "/ws/status/") connected, _ = await communicator.connect() self.assertFalse(connected) @@ -27,7 +27,7 @@ class TestWebSockets(TestCase): @mock.patch("paperless.consumers.StatusConsumer.close") @mock.patch("paperless.consumers.StatusConsumer._authenticated") - async def test_close_on_no_auth(self, _authenticated, mock_close): + async def test_close_on_no_auth(self, _authenticated, mock_close) -> None: _authenticated.return_value = True communicator = WebsocketCommunicator(application, "/ws/status/") @@ -59,7 +59,7 @@ class TestWebSockets(TestCase): mock_close.assert_called_once() @mock.patch("paperless.consumers.StatusConsumer._authenticated") - async def test_auth(self, _authenticated): + async def test_auth(self, _authenticated) -> None: _authenticated.return_value = True communicator = WebsocketCommunicator(application, "/ws/status/") @@ -69,7 +69,7 @@ class TestWebSockets(TestCase): await communicator.disconnect() @mock.patch("paperless.consumers.StatusConsumer._authenticated") - async def test_receive_status_update(self, _authenticated): + async def test_receive_status_update(self, _authenticated) -> None: _authenticated.return_value = True communicator = WebsocketCommunicator(application, "/ws/status/") @@ -90,7 +90,7 @@ class TestWebSockets(TestCase): await communicator.disconnect() - async def test_status_update_check_perms(self): + async def test_status_update_check_perms(self) -> None: communicator = WebsocketCommunicator(application, "/ws/status/") communicator.scope["user"] = mock.Mock() @@ -137,7 +137,7 @@ class TestWebSockets(TestCase): await communicator.disconnect() @mock.patch("paperless.consumers.StatusConsumer._authenticated") - async def test_receive_documents_deleted(self, _authenticated): + async def test_receive_documents_deleted(self, _authenticated) -> None: _authenticated.return_value = True communicator = WebsocketCommunicator(application, "/ws/status/") @@ -159,7 +159,7 @@ class TestWebSockets(TestCase): await communicator.disconnect() @mock.patch("channels.layers.InMemoryChannelLayer.group_send") - def test_manager_send_progress(self, mock_group_send): + def test_manager_send_progress(self, mock_group_send) -> None: with ProgressManager(task_id="test") as manager: manager.send_progress( ProgressStatusOptions.STARTED, @@ -190,7 +190,7 @@ class TestWebSockets(TestCase): ) @mock.patch("channels.layers.InMemoryChannelLayer.group_send") - def test_manager_send_documents_deleted(self, mock_group_send): + def test_manager_send_documents_deleted(self, mock_group_send) -> None: with DocumentsStatusManager() as manager: manager.send_documents_deleted([1, 2, 3]) diff --git a/src/paperless/urls.py b/src/paperless/urls.py index c37331ce2..04b0c2200 100644 --- a/src/paperless/urls.py +++ b/src/paperless/urls.py @@ -18,6 +18,7 @@ from rest_framework.routers import DefaultRouter from documents.views import BulkDownloadView from documents.views import BulkEditObjectsView from documents.views import BulkEditView +from documents.views import ChatStreamingView from documents.views import CorrespondentViewSet from documents.views import CustomFieldViewSet from documents.views import DocumentTypeViewSet @@ -30,6 +31,7 @@ from documents.views import SavedViewViewSet from documents.views import SearchAutoCompleteView from documents.views import SelectionDataView from documents.views import SharedLinkView +from documents.views import ShareLinkBundleViewSet from documents.views import ShareLinkViewSet from documents.views import StatisticsView from documents.views import StoragePathViewSet @@ -57,6 +59,7 @@ from paperless.views import UserViewSet from paperless_mail.views import MailAccountViewSet from paperless_mail.views import MailRuleViewSet from paperless_mail.views import OauthCallbackView +from paperless_mail.views import ProcessedMailViewSet api_router = DefaultRouter() api_router.register(r"correspondents", CorrespondentViewSet) @@ -71,12 +74,14 @@ api_router.register(r"users", UserViewSet, basename="users") api_router.register(r"groups", GroupViewSet, basename="groups") api_router.register(r"mail_accounts", MailAccountViewSet) api_router.register(r"mail_rules", MailRuleViewSet) +api_router.register(r"share_link_bundles", ShareLinkBundleViewSet) api_router.register(r"share_links", ShareLinkViewSet) api_router.register(r"workflow_triggers", WorkflowTriggerViewSet) api_router.register(r"workflow_actions", WorkflowActionViewSet) api_router.register(r"workflows", WorkflowViewSet) api_router.register(r"custom_fields", CustomFieldViewSet) api_router.register(r"config", ApplicationConfigurationViewSet) +api_router.register(r"processed_mail", ProcessedMailViewSet) urlpatterns = [ @@ -137,6 +142,11 @@ urlpatterns = [ SelectionDataView.as_view(), name="selection_data", ), + re_path( + "^chat/", + ChatStreamingView.as_view(), + name="chat_streaming_view", + ), ], ), ), @@ -220,6 +230,7 @@ urlpatterns = [ ], ), ), + re_path("^auth/headless/", include("allauth.headless.urls")), re_path( "^$", # Redirect to the API swagger view RedirectView.as_view(url="schema/view/"), diff --git a/src/paperless/validators.py b/src/paperless/validators.py index dea1f5185..bb741df41 100644 --- a/src/paperless/validators.py +++ b/src/paperless/validators.py @@ -1,82 +1,188 @@ from django.core.exceptions import ValidationError +from django.core.files.uploadedfile import UploadedFile from lxml import etree ALLOWED_SVG_TAGS: set[str] = { - "svg", - "g", - "path", - "rect", - "circle", - "ellipse", - "line", - "polyline", - "polygon", - "text", - "tspan", - "defs", - "linearGradient", - "radialGradient", - "stop", - "clipPath", - "use", - "title", - "desc", + # Basic shapes + "svg", # Root SVG element + "g", # Group elements together + "path", # Draw complex shapes with commands + "rect", # Rectangle + "circle", # Circle + "ellipse", # Ellipse/oval + "line", # Straight line + "polyline", # Connected lines (open path) + "polygon", # Connected lines (closed path) + # Text + "text", # Text container + "tspan", # Text span within text + "textpath", # Text along a path + "style", # Embedded CSS + # Definitions and reusable content + "defs", # Container for reusable elements + "symbol", # Reusable graphic template + "use", # Reference/instantiate reusable elements + "marker", # Arrowheads and path markers + "pattern", # Repeating pattern fills + "mask", # Masking effects + # Gradients + "lineargradient", # Linear gradient fill + "radialgradient", # Radial gradient fill + "stop", # Gradient color stop + # Clipping + "clippath", # Clipping path definition + # Metadata + "title", # Accessible title + "desc", # Accessible description + "metadata", # Document metadata } ALLOWED_SVG_ATTRIBUTES: set[str] = { - "id", - "class", - "style", - "d", - "fill", - "fill-rule", - "stroke", - "stroke-width", - "stroke-linecap", - "stroke-linejoin", - "stroke-miterlimit", - "stroke-dasharray", - "stroke-dashoffset", - "stroke-opacity", - "transform", - "x", - "y", - "cx", - "cy", - "r", - "rx", - "ry", - "width", - "height", - "x1", - "y1", - "x2", - "y2", - "gradientTransform", - "gradientUnits", - "offset", - "stop-color", - "stop-opacity", - "clip-path", - "viewBox", - "preserveAspectRatio", - "href", - "xlink:href", - "font-family", - "font-size", - "font-weight", - "text-anchor", - "xmlns", - "xmlns:xlink", + # Core attributes + "id", # Unique identifier + "class", # CSS class names + "style", # Inline CSS styles (validate content separately!) + # Positioning and sizing + "x", # X coordinate + "y", # Y coordinate + "cx", # Center X coordinate (circle/ellipse) + "cy", # Center Y coordinate (circle/ellipse) + "r", # Radius (circle) + "rx", # X radius (ellipse, rounded corners) + "ry", # Y radius (ellipse, rounded corners) + "width", # Width + "height", # Height + "x1", # Start X (line, gradient) + "y1", # Start Y (line, gradient) + "x2", # End X (line, gradient) + "y2", # End Y (line, gradient) + "dx", # X offset (text) + "dy", # Y offset (text) + "points", # Point list for polyline/polygon + # Path data + "d", # Path commands and coordinates + # Fill properties + "fill", # Fill color or none + "fill-opacity", # Fill transparency + "fill-rule", # Fill algorithm (nonzero/evenodd) + "color", # Current color + # Stroke properties + "stroke", # Stroke color or none + "stroke-width", # Stroke thickness + "stroke-opacity", # Stroke transparency + "stroke-linecap", # Line ending style (butt/round/square) + "stroke-linejoin", # Corner style (miter/round/bevel) + "stroke-miterlimit", # Miter join limit + "stroke-dasharray", # Dash pattern + "stroke-dashoffset", # Dash pattern offset + "vector-effect", # Non-scaling stroke, etc. + "clip-rule", # Rule for clipping paths + # Transforms and positioning + "overflow", # Overflow behavior + "transform", # Transformations (translate/rotate/scale) + "viewbox", # Coordinate system and viewport + "preserveaspectratio", # Scaling behavior + # Opacity + "opacity", # Overall element opacity + # Gradient attributes + "gradienttransform", # Transform applied to gradient + "gradientunits", # Gradient coordinate system + "spreadmethod", # Gradient spread method + "fx", # Radial gradient focal point X + "fy", # Radial gradient focal point Y + "fr", # Radial gradient focal radius + "offset", # Position of gradient stop + "stop-color", # Color at gradient stop + "stop-opacity", # Opacity at gradient stop + # Clipping and masking + "clip-path", # Reference to clipping path + "mask", # Reference to mask + # Markers + "marker-start", # Marker at path start + "marker-mid", # Marker at path vertices + "marker-end", # Marker at path end + "markerunits", # Marker coordinate system + "markerwidth", # Marker viewport width + "markerheight", # Marker viewport height + "refx", # Marker reference point X + "refy", # Marker reference point Y + "orient", # Marker orientation + # Text attributes + "font-family", # Font name + "font-size", # Font size + "font-weight", # Font weight (normal/bold) + "font-style", # Font style (normal/italic) + "text-anchor", # Text alignment (start/middle/end) + "text-decoration", # Text decoration (underline/etc) + "letter-spacing", # Space between letters + "word-spacing", # Space between words + "text-rendering", # Text rendering hint + "shape-rendering", # Shape rendering hint + "image-rendering", # Image rendering hint + "startoffset", # TextPath start offset + "method", # TextPath method + "spacing", # TextPath spacing + # Links and references + "href", # Link or reference (validate for javascript:!) + "xlink:href", # Legacy link reference (validate for javascript:!) + "xlink:title", # Accessible title for links + # Pattern attributes + "patternunits", # Pattern coordinate system + "patterntransform", # Transform applied to pattern + "patterncontentunits", # Pattern content coordinate system + # Mask attributes + "maskunits", # Mask coordinate system + "maskcontentunits", # Mask content coordinate system + # SVG namespace declarations + "xmlns", # XML namespace (usually http://www.w3.org/2000/svg) + "xmlns:xlink", # XLink namespace + "version", # SVG version + "type", + # Accessibility + "aria-label", + "aria-hidden", + "role", + "focusable", } +# Dangerous patterns in style attributes that can execute code +DANGEROUS_STYLE_PATTERNS: set[str] = { + "javascript:", # javascript: URLs in url() functions + "data:text/html", # HTML data URIs can contain scripts + "expression(", # IE's CSS expressions (legacy but dangerous) + "import", # CSS @import can load external resources + "@import", # CSS @import directive + "-moz-binding:", # Firefox XBL bindings (can execute code) + "behaviour:", # IE behavior property + "behavior:", # IE behavior property (US spelling) + "vbscript:", # VBScript URLs + "data:application/", # Data URIs for arbitrary application payloads +} -def reject_dangerous_svg(file): +XLINK_NS: set[str] = { + "http://www.w3.org/1999/xlink", + "https://www.w3.org/1999/xlink", +} + +# Dangerous URI schemes +DANGEROUS_SCHEMES: set[str] = { + "javascript:", + "data:text/html", + "vbscript:", + "file:", + "data:application/", # Can contain scripts +} + +SAFE_PREFIXES: set[str] = {"#", "/", "./", "../", "data:image/"} + + +def reject_dangerous_svg(file: UploadedFile) -> None: """ Rejects SVG files that contain dangerous tags or attributes. Raises ValidationError if unsafe content is found. See GHSA-6p53-hqqw-8j62 """ + try: parser = etree.XMLParser(resolve_entities=False) file.seek(0) @@ -86,17 +192,65 @@ def reject_dangerous_svg(file): raise ValidationError("Invalid SVG file.") for element in root.iter(): - tag = etree.QName(element.tag).localname.lower() + tag: str = etree.QName(element.tag).localname.lower() if tag not in ALLOWED_SVG_TAGS: raise ValidationError(f"Disallowed SVG tag: <{tag}>") + if tag == "style": + # Combine all text (including CDATA) to scan for dangerous patterns + style_text: str = "".join(element.itertext()).lower() + for pattern in DANGEROUS_STYLE_PATTERNS: + if pattern in style_text: + raise ValidationError( + f"Disallowed pattern in